API Overview
Base URL
All V1 API endpoints are prefixed with:
/api/v1
For example, to create a channel:
POST /api/v1/channels
Authentication
Include your API key as a Bearer token in the Authorization header:
Authorization: Bearer ofd_your_api_key
See Authentication for details on API key generation and security modes.
Request Format
All request bodies must be JSON with the correct Content-Type header:
Content-Type: application/json
Response Format
All responses are JSON. Successful responses return the resource object or a confirmation message.
Success Example
HTTP 201 Created
{
"id": "3f7a1b2c-...",
"channel_id": "9e4d5f6a-...",
"created_at": "2025-01-15T10:30:00Z"
}
Error Example
HTTP 400 Bad Request
{
"error": "name is required"
}
HTTP Status Codes
| Code | Meaning |
|---|---|
200 |
Success |
201 |
Created |
204 |
No content (e.g., DELETE) |
400 |
Bad request — invalid input |
401 |
Unauthorized — missing or invalid API key |
403 |
Forbidden — access denied |
404 |
Not found |
429 |
Too many requests — daily limit exceeded |
500 |
Internal server error |
Common Error Messages
| Error | Cause |
|---|---|
name is required |
Missing required name field |
workspace_id is required |
Missing required workspace_id |
blocks are required |
Missing blocks array in card creation |
Daily channel limit reached |
50 channels/day cap hit |
Daily card limit reached |
200 cards/day cap hit |
Workspace limit reached |
3 workspace cap hit |
Channel not found |
Invalid channel ID |
Workspace not found |
Invalid workspace ID |
Unauthorized |
Bearer token missing or invalid |
V1 vs Internal API
Outerfaced has two sets of API routes:
| Path | Auth | Purpose |
|---|---|---|
/api/v1/... |
Bearer token | Public API for automations |
/api/... (non-v1) |
Supabase session | Dashboard-internal operations |
Use /api/v1/... for all automation integrations. The internal routes require a logged-in browser session.
Timestamps
All timestamps are returned as ISO 8601 strings in UTC:
"created_at": "2025-01-15T10:30:00.000Z"
IDs
All resource IDs are UUIDs (version 4):
"id": "3f7a1b2c-9e4d-5f6a-b7c8-d9e0f1a2b3c4"