← Back to home

Cuevue API

Build integrations with the Cuevue REST API. Manage projects, workflow stages, custom fields, comments, subtasks, team members, and webhooks programmatically.

OpenAPI SpecBase URL: https://cuevue.io/api/v1

Authentication

All API requests require a bearer token. Generate an API key from Settings → API & Integrations in your workspace. Keys use the cue_sk_ prefix.

curl https://cuevue.io/api/v1/projects \
  -H "Authorization: Bearer cue_sk_your_key_here"

Keys are scoped to a single workspace with either read or write permission. Admin-only endpoints (webhooks, members) require write access.

Endpoints

All endpoints are relative to /api/v1. Request and response bodies use JSON.

Projects

GET/projects
POST/projects
GET/projects/:id
PATCH/projects/:id
DELETE/projects/:id
PATCH/projects/:id/custom-fields
PATCH/projects/batch

Versions

GET/projects/:id/versions

Comments

GET/projects/:id/comments
POST/projects/:id/comments
GET/projects/:id/comments/:commentId
DELETE/projects/:id/comments/:commentId

Subtasks

GET/projects/:id/subtasks
POST/projects/:id/subtasks
GET/subtasks/:id
PATCH/subtasks/:id
DELETE/subtasks/:id

Workflow

GET/workflow
GET/workflow/stages
POST/workflow/stages
GET/workflow/stages/:id
PATCH/workflow/stages/:id
DELETE/workflow/stages/:id

Custom Fields

GET/fields
POST/fields
GET/fields/:id
PATCH/fields/:id
DELETE/fields/:id
PATCH/fields/reorder

Members

GET/members
POST/members
GET/members/:id
PATCH/members/:id
DELETE/members/:id

Webhooks

GET/webhooks
POST/webhooks
GET/webhooks/:id
PATCH/webhooks/:id
DELETE/webhooks/:id
GET/webhooks/:id/deliveries
POST/webhooks/:id/test

Space

GET/space

Pagination

List endpoints return cursor-based pagination. Pass limit (max 100, default 25) and use the returned cursor value to fetch the next page.

{
  "data": [ ... ],
  "pagination": {
    "cursor": "eyJ2IjoiMjAyNi0wMy0xMCIsImlkIjoiYWJjMTIzIn0",
    "has_more": true,
    "total": 142
  }
}

When has_more is false, you have reached the end. Pass sort and order to control sort direction.

Error handling

Errors return a consistent JSON envelope with an error object:

{
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Invalid request body",
    "details": {
      "title": "Required"
    }
  }
}
StatusCode
400VALIDATION_ERROR
401UNAUTHORIZED
403FORBIDDEN
404NOT_FOUND
429RATE_LIMITED
500INTERNAL_ERROR

Rate limits

The API enforces per-key rate limits. Current limits are returned in response headers:

HeaderDescription
X-RateLimit-LimitMax requests per window
X-RateLimit-RemainingRequests remaining
X-RateLimit-ResetWindow reset time (Unix epoch)

Default limit: 120 requests/minute for read operations, 60 requests/minute for writes. When rate limited, the response includes retry_after_ms in the error body.

Webhooks

Receive real-time notifications when events happen in your workspace. Register a webhook endpoint and subscribe to the events you need.

Available events

project.createdA project was created
project.updatedA project was updated
project.deletedA project was deleted
status.changedA project changed workflow stage
custom_field.updatedCustom field values changed
comment.createdA comment was added
version.createdA new version was uploaded
subtask.createdA subtask was created
subtask.updatedA subtask was updated
member.addedA member joined the space
member.removedA member was removed

Payload format

{
  "event": "project.updated",
  "timestamp": "2026-03-26T14:30:00.000Z",
  "space_id": "uuid",
  "data": {
    "project": { ... }
  }
}

Signature verification

Each webhook delivery includes a X-Cue-Signature header containing an HMAC-SHA256 signature. Verify it using the signing secret returned when you create the webhook:

import crypto from "crypto";

function verifyWebhook(body: string, signature: string, secret: string) {
  const expected = crypto
    .createHmac("sha256", secret)
    .update(body)
    .digest("hex");
  return crypto.timingSafeEqual(
    Buffer.from(signature),
    Buffer.from(expected),
  );
}

Webhooks that fail are retried with exponential backoff (up to 3 attempts). After repeated failures, the endpoint is automatically disabled.

MCP integration

Cuevue supports the Model Context Protocol (MCP), allowing AI assistants and LLM-powered tools to interact with your workspace. The MCP server exposes read-only resources, resource templates, and tools that map to the REST API.

Connect your AI tools

Configure your MCP-compatible client (Claude Desktop, Cursor, etc.) with your Cuevue API key:

{
  "mcpServers": {
    "cuevue": {
      "url": "https://cuevue.io/api/mcp",
      "headers": {
        "Authorization": "Bearer cue_sk_your_key_here"
      }
    }
  }
}

Read-only API keys can browse resources like cuevue://projects/recent, cuevue://workflow/stages, and templates such as cuevue://projects/{episode_id}. The server also provides tools for listing projects, reading comments, fetching transcripts, and, with write-permitted API keys, creating projects, comments, and workflow updates.