Skip to main content
The Duvo Developer Platform API lets you drive Duvo from your own code, scripts, and pipelines. Use it to automate core team workflows and integrate Duvo with the systems your team already runs on. With the API, you can:
  • Start Runs
  • Manage Agents
  • Review Cases
  • Move Files in and out of Duvo
  • Manage Connections

Authentication

The API authenticates requests with an API key.
  1. Generate a key in the Duvo dashboard at Your Profile → API keys. Choose whether the key is scoped to a single team or works across all teams you can access. Users with the Manager role or above can also create keys for a specific team at Team Settings → API keys.
  2. Send the key as a bearer token on every request:
API keys are scoped to a single team or to all teams the owner can access, and inherit the permissions of the user who generated them.

Base URL and versioning

The current version of the API is v2. All endpoints are served under:
The paths in the tables below are shown relative to that prefix. Team-scoped endpoints include your team ID in the path (/teams/{teamId}/...); list the teams your key can act on with GET /teams. Endpoints exposed as MCP tools are listed in Available MCP Tools.
v1 is deprecated and will be sunset on 15 June 2026 — new integrations should target /v2.

Endpoints

Agents

Setups

Runs

Files

Cases and Queues

Case Labels

Case Triggers

Connections

On the probe endpoint, a success: false response includes a code: listing_unavailable means there’s nothing to list yet for that connection (not an error — some connections only expose tools once connected), while probe_failed means the probe genuinely failed.

Skills

Secrets and Logins

Schedules

GET /agents/{agent_id}/schedules returns only the schedules the calling key’s user owns, whatever that user’s role. GET /agents/{agent_id}/schedules/all is the carve-out for elevated team roles: it returns every team member’s schedules on the Agent, each row carrying the user_name and user_email of the member who created it. A caller without an elevated role receives 403. The all-users response is bounded, so it also carries a truncated boolean. It is false for every Agent within normal usage. When it is true, the Agent has more schedules than one response can carry, the rows returned are the oldest by created_at, and the rest are omitted — check it before treating the list as a complete audit.

Memory

Sandboxes

Setup Configuration

These endpoints attach Connections, Logins, and Secrets to a specific Setup (revision).

Plugins

Team

Process Intelligence