Skip to content

AI Agents

All operations require authentication.

16 operationsv2/publicCloud/project
Agent setup

List AI agentsProduction

GET
/v2/publicCloud/project/{projectId}/ai/agents/agent

Path parameters

projectId
required
string

Project ID

Headers

X-Pagination-Cursor
string

Pagination cursor

X-Pagination-Size
integer

Pagination size

Response

200Agent[]successful operation
createdAt
read-only
stringdate-time

Date of the AI agent creation

currentState
read-only
AgentCurrentState

Current state of the AI agent

id
read-only
string

Unique identifier of the AI agent

resourceStatus
read-only
ResourceStatusEnum

Reflects the readiness of the AI agent: READY, SUSPENDED when it is paused, or DELETING on the response to its deletion

ValuesCREATINGCREATION_PLANNEDDELETINGERROROUT_OF_SYNCREADYSUSPENDEDUNKNOWNUPDATING
targetSpec
read-only
AgentTargetSpec

Last target specification of the AI agent

updatedAt
read-only
stringdate-time

Date of the last AI agent update

Example uses projectId = string

$ curl https://api.eu.ovhcloud.com/v2/publicCloud/project/{projectId}/ai/agents/agent \
  -H "authorization: Bearer $OVH_TOKEN"
ResponseExample
[ { "createdAt": "2024-01-01T12:00:00Z", "currentState": { "aiEndpoints": true, "aiEndpointsIntegratedAuth": true, "enabled": true, "endpointUrl": "string", "name": "string" }, "id": "string", "resourceStatus": "CREATING", "targetSpec": { "enabled": true, "name": "string" }, "updatedAt": "2024-01-01T12:00:00Z" }]

Create an AI agentProduction

POST
/v2/publicCloud/project/{projectId}/ai/agents/agent

Creates an AI agent: a hosted assistant that answers on its own URL, given by currentState.endpointUrl, and reached with a token from the token action. An agent runs a model with a persona, plus whatever tools, memory and channels its configuration gives it. That configuration can come from a ready-made one published by OVHcloud, from a template of your own, or from settings supplied here — or from none of them, leaving an agent that cannot answer until it is given a model. Parts of it that OVHcloud manages are rejected here; the globalSettings preset says which. This is the only point at which this API sets an agent's configuration: from here on the agent holds its own and is configured through its endpoint. Create it paused to finish preparing it before it answers anyone.

Path parameters

projectId
required
string

Project ID

Request body (required)

targetSpec
required
AgentCreationTargetSpec

Desired specification of the AI agent to create

Response

200Agentsuccessful operation
createdAt
read-only
stringdate-time

Date of the AI agent creation

currentState
read-only
AgentCurrentState

Current state of the AI agent

id
read-only
string

Unique identifier of the AI agent

resourceStatus
read-only
ResourceStatusEnum

Reflects the readiness of the AI agent: READY, SUSPENDED when it is paused, or DELETING on the response to its deletion

ValuesCREATINGCREATION_PLANNEDDELETINGERROROUT_OF_SYNCREADYSUSPENDEDUNKNOWNUPDATING
targetSpec
read-only
AgentTargetSpec

Last target specification of the AI agent

updatedAt
read-only
stringdate-time

Date of the last AI agent update

Example uses projectId = string

$ curl https://api.eu.ovhcloud.com/v2/publicCloud/project/{projectId}/ai/agents/agent \
  -H "authorization: Bearer $OVH_TOKEN"
ResponseExample
{ "createdAt": "2024-01-01T12:00:00Z", "currentState": { "aiEndpoints": true, "aiEndpointsIntegratedAuth": true, "enabled": true, "endpointUrl": "string", "name": "string" }, "id": "string", "resourceStatus": "CREATING", "targetSpec": { "enabled": true, "name": "string" }, "updatedAt": "2024-01-01T12:00:00Z"}

Get an AI agentProduction

GET
/v2/publicCloud/project/{projectId}/ai/agents/agent/{agentId}

Path parameters

agentId
required
string

Agent ID

projectId
required
string

Project ID

Response

200Agentsuccessful operation
createdAt
read-only
stringdate-time

Date of the AI agent creation

currentState
read-only
AgentCurrentState

Current state of the AI agent

id
read-only
string

Unique identifier of the AI agent

resourceStatus
read-only
ResourceStatusEnum

Reflects the readiness of the AI agent: READY, SUSPENDED when it is paused, or DELETING on the response to its deletion

ValuesCREATINGCREATION_PLANNEDDELETINGERROROUT_OF_SYNCREADYSUSPENDEDUNKNOWNUPDATING
targetSpec
read-only
AgentTargetSpec

Last target specification of the AI agent

updatedAt
read-only
stringdate-time

Date of the last AI agent update

Example uses agentId = string, projectId = string

$ curl https://api.eu.ovhcloud.com/v2/publicCloud/project/{projectId}/ai/agents/agent/{agentId} \
  -H "authorization: Bearer $OVH_TOKEN"
ResponseExample
{ "createdAt": "2024-01-01T12:00:00Z", "currentState": { "aiEndpoints": true, "aiEndpointsIntegratedAuth": true, "enabled": true, "endpointUrl": "string", "name": "string" }, "id": "string", "resourceStatus": "CREATING", "targetSpec": { "enabled": true, "name": "string" }, "updatedAt": "2024-01-01T12:00:00Z"}

Update an AI agentProduction

PUT
/v2/publicCloud/project/{projectId}/ai/agents/agent/{agentId}

