openapi: 3.0.3 info: title: Duvo Public Agent Folders Revisions API description: Public API for programmatic access to Duvo. Authenticate with API keys created in the Duvo dashboard. version: 1.0.0 servers: - url: https://api.duvo.ai description: Production server tags: - name: Revisions description: Create and manage agent revisions — the underlying Setup for an Agent paths: /v2/agents/{agent_id}/revisions: post: operationId: createRevision tags: - Revisions description: Create a new revision for an existing agent. requestBody: required: true content: application/json: schema: type: object properties: name: type: string minLength: 1 description: Build name config: description: Build configuration (latest schema version only; legacy v1 configs are not accepted) type: object properties: version: type: string enum: - v2 description: Schema version discriminator — must be "v2" for the current schema data: type: object properties: models: type: object properties: agent: type: object properties: model: type: string enum: - claude-sonnet-5 - claude-sonnet-5[1m] - claude-opus-4-8 - claude-opus-4-8[1m] - d1-max - duvo-1-max - duvo-1-max-sonnet-1m - duvo-1-max-sonnet-4.5 - duvo-1-max-sonnet-4.5-1m - duvo-1-max-opus - duvo-1-max-opus-4.5 - gpt-4.1 - gpt-4o - gpt-4o-mini - gpt-5 - gpt-5.1 - claude-sonnet-4-20250514 - claude-sonnet-4-20250514[1m] - claude-sonnet-4-5-20250929 - claude-sonnet-4-5-20250929[1m] - claude-sonnet-4-6 - claude-sonnet-4-6[1m] - claude-opus-4-1-20250805 - claude-opus-4-5-20251101 - claude-opus-4-6 - claude-opus-4-6[1m] - claude-opus-4-7 - claude-opus-4-7[1m] description: Claude model identifier used for the primary agent loop required: - model description: Primary Claude agent model configuration browsing: type: object properties: provider: type: string enum: - google - anthropic description: Provider backing the browsing/computer-use model model: type: string enum: - gemini-2.5-pro - gemini-2.5-flash - gemini-3-pro-preview - claude-haiku-4-5 - claude-sonnet-4-5 - claude-opus-4-1 description: Model identifier for the browsing provider required: - provider - model description: Browsing/computer-use model configuration required: - agent - browsing description: Model configuration for each capability the agent uses input: anyOf: - type: string - type: array items: type: object properties: role: type: string enum: - system - user - assistant content: anyOf: - type: string - type: array items: anyOf: - type: object properties: type: type: string enum: - input_text text: type: string required: - type - text - type: object properties: type: type: string enum: - input_image detail: nullable: true type: string enum: - low - high - auto file_id: nullable: true type: string url: nullable: true type: string required: - type - type: object properties: type: type: string enum: - input_file file_id: type: string required: - type - file_id type: nullable: true type: string enum: - message required: - role - content description: Initial agent instructions — either a single system prompt string or a list of structured messages files: default: [] description: IDs of team files that should be available to the agent nullable: true type: array items: type: string skills: default: [] description: IDs of skills (team or system) that should be available to the agent nullable: true type: array items: type: string plugins: default: [] description: Plugins to load — either a built-in plugin name (e.g. "code-review") or a GitHub URL (e.g. "https://github.com/owner/repo") nullable: true type: array items: type: string subAgents: default: [] description: IDs of other agents (in the same team) to expose to this agent as Claude Code subagents. Each sub-agent runs with its own AOP and connections; the parent can delegate to them via the Agent tool. nullable: true type: array items: type: string format: uuid options: description: Optional runtime options controlling how the agent executes type: object properties: browserProvider: description: Browser infrastructure provider type: string enum: - browserbase - browser-use evaluationSchemaId: description: ID of the evaluation schema to apply to runs of this agent type: string benchmarkExpectedOutcomes: description: Expected outcomes used when running benchmark scenarios type: array items: type: object properties: description: type: string description: Human-readable description of the expected outcome criteria: type: string description: Pass/fail criteria used to evaluate the outcome required: - description - criteria additionalProperties: {} required: - models - input description: Agent configuration payload required: - version - data handover_target_ids: description: Agent IDs that this agent can hand work off to type: array items: type: string format: uuid source_build_id: description: Build ID to copy integrations and queue links from type: string format: uuid required: - name parameters: - schema: type: string format: uuid in: path name: agent_id required: true description: The agent's unique identifier security: - bearerAuth: [] responses: '201': description: Default Response content: application/json: schema: type: object properties: build: type: object properties: id: type: string format: uuid copilot_id: type: string format: uuid agent_id: type: string format: uuid name: type: string revision_name: nullable: true type: string revision_description: nullable: true type: string config: nullable: true anyOf: - type: object properties: version: type: string enum: - v1 data: type: object properties: model: type: string temperature: nullable: true type: number minimum: 0 maximum: 2 max_output_tokens: nullable: true type: number minimum: 0 exclusiveMinimum: true top_p: nullable: true type: number minimum: 0 maximum: 1 store: nullable: true type: boolean tools: {} input: anyOf: - type: string - type: array items: type: object properties: role: type: string enum: - system - user - assistant content: anyOf: - type: string - type: array items: anyOf: - type: object properties: type: type: string enum: - input_text text: type: string required: - type - text additionalProperties: false - type: object properties: type: type: string enum: - input_image detail: nullable: true type: string enum: - low - high - auto file_id: nullable: true type: string url: nullable: true type: string required: - type additionalProperties: false - type: object properties: type: type: string enum: - input_file file_id: type: string required: - type - file_id additionalProperties: false type: nullable: true type: string enum: - message required: - role - content additionalProperties: false text: nullable: true type: object properties: format: nullable: true anyOf: - type: object properties: type: type: string enum: - text required: - type additionalProperties: false - type: object properties: type: type: string enum: - json_object required: - type additionalProperties: false additionalProperties: false files: default: [] nullable: true type: array items: type: string skills: default: [] nullable: true type: array items: type: string required: - model - tools - input - files - skills additionalProperties: false required: - version - data additionalProperties: false - type: object properties: version: type: string enum: - v2 description: Schema version discriminator — must be "v2" for the current schema data: type: object properties: models: type: object properties: agent: type: object properties: model: type: string enum: - claude-sonnet-5 - claude-sonnet-5[1m] - claude-opus-4-8 - claude-opus-4-8[1m] - d1-max - duvo-1-max - duvo-1-max-sonnet-1m - duvo-1-max-sonnet-4.5 - duvo-1-max-sonnet-4.5-1m - duvo-1-max-opus - duvo-1-max-opus-4.5 - gpt-4.1 - gpt-4o - gpt-4o-mini - gpt-5 - gpt-5.1 - claude-sonnet-4-20250514 - claude-sonnet-4-20250514[1m] - claude-sonnet-4-5-20250929 - claude-sonnet-4-5-20250929[1m] - claude-sonnet-4-6 - claude-sonnet-4-6[1m] - claude-opus-4-1-20250805 - claude-opus-4-5-20251101 - claude-opus-4-6 - claude-opus-4-6[1m] - claude-opus-4-7 - claude-opus-4-7[1m] description: Claude model identifier used for the primary agent loop required: - model additionalProperties: false description: Primary Claude agent model configuration browsing: type: object properties: provider: type: string enum: - google - anthropic description: Provider backing the browsing/computer-use model model: type: string enum: - gemini-2.5-pro - gemini-2.5-flash - gemini-3-pro-preview - claude-haiku-4-5 - claude-sonnet-4-5 - claude-opus-4-1 description: Model identifier for the browsing provider required: - provider - model additionalProperties: false description: Browsing/computer-use model configuration required: - agent - browsing additionalProperties: false description: Model configuration for each capability the agent uses input: anyOf: - type: string - type: array items: type: object properties: role: type: string enum: - system - user - assistant content: anyOf: - type: string - type: array items: anyOf: - type: object properties: type: type: string enum: - input_text text: type: string required: - type - text additionalProperties: false - type: object properties: type: type: string enum: - input_image detail: nullable: true type: string enum: - low - high - auto file_id: nullable: true type: string url: nullable: true type: string required: - type additionalProperties: false - type: object properties: type: type: string enum: - input_file file_id: type: string required: - type - file_id additionalProperties: false type: nullable: true type: string enum: - message required: - role - content additionalProperties: false description: Initial agent instructions — either a single system prompt string or a list of structured messages files: default: [] description: IDs of team files that should be available to the agent nullable: true type: array items: type: string skills: default: [] description: IDs of skills (team or system) that should be available to the agent nullable: true type: array items: type: string plugins: default: [] description: Plugins to load — either a built-in plugin name (e.g. "code-review") or a GitHub URL (e.g. "https://github.com/owner/repo") nullable: true type: array items: type: string subAgents: default: [] description: IDs of other agents (in the same team) to expose to this agent as Claude Code subagents. Each sub-agent runs with its own AOP and connections; the parent can delegate to them via the Agent tool. nullable: true type: array items: type: string format: uuid options: description: Optional runtime options controlling how the agent executes type: object properties: browserProvider: description: Browser infrastructure provider type: string enum: - browserbase - browser-use evaluationSchemaId: description: ID of the evaluation schema to apply to runs of this agent type: string benchmarkExpectedOutcomes: description: Expected outcomes used when running benchmark scenarios type: array items: type: object properties: description: type: string description: Human-readable description of the expected outcome criteria: type: string description: Pass/fail criteria used to evaluate the outcome required: - description - criteria additionalProperties: false additionalProperties: {} required: - models - input - files - skills - plugins - subAgents additionalProperties: false description: Agent configuration payload required: - version - data additionalProperties: false status: nullable: true type: string revision_number: nullable: true type: number parent_build_id: nullable: true type: string created_by: nullable: true type: string created_by_name: nullable: true type: string created_at: nullable: true type: string updated_at: nullable: true type: string schedules: type: array items: type: object properties: id: type: string build_id: type: string agent_id: type: string user_id: type: string enabled: type: boolean frequency: type: string enum: - every_5_minutes - every_15_minutes - hourly - daily - workday - weekly - monthly - custom time: nullable: true type: string timezone: type: string day: nullable: true type: string day_of_month: nullable: true type: number cron: nullable: true type: string source: nullable: true type: string task: nullable: true type: string recurring: nullable: true type: boolean auto_disabled_at: nullable: true type: string auto_disabled_reason: nullable: true type: string consecutive_missing_connection_failures: type: integer minimum: 0 maximum: 9007199254740991 first_missing_connection_failure_at: nullable: true type: string last_missing_connection_failure_at: nullable: true type: string created_at: type: string updated_at: type: string user_name: nullable: true type: string user_email: nullable: true type: string required: - id - build_id - agent_id - user_id - enabled - frequency - time - timezone - day - day_of_month - cron - source - task - recurring - auto_disabled_at - auto_disabled_reason - consecutive_missing_connection_failures - first_missing_connection_failure_at - last_missing_connection_failure_at - created_at - updated_at additionalProperties: false required: - id - copilot_id - agent_id - name - config - status - revision_number - parent_build_id - created_by - created_at - updated_at additionalProperties: false agent: type: object properties: id: type: string format: uuid required: - id additionalProperties: false required: - build - agent additionalProperties: false '400': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false '401': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false '403': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false '404': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false '409': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false '500': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false summary: Create Revision get: operationId: listAgentRevisions tags: - Revisions description: List revisions for an agent. parameters: - schema: default: 20 type: integer minimum: 1 maximum: 100 in: query name: limit required: false description: Number of revisions per page (1-100, default 20) - schema: type: integer minimum: 0 maximum: 9007199254740991 in: query name: offset required: false description: Number of revisions to skip - schema: type: string format: uuid in: path name: agent_id required: true description: The agent's unique identifier security: - bearerAuth: [] responses: '200': description: Default Response content: application/json: schema: type: object properties: builds: type: array items: type: object properties: id: type: string format: uuid copilot_id: type: string format: uuid agent_id: type: string format: uuid name: type: string revision_name: nullable: true type: string revision_description: nullable: true type: string config: nullable: true anyOf: - type: object properties: version: type: string enum: - v1 data: type: object properties: model: type: string temperature: nullable: true type: number minimum: 0 maximum: 2 max_output_tokens: nullable: true type: number minimum: 0 exclusiveMinimum: true top_p: nullable: true type: number minimum: 0 maximum: 1 store: nullable: true type: boolean tools: {} input: anyOf: - type: string - type: array items: type: object properties: role: type: string enum: - system - user - assistant content: anyOf: - type: string - type: array items: anyOf: - type: object properties: type: type: string enum: - input_text text: type: string required: - type - text additionalProperties: false - type: object properties: type: type: string enum: - input_image detail: nullable: true type: string enum: - low - high - auto file_id: nullable: true type: string url: nullable: true type: string required: - type additionalProperties: false - type: object properties: type: type: string enum: - input_file file_id: type: string required: - type - file_id additionalProperties: false type: nullable: true type: string enum: - message required: - role - content additionalProperties: false text: nullable: true type: object properties: format: nullable: true anyOf: - type: object properties: type: type: string enum: - text required: - type additionalProperties: false - type: object properties: type: type: string enum: - json_object required: - type additionalProperties: false additionalProperties: false files: default: [] nullable: true type: array items: type: string skills: default: [] nullable: true type: array items: type: string required: - model - tools - input - files - skills additionalProperties: false required: - version - data additionalProperties: false - type: object properties: version: type: string enum: - v2 description: Schema version discriminator — must be "v2" for the current schema data: type: object properties: models: type: object properties: agent: type: object properties: model: type: string enum: - claude-sonnet-5 - claude-sonnet-5[1m] - claude-opus-4-8 - claude-opus-4-8[1m] - d1-max - duvo-1-max - duvo-1-max-sonnet-1m - duvo-1-max-sonnet-4.5 - duvo-1-max-sonnet-4.5-1m - duvo-1-max-opus - duvo-1-max-opus-4.5 - gpt-4.1 - gpt-4o - gpt-4o-mini - gpt-5 - gpt-5.1 - claude-sonnet-4-20250514 - claude-sonnet-4-20250514[1m] - claude-sonnet-4-5-20250929 - claude-sonnet-4-5-20250929[1m] - claude-sonnet-4-6 - claude-sonnet-4-6[1m] - claude-opus-4-1-20250805 - claude-opus-4-5-20251101 - claude-opus-4-6 - claude-opus-4-6[1m] - claude-opus-4-7 - claude-opus-4-7[1m] description: Claude model identifier used for the primary agent loop required: - model additionalProperties: false description: Primary Claude agent model configuration browsing: type: object properties: provider: type: string enum: - google - anthropic description: Provider backing the browsing/computer-use model model: type: string enum: - gemini-2.5-pro - gemini-2.5-flash - gemini-3-pro-preview - claude-haiku-4-5 - claude-sonnet-4-5 - claude-opus-4-1 description: Model identifier for the browsing provider required: - provider - model additionalProperties: false description: Browsing/computer-use model configuration required: - agent - browsing additionalProperties: false description: Model configuration for each capability the agent uses input: anyOf: - type: string - type: array items: type: object properties: role: type: string enum: - system - user - assistant content: anyOf: - type: string - type: array items: anyOf: - type: object properties: type: type: string enum: - input_text text: type: string required: - type - text additionalProperties: false - type: object properties: type: type: string enum: - input_image detail: nullable: true type: string enum: - low - high - auto file_id: nullable: true type: string url: nullable: true type: string required: - type additionalProperties: false - type: object properties: type: type: string enum: - input_file file_id: type: string required: - type - file_id additionalProperties: false type: nullable: true type: string enum: - message required: - role - content additionalProperties: false description: Initial agent instructions — either a single system prompt string or a list of structured messages files: default: [] description: IDs of team files that should be available to the agent nullable: true type: array items: type: string skills: default: [] description: IDs of skills (team or system) that should be available to the agent nullable: true type: array items: type: string plugins: default: [] description: Plugins to load — either a built-in plugin name (e.g. "code-review") or a GitHub URL (e.g. "https://github.com/owner/repo") nullable: true type: array items: type: string subAgents: default: [] description: IDs of other agents (in the same team) to expose to this agent as Claude Code subagents. Each sub-agent runs with its own AOP and connections; the parent can delegate to them via the Agent tool. nullable: true type: array items: type: string format: uuid options: description: Optional runtime options controlling how the agent executes type: object properties: browserProvider: description: Browser infrastructure provider type: string enum: - browserbase - browser-use evaluationSchemaId: description: ID of the evaluation schema to apply to runs of this agent type: string benchmarkExpectedOutcomes: description: Expected outcomes used when running benchmark scenarios type: array items: type: object properties: description: type: string description: Human-readable description of the expected outcome criteria: type: string description: Pass/fail criteria used to evaluate the outcome required: - description - criteria additionalProperties: false additionalProperties: {} required: - models - input - files - skills - plugins - subAgents additionalProperties: false description: Agent configuration payload required: - version - data additionalProperties: false status: nullable: true type: string revision_number: nullable: true type: number parent_build_id: nullable: true type: string created_by: nullable: true type: string created_by_name: nullable: true type: string created_at: nullable: true type: string updated_at: nullable: true type: string schedules: type: array items: type: object properties: id: type: string build_id: type: string agent_id: type: string user_id: type: string enabled: type: boolean frequency: type: string enum: - every_5_minutes - every_15_minutes - hourly - daily - workday - weekly - monthly - custom time: nullable: true type: string timezone: type: string day: nullable: true type: string day_of_month: nullable: true type: number cron: nullable: true type: string source: nullable: true type: string task: nullable: true type: string recurring: nullable: true type: boolean auto_disabled_at: nullable: true type: string auto_disabled_reason: nullable: true type: string consecutive_missing_connection_failures: type: integer minimum: 0 maximum: 9007199254740991 first_missing_connection_failure_at: nullable: true type: string last_missing_connection_failure_at: nullable: true type: string created_at: type: string updated_at: type: string user_name: nullable: true type: string user_email: nullable: true type: string required: - id - build_id - agent_id - user_id - enabled - frequency - time - timezone - day - day_of_month - cron - source - task - recurring - auto_disabled_at - auto_disabled_reason - consecutive_missing_connection_failures - first_missing_connection_failure_at - last_missing_connection_failure_at - created_at - updated_at additionalProperties: false required: - id - copilot_id - agent_id - name - config - status - revision_number - parent_build_id - created_by - created_at - updated_at additionalProperties: false total: type: integer minimum: -9007199254740991 maximum: 9007199254740991 limit: type: integer minimum: -9007199254740991 maximum: 9007199254740991 offset: type: integer minimum: -9007199254740991 maximum: 9007199254740991 required: - builds - total - limit - offset additionalProperties: false '400': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false '401': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false '404': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false '500': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false summary: List Agent Revisions /v2/agents/{agent_id}/revisions/{build_id}: get: operationId: getRevision tags: - Revisions description: Get a revision by ID. parameters: - schema: type: string format: uuid in: path name: agent_id required: true description: The agent's unique identifier - schema: type: string format: uuid in: path name: build_id required: true description: The build's unique identifier security: - bearerAuth: [] responses: '200': description: Default Response content: application/json: schema: type: object properties: build: type: object properties: id: type: string format: uuid copilot_id: type: string format: uuid agent_id: type: string format: uuid name: type: string revision_name: nullable: true type: string revision_description: nullable: true type: string config: nullable: true anyOf: - type: object properties: version: type: string enum: - v1 data: type: object properties: model: type: string temperature: nullable: true type: number minimum: 0 maximum: 2 max_output_tokens: nullable: true type: number minimum: 0 exclusiveMinimum: true top_p: nullable: true type: number minimum: 0 maximum: 1 store: nullable: true type: boolean tools: {} input: anyOf: - type: string - type: array items: type: object properties: role: type: string enum: - system - user - assistant content: anyOf: - type: string - type: array items: anyOf: - type: object properties: type: type: string enum: - input_text text: type: string required: - type - text additionalProperties: false - type: object properties: type: type: string enum: - input_image detail: nullable: true type: string enum: - low - high - auto file_id: nullable: true type: string url: nullable: true type: string required: - type additionalProperties: false - type: object properties: type: type: string enum: - input_file file_id: type: string required: - type - file_id additionalProperties: false type: nullable: true type: string enum: - message required: - role - content additionalProperties: false text: nullable: true type: object properties: format: nullable: true anyOf: - type: object properties: type: type: string enum: - text required: - type additionalProperties: false - type: object properties: type: type: string enum: - json_object required: - type additionalProperties: false additionalProperties: false files: default: [] nullable: true type: array items: type: string skills: default: [] nullable: true type: array items: type: string required: - model - tools - input - files - skills additionalProperties: false required: - version - data additionalProperties: false - type: object properties: version: type: string enum: - v2 description: Schema version discriminator — must be "v2" for the current schema data: type: object properties: models: type: object properties: agent: type: object properties: model: type: string enum: - claude-sonnet-5 - claude-sonnet-5[1m] - claude-opus-4-8 - claude-opus-4-8[1m] - d1-max - duvo-1-max - duvo-1-max-sonnet-1m - duvo-1-max-sonnet-4.5 - duvo-1-max-sonnet-4.5-1m - duvo-1-max-opus - duvo-1-max-opus-4.5 - gpt-4.1 - gpt-4o - gpt-4o-mini - gpt-5 - gpt-5.1 - claude-sonnet-4-20250514 - claude-sonnet-4-20250514[1m] - claude-sonnet-4-5-20250929 - claude-sonnet-4-5-20250929[1m] - claude-sonnet-4-6 - claude-sonnet-4-6[1m] - claude-opus-4-1-20250805 - claude-opus-4-5-20251101 - claude-opus-4-6 - claude-opus-4-6[1m] - claude-opus-4-7 - claude-opus-4-7[1m] description: Claude model identifier used for the primary agent loop required: - model additionalProperties: false description: Primary Claude agent model configuration browsing: type: object properties: provider: type: string enum: - google - anthropic description: Provider backing the browsing/computer-use model model: type: string enum: - gemini-2.5-pro - gemini-2.5-flash - gemini-3-pro-preview - claude-haiku-4-5 - claude-sonnet-4-5 - claude-opus-4-1 description: Model identifier for the browsing provider required: - provider - model additionalProperties: false description: Browsing/computer-use model configuration required: - agent - browsing additionalProperties: false description: Model configuration for each capability the agent uses input: anyOf: - type: string - type: array items: type: object properties: role: type: string enum: - system - user - assistant content: anyOf: - type: string - type: array items: anyOf: - type: object properties: type: type: string enum: - input_text text: type: string required: - type - text additionalProperties: false - type: object properties: type: type: string enum: - input_image detail: nullable: true type: string enum: - low - high - auto file_id: nullable: true type: string url: nullable: true type: string required: - type additionalProperties: false - type: object properties: type: type: string enum: - input_file file_id: type: string required: - type - file_id additionalProperties: false type: nullable: true type: string enum: - message required: - role - content additionalProperties: false description: Initial agent instructions — either a single system prompt string or a list of structured messages files: default: [] description: IDs of team files that should be available to the agent nullable: true type: array items: type: string skills: default: [] description: IDs of skills (team or system) that should be available to the agent nullable: true type: array items: type: string plugins: default: [] description: Plugins to load — either a built-in plugin name (e.g. "code-review") or a GitHub URL (e.g. "https://github.com/owner/repo") nullable: true type: array items: type: string subAgents: default: [] description: IDs of other agents (in the same team) to expose to this agent as Claude Code subagents. Each sub-agent runs with its own AOP and connections; the parent can delegate to them via the Agent tool. nullable: true type: array items: type: string format: uuid options: description: Optional runtime options controlling how the agent executes type: object properties: browserProvider: description: Browser infrastructure provider type: string enum: - browserbase - browser-use evaluationSchemaId: description: ID of the evaluation schema to apply to runs of this agent type: string benchmarkExpectedOutcomes: description: Expected outcomes used when running benchmark scenarios type: array items: type: object properties: description: type: string description: Human-readable description of the expected outcome criteria: type: string description: Pass/fail criteria used to evaluate the outcome required: - description - criteria additionalProperties: false additionalProperties: {} required: - models - input - files - skills - plugins - subAgents additionalProperties: false description: Agent configuration payload required: - version - data additionalProperties: false status: nullable: true type: string revision_number: nullable: true type: number parent_build_id: nullable: true type: string created_by: nullable: true type: string created_by_name: nullable: true type: string created_at: nullable: true type: string updated_at: nullable: true type: string schedules: type: array items: type: object properties: id: type: string build_id: type: string agent_id: type: string user_id: type: string enabled: type: boolean frequency: type: string enum: - every_5_minutes - every_15_minutes - hourly - daily - workday - weekly - monthly - custom time: nullable: true type: string timezone: type: string day: nullable: true type: string day_of_month: nullable: true type: number cron: nullable: true type: string source: nullable: true type: string task: nullable: true type: string recurring: nullable: true type: boolean auto_disabled_at: nullable: true type: string auto_disabled_reason: nullable: true type: string consecutive_missing_connection_failures: type: integer minimum: 0 maximum: 9007199254740991 first_missing_connection_failure_at: nullable: true type: string last_missing_connection_failure_at: nullable: true type: string created_at: type: string updated_at: type: string user_name: nullable: true type: string user_email: nullable: true type: string required: - id - build_id - agent_id - user_id - enabled - frequency - time - timezone - day - day_of_month - cron - source - task - recurring - auto_disabled_at - auto_disabled_reason - consecutive_missing_connection_failures - first_missing_connection_failure_at - last_missing_connection_failure_at - created_at - updated_at additionalProperties: false required: - id - copilot_id - agent_id - name - config - status - revision_number - parent_build_id - created_by - created_at - updated_at additionalProperties: false required: - build additionalProperties: false '400': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false '401': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false '404': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false '500': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false summary: Get Revision /v2/revisions/{build_id}: patch: operationId: updateRevision tags: - Revisions description: Update a revision's configuration, name, description, or handover targets. Returns the updated revision. requestBody: required: true content: application/json: schema: type: object properties: config: description: Build configuration object type: object additionalProperties: {} handoverTargetIds: description: Agent IDs that this agent can hand over work to type: array items: type: string format: uuid revision_name: description: Optional user-defined name for this revision. Pass null to clear. nullable: true type: string minLength: 1 maxLength: 80 revision_description: description: Optional user-defined description for this revision. Pass null to clear. nullable: true type: string maxLength: 500 parameters: - schema: type: string format: uuid in: path name: build_id required: true description: The build's unique identifier security: - bearerAuth: [] responses: '200': description: Default Response content: application/json: schema: type: object properties: build: type: object properties: id: type: string format: uuid copilot_id: type: string format: uuid agent_id: type: string format: uuid name: type: string revision_name: nullable: true type: string revision_description: nullable: true type: string config: nullable: true anyOf: - type: object properties: version: type: string enum: - v1 data: type: object properties: model: type: string temperature: nullable: true type: number minimum: 0 maximum: 2 max_output_tokens: nullable: true type: number minimum: 0 exclusiveMinimum: true top_p: nullable: true type: number minimum: 0 maximum: 1 store: nullable: true type: boolean tools: {} input: anyOf: - type: string - type: array items: type: object properties: role: type: string enum: - system - user - assistant content: anyOf: - type: string - type: array items: anyOf: - type: object properties: type: type: string enum: - input_text text: type: string required: - type - text additionalProperties: false - type: object properties: type: type: string enum: - input_image detail: nullable: true type: string enum: - low - high - auto file_id: nullable: true type: string url: nullable: true type: string required: - type additionalProperties: false - type: object properties: type: type: string enum: - input_file file_id: type: string required: - type - file_id additionalProperties: false type: nullable: true type: string enum: - message required: - role - content additionalProperties: false text: nullable: true type: object properties: format: nullable: true anyOf: - type: object properties: type: type: string enum: - text required: - type additionalProperties: false - type: object properties: type: type: string enum: - json_object required: - type additionalProperties: false additionalProperties: false files: default: [] nullable: true type: array items: type: string skills: default: [] nullable: true type: array items: type: string required: - model - tools - input - files - skills additionalProperties: false required: - version - data additionalProperties: false - type: object properties: version: type: string enum: - v2 description: Schema version discriminator — must be "v2" for the current schema data: type: object properties: models: type: object properties: agent: type: object properties: model: type: string enum: - claude-sonnet-5 - claude-sonnet-5[1m] - claude-opus-4-8 - claude-opus-4-8[1m] - d1-max - duvo-1-max - duvo-1-max-sonnet-1m - duvo-1-max-sonnet-4.5 - duvo-1-max-sonnet-4.5-1m - duvo-1-max-opus - duvo-1-max-opus-4.5 - gpt-4.1 - gpt-4o - gpt-4o-mini - gpt-5 - gpt-5.1 - claude-sonnet-4-20250514 - claude-sonnet-4-20250514[1m] - claude-sonnet-4-5-20250929 - claude-sonnet-4-5-20250929[1m] - claude-sonnet-4-6 - claude-sonnet-4-6[1m] - claude-opus-4-1-20250805 - claude-opus-4-5-20251101 - claude-opus-4-6 - claude-opus-4-6[1m] - claude-opus-4-7 - claude-opus-4-7[1m] description: Claude model identifier used for the primary agent loop required: - model additionalProperties: false description: Primary Claude agent model configuration browsing: type: object properties: provider: type: string enum: - google - anthropic description: Provider backing the browsing/computer-use model model: type: string enum: - gemini-2.5-pro - gemini-2.5-flash - gemini-3-pro-preview - claude-haiku-4-5 - claude-sonnet-4-5 - claude-opus-4-1 description: Model identifier for the browsing provider required: - provider - model additionalProperties: false description: Browsing/computer-use model configuration required: - agent - browsing additionalProperties: false description: Model configuration for each capability the agent uses input: anyOf: - type: string - type: array items: type: object properties: role: type: string enum: - system - user - assistant content: anyOf: - type: string - type: array items: anyOf: - type: object properties: type: type: string enum: - input_text text: type: string required: - type - text additionalProperties: false - type: object properties: type: type: string enum: - input_image detail: nullable: true type: string enum: - low - high - auto file_id: nullable: true type: string url: nullable: true type: string required: - type additionalProperties: false - type: object properties: type: type: string enum: - input_file file_id: type: string required: - type - file_id additionalProperties: false type: nullable: true type: string enum: - message required: - role - content additionalProperties: false description: Initial agent instructions — either a single system prompt string or a list of structured messages files: default: [] description: IDs of team files that should be available to the agent nullable: true type: array items: type: string skills: default: [] description: IDs of skills (team or system) that should be available to the agent nullable: true type: array items: type: string plugins: default: [] description: Plugins to load — either a built-in plugin name (e.g. "code-review") or a GitHub URL (e.g. "https://github.com/owner/repo") nullable: true type: array items: type: string subAgents: default: [] description: IDs of other agents (in the same team) to expose to this agent as Claude Code subagents. Each sub-agent runs with its own AOP and connections; the parent can delegate to them via the Agent tool. nullable: true type: array items: type: string format: uuid options: description: Optional runtime options controlling how the agent executes type: object properties: browserProvider: description: Browser infrastructure provider type: string enum: - browserbase - browser-use evaluationSchemaId: description: ID of the evaluation schema to apply to runs of this agent type: string benchmarkExpectedOutcomes: description: Expected outcomes used when running benchmark scenarios type: array items: type: object properties: description: type: string description: Human-readable description of the expected outcome criteria: type: string description: Pass/fail criteria used to evaluate the outcome required: - description - criteria additionalProperties: false additionalProperties: {} required: - models - input - files - skills - plugins - subAgents additionalProperties: false description: Agent configuration payload required: - version - data additionalProperties: false status: nullable: true type: string revision_number: nullable: true type: number parent_build_id: nullable: true type: string created_by: nullable: true type: string created_by_name: nullable: true type: string created_at: nullable: true type: string updated_at: nullable: true type: string schedules: type: array items: type: object properties: id: type: string build_id: type: string agent_id: type: string user_id: type: string enabled: type: boolean frequency: type: string enum: - every_5_minutes - every_15_minutes - hourly - daily - workday - weekly - monthly - custom time: nullable: true type: string timezone: type: string day: nullable: true type: string day_of_month: nullable: true type: number cron: nullable: true type: string source: nullable: true type: string task: nullable: true type: string recurring: nullable: true type: boolean auto_disabled_at: nullable: true type: string auto_disabled_reason: nullable: true type: string consecutive_missing_connection_failures: type: integer minimum: 0 maximum: 9007199254740991 first_missing_connection_failure_at: nullable: true type: string last_missing_connection_failure_at: nullable: true type: string created_at: type: string updated_at: type: string user_name: nullable: true type: string user_email: nullable: true type: string required: - id - build_id - agent_id - user_id - enabled - frequency - time - timezone - day - day_of_month - cron - source - task - recurring - auto_disabled_at - auto_disabled_reason - consecutive_missing_connection_failures - first_missing_connection_failure_at - last_missing_connection_failure_at - created_at - updated_at additionalProperties: false required: - id - copilot_id - agent_id - name - config - status - revision_number - parent_build_id - created_by - created_at - updated_at additionalProperties: false description: The updated build required: - build additionalProperties: false '400': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false '401': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false '403': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false '404': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false '409': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false '500': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false summary: Update Revision /v2/revisions/{build_id}/promote: post: operationId: promoteRevision tags: - Revisions description: Promote a draft or historic revision to the live version. The live revision is the one used by triggers and new runs. Fails if the revision is already live, or if a draft revision still has an active builder run. requestBody: required: true content: application/json: schema: type: object properties: revision_name: description: Optional display name to set on the promoted revision. type: string minLength: 1 maxLength: 80 revision_description: description: Optional description for the promoted revision. Pass null to clear an existing description. nullable: true type: string maxLength: 500 parameters: - schema: type: string format: uuid in: path name: build_id required: true description: The build's unique identifier security: - bearerAuth: [] responses: '200': description: Default Response content: application/json: schema: type: object properties: success: type: boolean required: - success additionalProperties: false '400': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false '401': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false '403': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false '404': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false '409': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false '500': description: Default Response content: application/json: schema: type: object properties: error: type: string message: type: string required: - error additionalProperties: false summary: Promote Revision components: securitySchemes: bearerAuth: type: http scheme: bearer description: API key authentication. Get your API key from the Duvo dashboard.