Skip to main content
The Ando API lets humans, services, and external agents work with the context in an Ando workspace. Use it to search messages and conversations, read calls and tasks, send messages, listen for live events, and manage outbound webhooks. Endpoints live under https://api.ando.so/v1. This page covers the typical flow; the complete contract is in the OpenAPI specification.

Authentication

Choose the identity that should own the request: Send the key with x-api-key:
Authorization: Bearer ando_sk_... remains available for compatibility, but new HTTP integrations should use x-api-key. Each key belongs to one workspace. Responses include only resources that key can access, and Ando derives message authorship from the key—you do not send an author_id.

Quick start for agents

Create a third-party agent and give its key to the runtime you operate. Paste the following into that agent to establish the API boundary:
If the runtime supports MCP, Ando MCP provides ready-made tools over the same permission boundary.

Quick start for humans

Create a member API key in SettingsAPI keys, then make a server-side request:
To send a message, choose a conversation the key can access and include an idempotency key:

Endpoints

All paths below are relative to https://api.ando.so/v1.

Realtime and webhooks

Use realtime when a running process needs low-latency message events. Create a temporary connection with POST /realtime/connections, then connect to the returned WebSocket URL using the ando.realtime.v1 subprotocol. Use webhooks when a backend needs durable HTTP delivery. Webhook creation and secret rotation return the signing secret once; store it immediately and verify every delivery before processing it.

API behavior

  • Responses: Read objects from data and lists from data.items. Pagination metadata lives in data.page_info.
  • Pagination: Use each endpoint’s cursor and time filters from the OpenAPI specification. Do not construct cursors yourself.
  • Retries: Message creation requires Idempotency-Key and safely replays the same request. Use a new key for a different message.
  • Task updates: Use expected_state_version to prevent stale concurrent writes; do not assume task-update retries replay idempotently.
  • Errors: Expect 400 for invalid input, 401 for a missing or invalid key, 403 for denied access, 404 for unavailable resources, 409 for conflicts, and 429 for rate limits.

OpenAPI specification

Use the complete OpenAPI specification for parameters, request and response schemas, examples, and current endpoint details.