Ellipsis API
The Ellipsis REST API lives at https://api.ellipsis.dev. Create an API key in the dashboard and send it as a bearer token.
The Ellipsis REST API starts, searches, and streams agent sessions, runs code reviews, and manages your configs and platform resources from your own scripts and services. It is the same public API the Agent CLI uses. Every endpoint returns JSON.
Base URL and auth
The base URL is https://api.ellipsis.dev. Every endpoint lives under the /v1 prefix.
Create an API key under Platform → API keys in the Ellipsis dashboard. The secret starts with ellipsis_key_ and is shown only once, so copy it when you create it. API keys authenticate scripts and automations as your organization; the CLI instead uses a user token that agent login mints for you, which acts as you personally. Both are sent the same way.
Store the key in an environment variable rather than committing it. ELLIPSIS_API_TOKEN is the name the CLI reads too, so one variable serves both:
export ELLIPSIS_API_TOKEN="ellipsis_key_..."Send the key as a bearer token on every request. An invalid key is rejected with 401.
Errors
Every error returns one envelope:
{
"error": {
"code": "session_finished",
"message": "Session session_7Hq2mX4p has already finished (completed)."
}
}code is the stable contract: switch on it, never on the message text, which may be reworded at any time. The vocabulary is open, so treat an unknown code by its HTTP status. Codes are either specific (session_finished, session_closed, review_in_flight, default_config_broken, file_quota_exceeded, account_blocked) or the status's generic fallback (invalid_request, unauthorized, forbidden, not_found, conflict, rate_limited). Internal server errors add request_id: quote it when contacting support. Each endpoint's reference page lists the statuses it returns.
curl https://api.ellipsis.dev/v1/me \
-H "Authorization: Bearer $ELLIPSIS_API_TOKEN"{
"customer_id": "cust_8Rn4wY7kQm2v",
"customer_login": "splitshift-hq",
"user_id": null,
"gh_user": null,
"api_key_id": "tokens_api_9Qz3vT6wLm2r",
"sandbox_id": null
}GET /v1/me returns who the credential is: an API key acts as the organization, so user_id and gh_user are null; a user token fills them with the developer behind it.
Endpoint map
The reference documents every endpoint, generated from the same OpenAPI specification the SDKs are built from. The spec itself is published at /openapi.v1.json. Beyond the endpoints below, Webhooks subscribes your own endpoint to Ellipsis events, and the guides solve end-to-end problems over the API.
- GET/v1/sessionsList cloud agent sessions, newest first
- POST/v1/sessionsStart a cloud agent session
- GET/v1/sessions/searchSearch sessions over steps, recaps, and pull requests
- POST/v1/sessions/syncSync a local Claude Code session to Ellipsis
- GET/v1/sessions/{session_id}Return one session
- GET/v1/sessions/{session_id}/executionsReturn the session's executions and launch context
- GET/v1/sessions/{session_id}/exportExport the complete session history
- POST/v1/sessions/{session_id}/messagesSend a message to a session
- GET/v1/sessions/{session_id}/outputReturn the session's typed output
- GET/v1/sessions/{session_id}/recordsReturn the session's stored transcript records, oldest first
- POST/v1/sessions/{session_id}/replayReplay a session as a new session
- POST/v1/sessions/{session_id}/stopStop an in-flight session and return it
- POST/v1/sessions/{session_id}/transcriptAppend transcript lines to a session's record
- GET/v1/agents/configsList saved agent configs
- POST/v1/agents/configsCreate an agent config
- GET/v1/agents/configs/{config_id}Return one saved agent config, by id or by the agent's name
- PUT/v1/agents/configs/{config_id}Replace an agent's definition, by id or by the agent's name
- DELETE/v1/agents/configs/{config_id}Delete an agent, by id or by the agent's name
- POST/v1/agents/configs/{config_id}/linkMove an agent into a repository, by id or by the agent's name
- POST/v1/agents/configs/{config_id}/unlinkTake over an agent from its file, by id or by the agent's name
- GET/v1/agents/defaultsList default agent configs
- PUT/v1/agents/defaultsSet a default agent config
- DELETE/v1/agents/defaultsClear a default agent config
- GET/v1/agents/templatesList the built-in starter agent templates
- GET/v1/agents/templates/{template_id}Return one built-in agent template by slug
- GET/v1/memoriesList the organization's memories as a readable index
- POST/v1/memoriesSave a memory for future agent sessions
- GET/v1/memories/{memory_id}Read one memory's full content
- PUT/v1/memories/{memory_id}Correct an existing memory in place
- DELETE/v1/memories/{memory_id}Delete a memory that is no longer true
- GET/v1/integrationsList connected integrations
- GET/v1/integrations/github/membersList the GitHub organization roster
- GET/v1/integrations/github/reposList GitHub repositories connected to the installation
- GET/v1/integrations/linear/teamsList the teams of the connected Linear workspace
- GET/v1/integrations/sentry/organizationsList the connected Sentry organizations
- GET/v1/integrations/slack/channelsList the channels of the connected Slack workspace, fetched live from the Slack API
- GET/v1/integrations/slack/membersList the members of the connected Slack workspace, fetched live from the Slack API
- POST/v1/auth/cli/pollPoll a device-code auth flow for its token
- POST/v1/auth/cli/startStart a device-code auth flow for the CLI
- GET/v1/budgetReturn the caller's current budget summary
- GET/v1/meReturn the identity behind the caller's credential
- GET/v1/modelsList selectable agent models
- GET/v1/usageReturn the caller's usage dashboard data