Skip to main content

AI Resources

Use these endpoints to create AI resources and attach them to agents.

AI resources define the model and instructions an agent uses. A common workflow is:

  1. Create an AI resource with POST /v1/ai.
  2. Attach it to an agent with PUT /v1/agents/{agentId}/ai.
  3. Use GET /v1/agents/{agentId}/ai to confirm the agent's current AI resource.

All endpoints require:

  • Authorization: Bearer $PD_ACCESS_TOKEN

AI Resource Object

{
"id": "cmai123resource",
"name": "Support AI",
"provider": "OPENAI",
"type": "openai",
"model": "gpt-4.1-mini",
"instructions": "Answer customer support questions clearly.",
"updatedAt": "2026-05-02T10:00:00.000Z"
}

Field Notes

FieldDescription
idPredictable Dialogs AI resource ID. Use this value when attaching the AI resource to an agent.
modelModel used by the AI resource.
instructionsInstructions used by the AI resource.

List AI Resources

GET https://app.predictabledialogs.com/v1/ai

Returns all AI resources available for your access token context.

Example Request

curl https://app.predictabledialogs.com/v1/ai \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $PD_ACCESS_TOKEN"

Returns

{
"data": [
{
"id": "cmai123resource",
"name": "Support AI",
"provider": "OPENAI",
"type": "openai",
"model": "gpt-4.1-mini",
"instructions": "Answer customer support questions clearly.",
"updatedAt": "2026-05-02T10:00:00.000Z"
}
]
}

Create AI Resource

POST https://app.predictabledialogs.com/v1/ai

Creates a new AI resource.

Request Body

{
"name": "Support AI",
"instructions": "Answer customer support questions clearly."
}

Body Parameters

ParameterTypeRequiredDescription
namestringNoDisplay name for the AI resource. Defaults to AI when omitted.
instructionsstringNoInstructions used by the AI resource.
apiKeyValuestringNoOpenAI API key to use for this resource.
modelstringNoModel to use when apiKeyValue is provided.

Custom model selection requires apiKeyValue in the same request. If apiKeyValue is omitted, Predictable Dialogs uses platform defaults and creates the resource with gpt-4.1-mini; any submitted model value is not applied.

Example Request

curl -X POST https://app.predictabledialogs.com/v1/ai \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $PD_ACCESS_TOKEN" \
-d '{
"name": "Support AI",
"instructions": "Answer customer support questions clearly."
}'

This creates an AI resource using gpt-4.1-mini.

Example With API Key And Custom Model

curl -X POST https://app.predictabledialogs.com/v1/ai \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $PD_ACCESS_TOKEN" \
-d '{
"name": "Support AI",
"instructions": "Answer customer support questions clearly.",
"apiKeyValue": "sk-...",
"model": "gpt-4.1"
}'

Returns

{
"data": {
"id": "cmai123resource",
"name": "Support AI",
"provider": "OPENAI",
"type": "openai",
"model": "gpt-4.1",
"instructions": "Answer customer support questions clearly.",
"updatedAt": "2026-05-02T10:00:00.000Z"
}
}

Get AI Resource

GET https://app.predictabledialogs.com/v1/ai/{aiId}

Gets a single AI resource by aiId.

Example Request

curl https://app.predictabledialogs.com/v1/ai/cmai123resource \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $PD_ACCESS_TOKEN"

Returns

{
"data": {
"id": "cmai123resource",
"name": "Support AI",
"provider": "OPENAI",
"type": "openai",
"model": "gpt-4.1-mini",
"instructions": "Answer customer support questions clearly.",
"updatedAt": "2026-05-02T10:00:00.000Z"
}
}

Update AI Resource

PATCH https://app.predictabledialogs.com/v1/ai/{aiId}

Updates an AI resource.

Request Body

{
"name": "Updated Support AI",
"instructions": "Answer customer support questions in a concise tone."
}

Body Parameters

ParameterTypeRequiredDescription
namestringNoNew display name. When provided, it must be a non-empty string.
instructionsstringNoNew instructions for the AI resource.

The model cannot be changed with this endpoint.

Example Request

curl -X PATCH https://app.predictabledialogs.com/v1/ai/cmai123resource \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $PD_ACCESS_TOKEN" \
-d '{
"name": "Updated Support AI",
"instructions": "Answer customer support questions in a concise tone."
}'

Returns

{
"data": {
"id": "cmai123resource",
"name": "Updated Support AI",
"provider": "OPENAI",
"type": "openai",
"model": "gpt-4.1-mini",
"instructions": "Answer customer support questions in a concise tone.",
"updatedAt": "2026-05-02T10:05:00.000Z"
}
}

Delete AI Resource

DELETE https://app.predictabledialogs.com/v1/ai/{aiId}

Deletes an AI resource.

AI resources attached to agents are not deleted. To delete an attached AI resource, first detach it with the Detach AI Resource From Agent endpoint. If the resource is still attached, deletedAssistants is empty and status contains a message explaining where the resource is attached.

Example Request

curl -X DELETE https://app.predictabledialogs.com/v1/ai/cmai123resource \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $PD_ACCESS_TOKEN"

Returns

{
"ok": true,
"deletedAssistants": [
{
"id": "cmai123resource",
"name": "Support AI"
}
],
"status": []
}

Get Agent AI Resource

GET https://app.predictabledialogs.com/v1/agents/{agentId}/ai

Gets the AI resource currently attached to an agent.

Example Request

curl https://app.predictabledialogs.com/v1/agents/cmabc123agent/ai \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $PD_ACCESS_TOKEN"

Returns

{
"data": {
"aiId": "cmai123resource",
"name": "Support AI",
"provider": "OPENAI",
"type": "openai",
"model": "gpt-4.1-mini"
}
}

If the agent does not have an AI resource attached, data is null.

Attach AI Resource To Agent

PUT https://app.predictabledialogs.com/v1/agents/{agentId}/ai

Attaches an AI resource to an agent. If another AI resource is already attached, it is replaced.

Request Body

{
"aiId": "cmai123resource"
}

Example Request

curl -X PUT https://app.predictabledialogs.com/v1/agents/cmabc123agent/ai \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $PD_ACCESS_TOKEN" \
-d '{
"aiId": "cmai123resource"
}'

Returns

{
"data": {
"aiId": "cmai123resource",
"name": "Support AI",
"provider": "OPENAI",
"type": "openai",
"model": "gpt-4.1-mini"
}
}

Detach AI Resource From Agent

DELETE https://app.predictabledialogs.com/v1/agents/{agentId}/ai

Removes the AI resource attached to an agent.

Example Request

curl -X DELETE https://app.predictabledialogs.com/v1/agents/cmabc123agent/ai \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $PD_ACCESS_TOKEN"

Returns

{
"data": null
}