Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/ComposioHQ/composio/llms.txt

Use this file to discover all available pages before exploring further.

The Composio REST API is the underlying API that all SDKs use. You can call it directly for server-side integrations, administrative tasks, or when a language SDK is not available for your stack. Every SDK method maps to one or more REST endpoints, so anything you can do in the SDK you can do via HTTP.

Base URL

All API requests use the following base URL:
https://backend.composio.dev/api/v3.1
The previous v3 base path is still supported for backward compatibility. New integrations should use v3.1.

Authentication

All requests require a project API key in the x-api-key header. See Authentication for full details including how to get your key and alternate header formats.
curl https://backend.composio.dev/api/v3.1/tools \
  -H "x-api-key: $COMPOSIO_API_KEY"

API Resources

ResourcePath prefixDescription
Tools/toolsList, search, and execute tools from any connected toolkit.
Toolkits/toolkitsBrowse available toolkits (apps) and their metadata.
Connected Accounts/connected_accountsCreate, list, and manage user OAuth connections and API key credentials.
Auth Configs/auth_configsCreate and manage OAuth app configurations and auth settings.
Triggers/triggers_types, /trigger_instancesList trigger types and manage active trigger instances.
Files/filesUpload files for use in tool arguments and download tool output files.
MCP/mcpAccess Model Context Protocol resources.
Projects/projectsManage Composio projects (organization API key required).

Making requests

Every request requires the x-api-key header. Request bodies use application/json. Responses are always JSON.

Example: List tools for a toolkit

curl "https://backend.composio.dev/api/v3.1/tools?toolkit_slug=github&limit=10" \
  -H "x-api-key: $COMPOSIO_API_KEY"

Example: Execute a tool

curl -X POST "https://backend.composio.dev/api/v3.1/tools/execute/GITHUB_LIST_REPOS" \
  -H "x-api-key: $COMPOSIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "arguments": {
      "per_page": 10,
      "sort": "updated"
    },
    "user_id": "user_123",
    "version": "20250906_01"
  }'

Example: List connected accounts for a user

curl "https://backend.composio.dev/api/v3.1/connected_accounts?user_ids[]=user_123&statuses[]=ACTIVE" \
  -H "x-api-key: $COMPOSIO_API_KEY"

Errors

All error responses follow a consistent shape:
{
  "error": {
    "message": "No connected account found for this user and toolkit",
    "status": 400,
    "request_id": "req_abc123def456",
    "suggested_fix": "Connect the user to the toolkit first"
  }
}
FieldDescription
messageHuman-readable description of the error.
statusHTTP status code.
request_idUnique request identifier — include this when contacting support.
suggested_fixActionable guidance when available.
Common HTTP status codes:
CodeMeaning
200Success
400Bad request — missing or invalid parameters
401Unauthorized — missing or invalid API key
403Forbidden — API key lacks permission
404Not found — resource does not exist
429Too many requests — rate limit exceeded
500Server error — something went wrong on Composio’s side

Pagination

List endpoints return paginated results using cursor-based pagination. The response includes a next_cursor field when more results are available.
# First page
curl "https://backend.composio.dev/api/v3.1/connected_accounts?limit=20" \
  -H "x-api-key: $COMPOSIO_API_KEY"

# Next page — pass next_cursor from the previous response
curl "https://backend.composio.dev/api/v3.1/connected_accounts?limit=20&cursor=eyJpZCI6..." \
  -H "x-api-key: $COMPOSIO_API_KEY"
Typical pagination response shape:
{
  "items": [...],
  "next_cursor": "eyJpZCI6ImNhX3h4eCJ9",
  "total_count": 142
}
When using the Python or TypeScript SDK, use the built-in list() methods with cursor parameters rather than managing raw pagination. The SDKs expose the same next_cursor on list responses.

Build docs developers (and LLMs) love