Signing Up as an Agent
Agents can sign up for Composio directly through agents.composio.dev without a human creating an account first. The flow creates an agent identity, returns Composio credentials, and gives the agent a ready-to-run CLI install/login command.
The base URL for all endpoints on this page is:
https://agents.composio.devFlow
- Check for an existing identity. Before signing up, look for
~/.composio/anonymous_user_data.json. If it exists, read the savedagent_keyand callGET /api/whoamiwithAuthorization: Bearer <agent_key>. If it returns200withstatus: "READY", reuse the saved credentials. - Sign up. Call
POST /api/signup. By default, the endpoint waits until the account is ready and returns a201response containing theagent_keyplus Composio credentials (member_id,org_id,project_id,api_key, anduser_api_key). Save the full response to~/.composio/anonymous_user_data.jsonimmediately so future runs do not create a new identity. - Install and log in to the CLI. Call
GET /api/cliwith theagent_key. It returns paste-ready install and login commands. - Optionally claim the org. Call
POST /api/claimwith a human email only when you want to hand the organization over to a human admin.
Sign up
POST /api/signup creates an agent email inbox, starts the Composio signup flow, and long-polls for up to 120 seconds. Most calls complete in about 5–10 seconds.
mkdir -p ~/.composio
curl -sS -X POST 'https://agents.composio.dev/api/signup' \
-H 'content-type: application/json' \
-d '{}' \
-o ~/.composio/anonymous_user_data.json
cat ~/.composio/anonymous_user_data.jsonSuccessful response:
{
"status": "ready",
"request_id": "req_xxx",
"slug": "amber-cedar-otter",
"email": "amber-cedar-otter@agent.composio.ai",
"agent_key": "composio_agent_key_xxx",
"composio": {
"member_id": "uuid",
"org_id": "org_xxx",
"project_id": "proj_xxx",
"api_key": "ak_xxx",
"user_api_key": "uak_xxx"
}
}If the 120-second wait expires, the endpoint returns 202 with status: "pending". Poll GET /api/whoami until the status is READY.
{
"status": "pending",
"request_id": "req_xxx",
"slug": "amber-cedar-otter",
"email": "amber-cedar-otter@agent.composio.ai",
"agent_key": "composio_agent_key_xxx",
"poll": "/api/whoami"
}To skip waiting and poll yourself, pass ?wait=0:
curl -sS -X POST 'https://agents.composio.dev/api/signup?wait=0' \
-H 'content-type: application/json' \
-d '{}'Verify a saved identity
Use GET /api/whoami to verify a saved agent_key and fetch the current Composio credentials. The agent_key authenticates only against the agent signup surface; it is not your Composio API key.
AGENT_KEY="$(jq -r '.agent_key' ~/.composio/anonymous_user_data.json)"
curl -sS 'https://agents.composio.dev/api/whoami' \
-H "Authorization: Bearer ${AGENT_KEY}"Response:
{
"slug": "amber-cedar-otter",
"email": "amber-cedar-otter@agent.composio.ai",
"status": "READY",
"claimed_by": null,
"claimed_at": null,
"composio": {
"member_id": "uuid",
"org_id": "org_xxx",
"project_id": "proj_xxx",
"api_key": "ak_xxx",
"user_api_key": "uak_xxx"
}
}Install the CLI
GET /api/cli returns install and login commands with the agent's user_api_key and org_id already filled in.
AGENT_KEY="$(jq -r '.agent_key' ~/.composio/anonymous_user_data.json)"
curl -sS 'https://agents.composio.dev/api/cli' \
-H "Authorization: Bearer ${AGENT_KEY}"Example response:
Install Composio CLI using this command:
curl -fsSL https://composio.dev/install | bash
Then log in using this command:
composio login --user-api-key "uak_..." --org "ok_..."Run the returned commands to install and authenticate the CLI.
Claim the organization
Claiming is optional. Use it only when the agent wants to invite a human admin to take over the Composio organization. The endpoint issues a single-use admin invite that expires after 24 hours.
AGENT_KEY="$(jq -r '.agent_key' ~/.composio/anonymous_user_data.json)"
curl -sS -X POST 'https://agents.composio.dev/api/claim' \
-H "Authorization: Bearer ${AGENT_KEY}" \
-H 'content-type: application/json' \
-d '{"email":"human@example.com"}'Response:
{
"status": "invited",
"email": "human@example.com",
"org_id": "org_xxx",
"invite_code": "inv_xxx"
}Read the agent inbox
Each agent gets an email address at <slug>@agent.composio.ai. Use GET /api/mail to list messages for the agent inbox.
AGENT_KEY="$(jq -r '.agent_key' ~/.composio/anonymous_user_data.json)"
curl -sS 'https://agents.composio.dev/api/mail?limit=50' \
-H "Authorization: Bearer ${AGENT_KEY}"Response:
{
"count": 1,
"messages": [
{
"id": "msg_xxx",
"thread_id": "thr_xxx",
"from": "no-reply@composio.dev",
"to": "amber-cedar-otter@agent.composio.ai",
"subject": "Sign in to Composio",
"preview": "Click the link below to sign in...",
"received_at": "2026-04-13T22:00:00.000Z"
}
]
}Agent keys
Agent keys are prefixed with composio_agent_key_ and are only valid for these endpoints:
GET /api/whoamiGET /api/mailGET /api/cliPOST /api/claim
Use the real Composio API key from the composio.api_key field when calling Composio APIs and SDKs.