targetSpec.enabled is mandatory, including on an update whose only intent is a rename. Restating the agent's current running state changes nothing; stating the other one pauses or resumes it. targetSpec.name is optional: omitting it, or restating the current name, leaves it untouched. Any other name renames the agent and redeploys it, keeping its identifier, its access tokens, its configuration and its data, and re-applying its paused state. A name another agent in the project already holds is rejected. The configuration is not settable here; it is read and changed through the agent itself.

Path parameters

agentId
required
string

Agent ID

projectId
required
string

Project ID

Request body (required)

targetSpec
required
AgentUpdateTargetSpec

Desired specification to reconcile the AI agent toward

Response

200Agentsuccessful operation
createdAt
read-only
stringdate-time

Date of the AI agent creation

currentState
read-only
AgentCurrentState

Current state of the AI agent

id
read-only
string

Unique identifier of the AI agent

resourceStatus
read-only
ResourceStatusEnum

Reflects the readiness of the AI agent: READY, SUSPENDED when it is paused, or DELETING on the response to its deletion

ValuesCREATINGCREATION_PLANNEDDELETINGERROROUT_OF_SYNCREADYSUSPENDEDUNKNOWNUPDATING
targetSpec
read-only
AgentTargetSpec

Last target specification of the AI agent

updatedAt
read-only
stringdate-time

Date of the last AI agent update

Example uses agentId = string, projectId = string

$ curl https://api.eu.ovhcloud.com/v2/publicCloud/project/{projectId}/ai/agents/agent/{agentId} \
  -H "authorization: Bearer $OVH_TOKEN"
ResponseExample
{ "createdAt": "2024-01-01T12:00:00Z", "currentState": { "aiEndpoints": true, "aiEndpointsIntegratedAuth": true, "enabled": true, "endpointUrl": "string", "name": "string" }, "id": "string", "resourceStatus": "CREATING", "targetSpec": { "enabled": true, "name": "string" }, "updatedAt": "2024-01-01T12:00:00Z"}

Delete an AI agentProduction

DELETE
/v2/publicCloud/project/{projectId}/ai/agents/agent/{agentId}

Deletion is asynchronous: the response describes the agent with resourceStatus: DELETING.

Path parameters

agentId
required
string

Agent ID

projectId
required
string

Project ID

Response

200Agentsuccessful operation
createdAt
read-only
stringdate-time

Date of the AI agent creation

currentState
read-only
AgentCurrentState

Current state of the AI agent

id
read-only
string

Unique identifier of the AI agent

resourceStatus
read-only
ResourceStatusEnum

Reflects the readiness of the AI agent: READY, SUSPENDED when it is paused, or DELETING on the response to its deletion

ValuesCREATINGCREATION_PLANNEDDELETINGERROROUT_OF_SYNCREADYSUSPENDEDUNKNOWNUPDATING
targetSpec
read-only
AgentTargetSpec

Last target specification of the AI agent

updatedAt
read-only
stringdate-time

Date of the last AI agent update

Example uses agentId = string, projectId = string

$ curl https://api.eu.ovhcloud.com/v2/publicCloud/project/{projectId}/ai/agents/agent/{agentId} \
  -H "authorization: Bearer $OVH_TOKEN"
ResponseExample
{ "createdAt": "2024-01-01T12:00:00Z", "currentState": { "aiEndpoints": true, "aiEndpointsIntegratedAuth": true, "enabled": true, "endpointUrl": "string", "name": "string" }, "id": "string", "resourceStatus": "CREATING", "targetSpec": { "enabled": true, "name": "string" }, "updatedAt": "2024-01-01T12:00:00Z"}

Redeploy an AI agent, refreshing its runtime while keeping its dataProduction

POST
/v2/publicCloud/project/{projectId}/ai/agents/agent/{agentId}/redeploy

Refreshes the agent's runtime without touching its configuration or the data it holds.

Path parameters

agentId
required
string

Agent ID

projectId
required
string

Project ID

Response

200Agentsuccessful operation
createdAt
read-only
stringdate-time

Date of the AI agent creation

currentState
read-only
AgentCurrentState

Current state of the AI agent

id
read-only
string

Unique identifier of the AI agent

resourceStatus
read-only
ResourceStatusEnum

Reflects the readiness of the AI agent: READY, SUSPENDED when it is paused, or DELETING on the response to its deletion

ValuesCREATINGCREATION_PLANNEDDELETINGERROROUT_OF_SYNCREADYSUSPENDEDUNKNOWNUPDATING
targetSpec
read-only
AgentTargetSpec

Last target specification of the AI agent

updatedAt
read-only
stringdate-time

Date of the last AI agent update

Example uses agentId = string, projectId = string

$ curl https://api.eu.ovhcloud.com/v2/publicCloud/project/{projectId}/ai/agents/agent/{agentId}/redeploy \
  -H "authorization: Bearer $OVH_TOKEN"
ResponseExample
{ "createdAt": "2024-01-01T12:00:00Z", "currentState": { "aiEndpoints": true, "aiEndpointsIntegratedAuth": true, "enabled": true, "endpointUrl": "string", "name": "string" }, "id": "string", "resourceStatus": "CREATING", "targetSpec": { "enabled": true, "name": "string" }, "updatedAt": "2024-01-01T12:00:00Z"}

Issue a scoped access token for an AI agentProduction

POST
/v2/publicCloud/project/{projectId}/ai/agents/agent/{agentId}/token

