Developers

Build with the REST API

Full OpenAPI 3.1 specification with in-browser try-it. Authenticate with a token and control the entire workspace over HTTP.

Jump to reference
authenticate
curl https://app.ambiguous.ai/api/documents \
  -H "Authorization: Bearer $AMBIGUOUS_API_KEY" \
  -H "Content-Type: application/json"
create a document
curl -X POST https://app.ambiguous.ai/api/documents \
  -H "Authorization: Bearer $AMBIGUOUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "doc",
    "title": "Q4 Revenue Plan",
    "content": [
      { "type": "heading", "level": 1, "text": "Q4 Revenue Plan" },
      { "type": "paragraph", "text": "Targets and strategy for next quarter." }
    ]
  }'

# → 201 Created
# → { "id": "doc_8xk2m", "title": "Q4 Revenue Plan", ... }
API Explorer showing typed requests to Documents, Mail, and CRM endpoints with JSON responses

Type a request and watch the response

Every endpoint returns typed JSON with consistent shapes. Request bodies are validated against OpenAPI 3.1 schemas. Responses include the resource ID, timestamps, and workspace context: everything your agent needs to chain the next call.

  • Typed schemas/ OpenAPI 3.1 with full validation
  • Consistent shapes/ Same envelope across all 17 modules
  • Sub-50ms reads/ P95 latency on GET endpoints[production-metrics · 2026-05 · 30-day rolling]

17 modules served from one base URL

Every module exposes CRUD endpoints under https://app.ambiguous.ai/api/. Bearer token authentication on every request.

Documents

  • GET/api/documents
  • POST/api/documents
  • PATCH/api/documents/:id
  • DELETE/api/documents/:id

Sheets

  • GET/api/sheets
  • POST/api/sheets
  • GET/api/sheets/:id/range
  • PATCH/api/sheets/:id/cells

Slides

  • GET/api/slides
  • POST/api/slides
  • PATCH/api/slides/:id

Wiki

  • GET/api/wiki/pages
  • POST/api/wiki/pages
  • PATCH/api/wiki/pages/:id

Mail

  • GET/api/mail/inbox
  • POST/api/mail/send
  • GET/api/mail/:id

Chat

  • GET/api/channels
  • POST/api/channels/:id/messages
  • GET/api/channels/:id

CRM

  • GET/api/crm/contacts
  • POST/api/crm/deals
  • PATCH/api/crm/deals/:id

Tasks

  • GET/api/tasks
  • POST/api/tasks
  • PATCH/api/tasks/:id/complete

Calendar

  • GET/api/calendar/events
  • POST/api/calendar/events
  • GET/api/calendar/availability

Forms

  • GET/api/forms
  • POST/api/forms/:id/submit
  • GET/api/forms/:id/responses

Drive

  • GET/api/drive/files
  • POST/api/drive/upload
  • DELETE/api/drive/files/:id

Identity

  • GET/api/users
  • POST/api/auth/signup-agent
  • GET/api/users/:id

Admin

  • GET/api/admin/users
  • GET/api/admin/audit-log
  • PATCH/api/admin/settings

Assistant

  • POST/api/assistant/chat
  • GET/api/assistant/recent-activity

Automations

  • GET/api/automations
  • POST/api/automations
  • POST/api/automations/:id/trigger

Search

  • POST/api/search
  • GET/api/search/suggestions
send an email
curl -X POST https://app.ambiguous.ai/api/mail/send \
  -H "Authorization: Bearer $AMBIGUOUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "to": ["team@company.com"],
    "subject": "Weekly update",
    "body_markdown": "Here is this week progress report."
  }'

# → 200 OK
# → { "id": "msg_3kx9f", "status": "sent" }

Full API reference

Browse every endpoint, read typed schemas, and test requests in-browser. Powered by Scalar and our OpenAPI 3.1 specification.

Start free. 17 apps included.

Teams of up to five can use all 17 apps for free. Once a workspace exists, builders can provision an agent in one API call and get it started through MCP or CLI in under a minute. MCP setup is available for Claude, ChatGPT, Cursor, and OpenClaw. Because every client uses the same API, teams can change AI tools without moving their work.