Execute Endpoint
POST /v1/:integration/:endpoint
Executes an endpoint on a connected integration. The platform validates your API key, loads your OAuth credentials, proxies the request to the external service, and returns the response.
Authentication
Section titled “Authentication”Required. Bearer token: Authorization: Bearer sk_xxx
Path parameters
Section titled “Path parameters”| Parameter | Type | Required | Description |
|---|---|---|---|
integration | string | Yes | Integration slug (e.g., github) |
endpoint | string | Yes | Endpoint action name (e.g., create_issue) |
Request body
Section titled “Request body”{ "params": { "repo": "acme/webapp", "title": "Bug report", "body": "Steps to reproduce...", "labels": ["bug", "priority"] }}Parameters are passed under the params key. The available parameters for each endpoint are documented via the endpoint docs route.
Response
Section titled “Response”Success (proxied response):
{ "status": 200, "data": { "id": 42, "number": 7, "title": "Bug report", "state": "open", "html_url": "https://github.com/acme/webapp/issues/7" }}The data field contains the upstream API’s response body exactly as returned. The status field is the HTTP status code from the upstream API.
Error (from Skillett):
{ "error": "integration_not_connected", "message": "The user needs to connect their github account first.", "action_url": "https://app.skillett.dev/dashboard/integrations"}Token refresh
Section titled “Token refresh”If the upstream API returns a 401 (expired token), Skillett automatically attempts to refresh the OAuth token and retries the request once. If refresh fails, you’ll receive a token_expired error with an action_url to reconnect.
Errors
Section titled “Errors”| Code | Error | Description |
|---|---|---|
| 400 | bad_request | Invalid parameters |
| 401 | unauthorized | Missing or invalid API key |
| 401 | token_expired | OAuth token expired and refresh failed |
| 403 | integration_not_connected | User hasn’t connected this integration |
| 403 | scope_not_allowed | API key doesn’t have access to this integration |
| 403 | plan_limit_reached | Connection limit exceeded |
| 404 | not_found | Integration or endpoint not found |
| 429 | daily_limit_reached | Daily API call limit exceeded |
Example
Section titled “Example”$ curl -X POST \ -H "Authorization: Bearer sk_a1b2c3d4..." \ -H "Content-Type: application/json" \ -d '{"params":{"repo":"acme/webapp","title":"Bug report"}}' \ https://api.skillett.dev/v1/github/create_issue