Returns a bearer token to present to the agent at currentState.endpointUrl. The token is returned once, here, and is never readable afterwards. Both body fields are optional: send {} for the defaults, which are the VIEWER role and the agent's own default lifetime. A lifetime longer than the agent's own maximum is rejected.

Path parameters

agentId
required
string

Agent ID

projectId
required
string

Project ID

Request body (required)

lifetimeSeconds
integer

Token lifetime in seconds. Defaults to the agent's default.

role
AgentTokenRoleEnum

Role granted to the minted token. Defaults to VIEWER.

ValuesADMINOPERATORUSERVIEWER

Response

200AgentTokensuccessful operation
expiresAt
read-only
stringdate-time

Expiration date of the token. Null when the token does not expire.

role
read-only
AgentTokenRoleEnum

Role granted to the token

ValuesADMINOPERATORUSERVIEWER
token
read-only
string

Bearer token used to authenticate against the AI agent. Returned only once, at mint time.

Example uses agentId = string, projectId = string

$ curl https://api.eu.ovhcloud.com/v2/publicCloud/project/{projectId}/ai/agents/agent/{agentId}/token \
  -H "authorization: Bearer $OVH_TOKEN"
ResponseExample
{ "expiresAt": "2024-01-01T12:00:00Z", "role": "ADMIN", "token": "string"}

Get the AI agent configuration settings fixed by OVHcloudProduction

GET
/v2/publicCloud/project/{projectId}/ai/agents/preset/globalSettings

Part of an AI agent's configuration is managed by OVHcloud rather than by you: how callers authenticate to the agent, and whether the agent can run code. This route says which parts those are, so a configuration can be prepared knowing what will be accepted — anything OVHcloud manages is rejected if you set it yourself, whether on an agent or on a template. What it reports does not change from one agent to the next.

Path parameters

projectId
required
string

Project ID

Response

200GlobalSettingssuccessful operation
agentConfig
read-only
GlobalAgentConfig

What this deployment reserves of, and offers of, an agent's own configuration

Example uses projectId = string

$ curl https://api.eu.ovhcloud.com/v2/publicCloud/project/{projectId}/ai/agents/preset/globalSettings \
  -H "authorization: Bearer $OVH_TOKEN"
ResponseExample
{ "agentConfig": { "auth": { "managed": true }, "exec": { "enabled": true } }}

Get the OVHcloud AI Endpoints provider presetProduction

GET
/v2/publicCloud/project/{projectId}/ai/agents/preset/model/aiEndpointsProvider

States whether the OVHcloud AI Endpoints provider preset can be selected, whether OVHcloud provisions its credential so the caller need not supply one, the base URL whose /models sub-path lists the models available, and the model used when the caller names none.

Path parameters

projectId
required
string

Project ID

Response

200AIEndpointsPresetsuccessful operation
apiBase
read-only
string

OpenAI-compatible base URL, published so a client can list models from its /models sub-path

defaultModel
read-only
string

Model seeded when the caller states none. Empty when this deployment states no default.

enabled
read-only
boolean

Whether the OVHcloud AI Endpoints provider preset is available on this deployment

integratedAuth
read-only
boolean

Whether OVHcloud provisions the AI Endpoints credential for the agent, so the caller does not have to supply one

Example uses projectId = string

$ curl https://api.eu.ovhcloud.com/v2/publicCloud/project/{projectId}/ai/agents/preset/model/aiEndpointsProvider \
  -H "authorization: Bearer $OVH_TOKEN"
ResponseExample
{ "apiBase": "string", "defaultModel": "string", "enabled": true, "integratedAuth": true}

List built-in AI agent template presetsProduction

GET
/v2/publicCloud/project/{projectId}/ai/agents/preset/template

Presets are ready-made configurations OVHcloud publishes, offered alongside the templates a caller writes for themselves. Pass a preset's id as targetSpec.template.id on an agent creation to build an agent from it. Identifiers carry a reserved prefix, so a client can tell a preset from a template of its own.

Path parameters

projectId
required
string

Project ID

Headers

X-Pagination-Cursor
string

Pagination cursor

X-Pagination-Size
integer

Pagination size

Response

200TemplatePreset[]successful operation
aiEndpoints
read-only
boolean

Whether an agent created from this preset uses the OVHcloud AI Endpoints provider preset

aiEndpointsIntegratedAuth
read-only
boolean

Whether the AI Endpoints credential is minted by this service rather than supplied by the caller

description
read-only
string

What this preset is for. Empty when the deployment states none.

id
read-only
string

Identifier to pass as targetSpec.template.id when creating an agent from this preset

name
read-only
string

Human-readable name of the preset

Example uses projectId = string

$ curl https://api.eu.ovhcloud.com/v2/publicCloud/project/{projectId}/ai/agents/preset/template \
  -H "authorization: Bearer $OVH_TOKEN"
ResponseExample
[ { "aiEndpoints": true, "aiEndpointsIntegratedAuth": true, "description": "string", "id": "string", "name": "string" }]

Get an AI agent template presetProduction

GET
/v2/publicCloud/project/{projectId}/ai/agents/preset/template/{templatePresetId}

A preset is a ready-made configuration OVHcloud publishes, offered alongside the templates a caller writes for themselves. Pass its id as targetSpec.template.id on an agent creation to build an agent from it. The identifier carries a reserved prefix, so a client can tell a preset from a template of its own.

Path parameters

projectId
required
string

Project ID

templatePresetId
required
string

Template preset ID

Response

