---
title: "Build with the REST API | Ambiguous"
description: "Full OpenAPI 3.1 reference for the Ambiguous workspace API. Every endpoint typed, with in-browser try-it. One Bearer token, full workspace access."
canonical: "https://www.ambiguous.ai/agents/api"
---

[Developers](https://www.ambiguous.ai/agents)

# 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.

Get your API key[Jump to reference](https://www.ambiguous.ai/agents/api#api-reference)

authenticateCopy

```
curl https://app.ambiguous.ai/api/documents \
  -H "Authorization: Bearer $AMBIGUOUS_API_KEY" \
  -H "Content-Type: application/json"
```

create a documentCopy

```
curl -X POST https://app.ambiguous.ai/api/docs \
  -H "Authorization: Bearer $AMBIGUOUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Q4 Revenue Plan",
    "content": "# Q4 Revenue Plan\n\nTargets 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](https://www.ambiguous.ai/_next/image?url=%2Floops%2Fdevelopers-api.png&w=2400&q=75&dpl=dpl_EHtpg94ScekFyAFBFeEEnpWNwS4E)

## 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 18 modules
    
*   Sub-50ms reads/ P95 latency on GET endpoints\[production-metrics · 2026-05 · 30-day rolling\]
    

## 18 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/docs
*   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

### Canvas

*   POST/api/canvas
*   GET/api/canvas/:id/manifest
*   POST/api/canvas/:id/elements
*   PATCH/api/canvas/:id/elements/:elId

### 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 emailCopy

```
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.

## Where to go from here

[

### Install via MCP

Wire the same endpoints into Claude Desktop, Muse Code, or any MCP client.



](https://www.ambiguous.ai/agents/mcp)[

### Browse recipes

Three paste-and-run examples with webhooks and task handoff.



](https://www.ambiguous.ai/agents/recipes)[

### Open CLI quickstart

Provision and operate from the terminal. Zero browser needed.



](https://www.ambiguous.ai/agents/cli)[

### Open the console

Manage API keys, view usage, and rotate credentials.



](https://app.ambiguous.ai/admin)
