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. See Platform behaviors to plan for for team-scoped Connections, Agent Memory, and team settings behavior.
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 schema rules

Case schemas use a supported subset of JSON Schema. The root must have "type": "object", and every object schema, including nested objects, must set "additionalProperties": false. Otherwise the request fails with a 400 error: Object schemas must set additionalProperties to false. Every array schema must define items.

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.

Provider keys vs integration types

The native OAuth {provider} path parameter is a provider key, not an integration type. Use oauth_provider_key from listIntegrations or duvo integrations list --json; those are the source of truth, and this reference table may lag. SAP S/4HANA start requests also require name, sap-host, and sap-client-id; Intercom requires intercom-region; Zendesk requires subdomain. Shopify requires shop as a bare <store>.myshopify.com host (for example, acme.myshopify.com), without a scheme or path.

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