200TemplatePresetsuccessful operation
aiEndpoints
read-only
boolean

Whether an agent created from this preset uses the OVHcloud AI Endpoints provider preset

aiEndpointsIntegratedAuth
read-only
boolean

Whether the AI Endpoints credential is minted by this service rather than supplied by the caller

description
read-only
string

What this preset is for. Empty when the deployment states none.

id
read-only
string

Identifier to pass as targetSpec.template.id when creating an agent from this preset

name
read-only
string

Human-readable name of the preset

Example uses projectId = string, templatePresetId = string

$ curl https://api.eu.ovhcloud.com/v2/publicCloud/project/{projectId}/ai/agents/preset/template/{templatePresetId} \
  -H "authorization: Bearer $OVH_TOKEN"
ResponseExample
{ "aiEndpoints": true, "aiEndpointsIntegratedAuth": true, "description": "string", "id": "string", "name": "string"}

List AI agent templatesProduction

GET
/v2/publicCloud/project/{projectId}/ai/agents/template

The ready-made configurations OVHcloud publishes are absent from this list. They are served by the preset/template node.

Path parameters

projectId
required
string

Project ID

Headers

X-Pagination-Cursor
string

Pagination cursor

X-Pagination-Size
integer

Pagination size

Response

200Template[]successful operation
createdAt
read-only
stringdate-time

Date of the template creation

id
read-only
string

Unique identifier of the template

resourceStatus
read-only
ResourceStatusEnum

Reflects the readiness of the template: READY, or DELETING on the response to its deletion

ValuesCREATINGCREATION_PLANNEDDELETINGERROROUT_OF_SYNCREADYSUSPENDEDUNKNOWNUPDATING
source
read-only
TemplateSourceEnum

Distinguishes built-in (code-defined) from user-authored templates

ValuesBUILTINUSER
targetSpec
read-only
TemplateTargetSpec

Desired specification to replace the template with

updatedAt
read-only
stringdate-time

Date of the last template update

Example uses projectId = string

$ curl https://api.eu.ovhcloud.com/v2/publicCloud/project/{projectId}/ai/agents/template \
  -H "authorization: Bearer $OVH_TOKEN"
ResponseExample
[ { "createdAt": "2024-01-01T12:00:00Z", "id": "string", "resourceStatus": "CREATING", "source": "BUILTIN", "targetSpec": { "config": { "agent": { "name": "string" }, "auth": { "kagentJwt": { "allowUnlimited": true, "enabled": true, "maxTtlSeconds": 0, "secretB64": "string" }, "mode": "KAGENT_JWT", "oauth2": { "audience": "string", "issuer": "string", "jwksUri": "string", "ownerSub": "string", "requiredScopes": [ null ] } }, "builtins": { "network": true, "search": true, "searchApiKey": "string", "searchProvider": "string", "toolsDeny": [ "string" ], "wizard": true }, "channels": { "telegram": { "botToken": "string", "enabled": true, "webhookSecret": "string" }, "webex": { "accessToken": "string", "enabled": true, "webhookSecret": "string" } }, "exec": { "apiKey": "string", "autoSuspendIdleSeconds": 0, "baseUrl": "string", "defaultImage": "string", "enabled": true }, "llm": { "failover": { "on": [ null ] }, "fallbacks": [ { "maxTokens": null, "model": null, "providerId": null, "temperature": null } ], "maxContextMessages": 0, "maxTokens": 0, "model": "string", "providerId": "string", "temperature": 0, "vision": { "maxTokens": 0, "model": "string", "providerId": "string", "temperature": 0 } }, "mcpIndexer": { "embedderBatchSize": 0, "embedderModel": "string", "providerId": "string" }, "mcpServers": { "key": { "authKind": "BEARER", "enabled": true, "headers": { "key": null }, "mode": "FLAT", "url": "string" } }, "memory": { "consolidateOnTurnEnd": true, "consolidationCron": "string", "consolidationMaxRounds": 0, "corePredicates": [ "string" ], "embedderBatchSize": 0, "embedderModel": "string", "enabled": true, "gcCron": "string", "gcMaxSize": 0, "gcMinRetention": 0, "gcSoftLimit": 0, "halfLifeDays": 0, "identityPromotionThreshold": 0, "inferenceLlmFallback": true, "mergeSimilarityThreshold": 0, "providerId": "string", "ruleIdleGcDays": 0, "rulesMax": 0 }, "profiles": { "enabled": true, "items": { "key": { "description": null, "from": null, "maxTurns": null, "model": null, "soul": null, "tools": null } } }, "providers": { "key": { "aiEndpoints": true, "aiEndpointsIntegratedAuth": true, "apiBase": "string", "apiKey": "string", "displayName": "string", "models": { "key": null } } }, "relay": { "enabled": true, "maxMessagesPerRoom": 0, "maxRooms": 0, "roomCreation": "OPEN" }, "skills": { "builtins": [ "string" ], "enabled": true, "items": { "key": { "description": null, "instructions": null } } }, "soul": "string", "toolPermissions": { "judge": { "enabled": true, "model": "string", "providerId": "string", "soul": "string" }, "rules": [ { "action": null, "args": null, "phase": null, "reason": null, "result": null, "tool": null, "triggers": null, "unattended": null } ] }, "version": "string", "workspace": { "agentsPath": "string", "mount": [ { "accessKey": null, "backend": null, "bucket": null, "endpoint": null, "maxFileBytes": null, "maxFiles": null, "maxTotalBytes": null, "path": null, "prefix": null, "region": null, "ro": null, "secretKey": null } ], "scratchpad": { "cleanupCron": "string", "enabled": true, "maxDownloadBytes": 0, "path": "string", "retentionDays": 0, "spillBytes": 0 }, "skillsPath": "string", "zerofs": { "enabled": true, "mountPath": "string" } } }, "description": "string", "name": "string" }, "updatedAt": "2024-01-01T12:00:00Z" }]

Create an AI agent templateProduction

POST
/v2/publicCloud/project/{projectId}/ai/agents/template

Registers a reusable configuration that a later agent creation can name through targetSpec.template.id. A template stores a configuration. It runs nothing by itself. targetSpec.name must be unique within the project's namespace.

Path parameters

projectId
required
string

Project ID

Request body (required)

targetSpec
required
TemplateCreationTargetSpec

Desired specification of the template to create

Response

200Templatesuccessful operation
createdAt
read-only
stringdate-time

Date of the template creation

id
read-only
string

Unique identifier of the template

resourceStatus
read-only
ResourceStatusEnum

Reflects the readiness of the template: READY, or DELETING on the response to its deletion

ValuesCREATINGCREATION_PLANNEDDELETINGERROROUT_OF_SYNCREADYSUSPENDEDUNKNOWNUPDATING
source
read-only
TemplateSourceEnum

Distinguishes built-in (code-defined) from user-authored templates

ValuesBUILTINUSER
targetSpec
read-only
TemplateTargetSpec

Desired specification to replace the template with

updatedAt
read-only
stringdate-time

Date of the last template update

Example uses projectId = string

$ curl https://api.eu.ovhcloud.com/v2/publicCloud/project/{projectId}/ai/agents/template \
  -H "authorization: Bearer $OVH_TOKEN"
ResponseExample
{ "createdAt": "2024-01-01T12:00:00Z", "id": "string", "resourceStatus": "CREATING", "source": "BUILTIN", "targetSpec": { "config": { "agent": { "name": "string" }, "auth": { "kagentJwt": { "allowUnlimited": true, "enabled": true, "maxTtlSeconds": 0, "secretB64": "string" }, "mode": "KAGENT_JWT", "oauth2": { "audience": "string", "issuer": "string", "jwksUri": "string", "ownerSub": "string", "requiredScopes": [ "string" ] } }, "builtins": { "network": true, "search": true, "searchApiKey": "string", "searchProvider": "string", "toolsDeny": [ "string" ], "wizard": true }, "channels": { "telegram": { "botToken": "string", "enabled": true, "webhookSecret": "string" }, "webex": { "accessToken": "string", "enabled": true, "webhookSecret": "string" } }, "exec": { "apiKey": "string", "autoSuspendIdleSeconds": 0, "baseUrl": "string", "defaultImage": "string", "enabled": true }, "llm": { "failover": { "on": [ "AUTH" ] }, "fallbacks": [ { "maxTokens": 0, "model": "string", "providerId": "string", "temperature": 0 } ], "maxContextMessages": 0, "maxTokens": 0, "model": "string", "providerId": "string", "temperature": 0, "vision": { "maxTokens": 0, "model": "string", "providerId": "string", "temperature": 0 } }, "mcpIndexer": { "embedderBatchSize": 0, "embedderModel": "string", "providerId": "string" }, "mcpServers": { "key": { "authKind": "BEARER", "enabled": true, "headers": { "key": "string" }, "mode": "FLAT", "url": "string" } }, "memory": { "consolidateOnTurnEnd": true, "consolidationCron": "string", "consolidationMaxRounds": 0, "corePredicates": [ "string" ], "embedderBatchSize": 0, "embedderModel": "string", "enabled": true, "gcCron": "string", "gcMaxSize": 0, "gcMinRetention": 0, "gcSoftLimit": 0, "halfLifeDays": 0, "identityPromotionThreshold": 0, "inferenceLlmFallback": true, "mergeSimilarityThreshold": 0, "providerId": "string", "ruleIdleGcDays": 0, "rulesMax": 0 }, "profiles": { "enabled": true, "items": { "key": { "description": "string", "from": "string", "maxTurns": 0, "model": "string", "soul": "string", "tools": [ null ] } } }, "providers": { "key": { "aiEndpoints": true, "aiEndpointsIntegratedAuth": true, "apiBase": "string", "apiKey": "string", "displayName": "string", "models": { "key": { "contextWindow": null, "tools": null, "vision": null } } } }, "relay": { "enabled": true, "maxMessagesPerRoom": 0, "maxRooms": 0, "roomCreation": "OPEN" }, "skills": { "builtins": [ "string" ], "enabled": true, "items": { "key": { "description": "string", "instructions": "string" } } }, "soul": "string", "toolPermissions": { "judge": { "enabled": true, "model": "string", "providerId": "string", "soul": "string" }, "rules": [ { "action": "ALLOW", "args": { "key": null }, "phase": "AFTER", "reason": "string", "result": "string", "tool": "string", "triggers": [ null ], "unattended": "ALLOW" } ] }, "version": "string", "workspace": { "agentsPath": "string", "mount": [ { "accessKey": "string", "backend": "BLOB", "bucket": "string", "endpoint": "string", "maxFileBytes": 0, "maxFiles": 0, "maxTotalBytes": 0, "path": "string", "prefix": "string", "region": "string", "ro": true, "secretKey": "string" } ], "scratchpad": { "cleanupCron": "string", "enabled": true, "maxDownloadBytes": 0, "path": "string", "retentionDays": 0, "spillBytes": 0 }, "skillsPath": "string", "zerofs": { "enabled": true, "mountPath": "string" } } }, "description": "string", "name": "string" }, "updatedAt": "2024-01-01T12:00:00Z"}

Get an AI agent templateProduction

GET
/v2/publicCloud/project/{projectId}/ai/agents/template/{templateId}

The ready-made configurations OVHcloud publishes are not returned here. They are served by the preset/template node.

Path parameters

projectId
required
string

Project ID

templateId
required
string

Template ID

Response

200Templatesuccessful operation
createdAt
read-only
stringdate-time

Date of the template creation

id
read-only
string

Unique identifier of the template

resourceStatus
read-only
ResourceStatusEnum

Reflects the readiness of the template: READY, or DELETING on the response to its deletion

ValuesCREATINGCREATION_PLANNEDDELETINGERROROUT_OF_SYNCREADYSUSPENDEDUNKNOWNUPDATING
source
read-only
TemplateSourceEnum

Distinguishes built-in (code-defined) from user-authored templates

ValuesBUILTINUSER
targetSpec
read-only
TemplateTargetSpec

Desired specification to replace the template with

updatedAt
read-only
stringdate-time

Date of the last template update

Example uses projectId = string, templateId = string

$ curl https://api.eu.ovhcloud.com/v2/publicCloud/project/{projectId}/ai/agents/template/{templateId} \
  -H "authorization: Bearer $OVH_TOKEN"
ResponseExample
{ "createdAt": "2024-01-01T12:00:00Z", "id": "string", "resourceStatus": "CREATING", "source": "BUILTIN", "targetSpec": { "config": { "agent": { "name": "string" }, "auth": { "kagentJwt": { "allowUnlimited": true, "enabled": true, "maxTtlSeconds": 0, "secretB64": "string" }, "mode": "KAGENT_JWT", "oauth2": { "audience": "string", "issuer": "string", "jwksUri": "string", "ownerSub": "string", "requiredScopes": [ "string" ] } }, "builtins": { "network": true, "search": true, "searchApiKey": "string", "searchProvider": "string", "toolsDeny": [ "string" ], "wizard": true }, "channels": { "telegram": { "botToken": "string", "enabled": true, "webhookSecret": "string" }, "webex": { "accessToken": "string", "enabled": true, "webhookSecret": "string" } }, "exec": { "apiKey": "string", "autoSuspendIdleSeconds": 0, "baseUrl": "string", "defaultImage": "string", "enabled": true }, "llm": { "failover": { "on": [ "AUTH" ] }, "fallbacks": [ { "maxTokens": 0, "model": "string", "providerId": "string", "temperature": 0 } ], "maxContextMessages": 0, "maxTokens": 0, "model": "string", "providerId": "string", "temperature": 0, "vision": { "maxTokens": 0, "model": "string", "providerId": "string", "temperature": 0 } }, "mcpIndexer": { "embedderBatchSize": 0, "embedderModel": "string", "providerId": "string" }, "mcpServers": { "key": { "authKind": "BEARER", "enabled": true, "headers": { "key": "string" }, "mode": "FLAT", "url": "string" } }, "memory": { "consolidateOnTurnEnd": true, "consolidationCron": "string", "consolidationMaxRounds": 0, "corePredicates": [ "string" ], "embedderBatchSize": 0, "embedderModel": "string", "enabled": true, "gcCron": "string", "gcMaxSize": 0, "gcMinRetention": 0, "gcSoftLimit": 0, "halfLifeDays": 0, "identityPromotionThreshold": 0, "inferenceLlmFallback": true, "mergeSimilarityThreshold": 0, "providerId": "string", "ruleIdleGcDays": 0, "rulesMax": 0 }, "profiles": { "enabled": true, "items": { "key": { "description": "string", "from": "string", "maxTurns": 0, "model": "string", "soul": "string", "tools": [ null ] } } }, "providers": { "key": { "aiEndpoints": true, "aiEndpointsIntegratedAuth": true, "apiBase": "string", "apiKey": "string", "displayName": "string", "models": { "key": { "contextWindow": null, "tools": null, "vision": null } } } }, "relay": { "enabled": true, "maxMessagesPerRoom": 0, "maxRooms": 0, "roomCreation": "OPEN" }, "skills": { "builtins": [ "string" ], "enabled": true, "items": { "key": { "description": "string", "instructions": "string" } } }, "soul": "string", "toolPermissions": { "judge": { "enabled": true, "model": "string", "providerId": "string", "soul": "string" }, "rules": [ { "action": "ALLOW", "args": { "key": null }, "phase": "AFTER", "reason": "string", "result": "string", "tool": "string", "triggers": [ null ], "unattended": "ALLOW" } ] }, "version": "string", "workspace": { "agentsPath": "string", "mount": [ { "accessKey": "string", "backend": "BLOB", "bucket": "string", "endpoint": "string", "maxFileBytes": 0, "maxFiles": 0, "maxTotalBytes": 0, "path": "string", "prefix": "string", "region": "string", "ro": true, "secretKey": "string" } ], "scratchpad": { "cleanupCron": "string", "enabled": true, "maxDownloadBytes": 0, "path": "string", "retentionDays": 0, "spillBytes": 0 }, "skillsPath": "string", "zerofs": { "enabled": true, "mountPath": "string" } } }, "description": "string", "name": "string" }, "updatedAt": "2024-01-01T12:00:00Z"}

Update an AI agent templateProduction

PUT
/v2/publicCloud/project/{projectId}/ai/agents/template/{templateId}

Replaces the template's target spec as a whole: a field left out of the body is not preserved, and targetSpec.config is mandatory. Secrets inside that configuration read back as [REDACTED]. Send the sentinel back unchanged to keep the stored value. Configuration blocks OVHcloud reserves or does not offer are left out of a read, and a body that does not restate them drops them from the stored template. Agents already created from this template are unaffected, since a template is read once, at agent creation time.

Path parameters

projectId
required
string

Project ID

templateId
required
string

Template ID

Request body (required)

targetSpec
required
TemplateTargetSpec

Desired specification to replace the template with

Response

200Templatesuccessful operation
createdAt
read-only
stringdate-time

Date of the template creation

id
read-only
string

Unique identifier of the template

resourceStatus
read-only
ResourceStatusEnum

Reflects the readiness of the template: READY, or DELETING on the response to its deletion

ValuesCREATINGCREATION_PLANNEDDELETINGERROROUT_OF_SYNCREADYSUSPENDEDUNKNOWNUPDATING
source
read-only
TemplateSourceEnum

Distinguishes built-in (code-defined) from user-authored templates

ValuesBUILTINUSER
targetSpec
read-only
TemplateTargetSpec

Desired specification to replace the template with

updatedAt
read-only
stringdate-time

Date of the last template update

Example uses projectId = string, templateId = string

$ curl https://api.eu.ovhcloud.com/v2/publicCloud/project/{projectId}/ai/agents/template/{templateId} \
  -H "authorization: Bearer $OVH_TOKEN"
ResponseExample
{ "createdAt": "2024-01-01T12:00:00Z", "id": "string", "resourceStatus": "CREATING", "source": "BUILTIN", "targetSpec": { "config": { "agent": { "name": "string" }, "auth": { "kagentJwt": { "allowUnlimited": true, "enabled": true, "maxTtlSeconds": 0, "secretB64": "string" }, "mode": "KAGENT_JWT", "oauth2": { "audience": "string", "issuer": "string", "jwksUri": "string", "ownerSub": "string", "requiredScopes": [ "string" ] } }, "builtins": { "network": true, "search": true, "searchApiKey": "string", "searchProvider": "string", "toolsDeny": [ "string" ], "wizard": true }, "channels": { "telegram": { "botToken": "string", "enabled": true, "webhookSecret": "string" }, "webex": { "accessToken": "string", "enabled": true, "webhookSecret": "string" } }, "exec": { "apiKey": "string", "autoSuspendIdleSeconds": 0, "baseUrl": "string", "defaultImage": "string", "enabled": true }, "llm": { "failover": { "on": [ "AUTH" ] }, "fallbacks": [ { "maxTokens": 0, "model": "string", "providerId": "string", "temperature": 0 } ], "maxContextMessages": 0, "maxTokens": 0, "model": "string", "providerId": "string", "temperature": 0, "vision": { "maxTokens": 0, "model": "string", "providerId": "string", "temperature": 0 } }, "mcpIndexer": { "embedderBatchSize": 0, "embedderModel": "string", "providerId": "string" }, "mcpServers": { "key": { "authKind": "BEARER", "enabled": true, "headers": { "key": "string" }, "mode": "FLAT", "url": "string" } }, "memory": { "consolidateOnTurnEnd": true, "consolidationCron": "string", "consolidationMaxRounds": 0, "corePredicates": [ "string" ], "embedderBatchSize": 0, "embedderModel": "string", "enabled": true, "gcCron": "string", "gcMaxSize": 0, "gcMinRetention": 0, "gcSoftLimit": 0, "halfLifeDays": 0, "identityPromotionThreshold": 0, "inferenceLlmFallback": true, "mergeSimilarityThreshold": 0, "providerId": "string", "ruleIdleGcDays": 0, "rulesMax": 0 }, "profiles": { "enabled": true, "items": { "key": { "description": "string", "from": "string", "maxTurns": 0, "model": "string", "soul": "string", "tools": [ null ] } } }, "providers": { "key": { "aiEndpoints": true, "aiEndpointsIntegratedAuth": true, "apiBase": "string", "apiKey": "string", "displayName": "string", "models": { "key": { "contextWindow": null, "tools": null, "vision": null } } } }, "relay": { "enabled": true, "maxMessagesPerRoom": 0, "maxRooms": 0, "roomCreation": "OPEN" }, "skills": { "builtins": [ "string" ], "enabled": true, "items": { "key": { "description": "string", "instructions": "string" } } }, "soul": "string", "toolPermissions": { "judge": { "enabled": true, "model": "string", "providerId": "string", "soul": "string" }, "rules": [ { "action": "ALLOW", "args": { "key": null }, "phase": "AFTER", "reason": "string", "result": "string", "tool": "string", "triggers": [ null ], "unattended": "ALLOW" } ] }, "version": "string", "workspace": { "agentsPath": "string", "mount": [ { "accessKey": "string", "backend": "BLOB", "bucket": "string", "endpoint": "string", "maxFileBytes": 0, "maxFiles": 0, "maxTotalBytes": 0, "path": "string", "prefix": "string", "region": "string", "ro": true, "secretKey": "string" } ], "scratchpad": { "cleanupCron": "string", "enabled": true, "maxDownloadBytes": 0, "path": "string", "retentionDays": 0, "spillBytes": 0 }, "skillsPath": "string", "zerofs": { "enabled": true, "mountPath": "string" } } }, "description": "string", "name": "string" }, "updatedAt": "2024-01-01T12:00:00Z"}

Delete an AI agent templateProduction

DELETE
/v2/publicCloud/project/{projectId}/ai/agents/template/{templateId}

Deletion is asynchronous: the response describes the template with resourceStatus: DELETING. Agents already created from it are unaffected, since a template is read once, at agent creation time.

Path parameters

projectId
required
string

Project ID

templateId
required
string

Template ID

Response

200Templatesuccessful operation
createdAt
read-only
stringdate-time

Date of the template creation

id
read-only
string

Unique identifier of the template

resourceStatus
read-only
ResourceStatusEnum

Reflects the readiness of the template: READY, or DELETING on the response to its deletion

ValuesCREATINGCREATION_PLANNEDDELETINGERROROUT_OF_SYNCREADYSUSPENDEDUNKNOWNUPDATING
source
read-only
TemplateSourceEnum

Distinguishes built-in (code-defined) from user-authored templates

ValuesBUILTINUSER
targetSpec
read-only
TemplateTargetSpec

Desired specification to replace the template with

updatedAt
read-only
stringdate-time

Date of the last template update

Example uses projectId = string, templateId = string

$ curl https://api.eu.ovhcloud.com/v2/publicCloud/project/{projectId}/ai/agents/template/{templateId} \
  -H "authorization: Bearer $OVH_TOKEN"
ResponseExample
{ "createdAt": "2024-01-01T12:00:00Z", "id": "string", "resourceStatus": "CREATING", "source": "BUILTIN", "targetSpec": { "config": { "agent": { "name": "string" }, "auth": { "kagentJwt": { "allowUnlimited": true, "enabled": true, "maxTtlSeconds": 0, "secretB64": "string" }, "mode": "KAGENT_JWT", "oauth2": { "audience": "string", "issuer": "string", "jwksUri": "string", "ownerSub": "string", "requiredScopes": [ "string" ] } }, "builtins": { "network": true, "search": true, "searchApiKey": "string", "searchProvider": "string", "toolsDeny": [ "string" ], "wizard": true }, "channels": { "telegram": { "botToken": "string", "enabled": true, "webhookSecret": "string" }, "webex": { "accessToken": "string", "enabled": true, "webhookSecret": "string" } }, "exec": { "apiKey": "string", "autoSuspendIdleSeconds": 0, "baseUrl": "string", "defaultImage": "string", "enabled": true }, "llm": { "failover": { "on": [ "AUTH" ] }, "fallbacks": [ { "maxTokens": 0, "model": "string", "providerId": "string", "temperature": 0 } ], "maxContextMessages": 0, "maxTokens": 0, "model": "string", "providerId": "string", "temperature": 0, "vision": { "maxTokens": 0, "model": "string", "providerId": "string", "temperature": 0 } }, "mcpIndexer": { "embedderBatchSize": 0, "embedderModel": "string", "providerId": "string" }, "mcpServers": { "key": { "authKind": "BEARER", "enabled": true, "headers": { "key": "string" }, "mode": "FLAT", "url": "string" } }, "memory": { "consolidateOnTurnEnd": true, "consolidationCron": "string", "consolidationMaxRounds": 0, "corePredicates": [ "string" ], "embedderBatchSize": 0, "embedderModel": "string", "enabled": true, "gcCron": "string", "gcMaxSize": 0, "gcMinRetention": 0, "gcSoftLimit": 0, "halfLifeDays": 0, "identityPromotionThreshold": 0, "inferenceLlmFallback": true, "mergeSimilarityThreshold": 0, "providerId": "string", "ruleIdleGcDays": 0, "rulesMax": 0 }, "profiles": { "enabled": true, "items": { "key": { "description": "string", "from": "string", "maxTurns": 0, "model": "string", "soul": "string", "tools": [ null ] } } }, "providers": { "key": { "aiEndpoints": true, "aiEndpointsIntegratedAuth": true, "apiBase": "string", "apiKey": "string", "displayName": "string", "models": { "key": { "contextWindow": null, "tools": null, "vision": null } } } }, "relay": { "enabled": true, "maxMessagesPerRoom": 0, "maxRooms": 0, "roomCreation": "OPEN" }, "skills": { "builtins": [ "string" ], "enabled": true, "items": { "key": { "description": "string", "instructions": "string" } } }, "soul": "string", "toolPermissions": { "judge": { "enabled": true, "model": "string", "providerId": "string", "soul": "string" }, "rules": [ { "action": "ALLOW", "args": { "key": null }, "phase": "AFTER", "reason": "string", "result": "string", "tool": "string", "triggers": [ null ], "unattended": "ALLOW" } ] }, "version": "string", "workspace": { "agentsPath": "string", "mount": [ { "accessKey": "string", "backend": "BLOB", "bucket": "string", "endpoint": "string", "maxFileBytes": 0, "maxFiles": 0, "maxTotalBytes": 0, "path": "string", "prefix": "string", "region": "string", "ro": true, "secretKey": "string" } ], "scratchpad": { "cleanupCron": "string", "enabled": true, "maxDownloadBytes": 0, "path": "string", "retentionDays": 0, "spillBytes": 0 }, "skillsPath": "string", "zerofs": { "enabled": true, "mountPath": "string" } } }, "description": "string", "name": "string" }, "updatedAt": "2024-01-01T12:00:00Z"}