Every API here is available over the APIs.io API and to AI agents over MCP.
{
"components": {
"parameters": {},
"schemas": {
"ErrorResponse": {
"properties": {
"error": {
"type": "string"
}
},
"required": ["error"],
"type": "object"
}
},
"securitySchemes": {
"ApiKeyAuth": {
"in": "header",
"name": "x-api-key",
"type": "apiKey"
}
}
},
"info": {
"description": "Runtime API for workflow/chat/deployment/session execution.",
"title": "ABL Runtime API - public/conversation",
"version": "1.0.0",
"x-generated": "do not edit; source: route contracts"
},
"openapi": "3.0.3",
"paths": {
"/api/v1/chat/agent": {
"post": {
"deprecated": true,
"description": "Deprecated — prefer the deployment-scoped `/api/v1/project/{projectSlug}/{env}/agent/{agentSlug}/chat`. Executes a message through the ABL runtime with agent-backed chat; creates a session on first call or reuses one via sessionId.",
"operationId": "runtime.legacyChat.agent",
"requestBody": {
"content": {
"application/json": {
"schema": {
"properties": {
"agentId": {
"description": "Optional agent override",
"type": "string"
},
"attachmentIds": {
"items": {
"type": "string"
},
"type": "array"
},
"message": {
"description": "User message text",
"type": "string"
},
"metadata": {
"additionalProperties": {
"nullable": true
},
"type": "object"
},
"projectId": {
"description": "Project id",
"type": "string"
},
"sessionId": {
"description": "Existing session id to continue the conversation",
"type": "string"
}
},
"required": ["projectId", "message"],
"type": "object"
}
}
}
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"properties": {
"action": {
"additionalProperties": {
"nullable": true
},
"type": "object"
},
"outcome": {
"type": "string"
},
"response": {
"type": "string"
},
"sessionId": {
"type": "string"
}
},
"required": ["sessionId", "response"],
"type": "object"
}
}
},
"description": "Success"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
},
"description": "Unauthorized"
},
"500": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
},
"description": "Internal server error"
}
},
"security": [
{
"ApiKeyAuth": []
}
],
"summary": "Agent-backed chat (legacy)",
"tags": ["Chat"]
}
},
"/api/v1/chat/agent/stream": {
"post": {
"deprecated": true,
"description": "Deprecated — prefer the deployment-scoped `/api/v1/project/{projectSlug}/{env}/agent/{agentSlug}/stream`. Streams tokens and trace events via Server-Sent Events.",
"operationId": "runtime.legacyChat.stream",
"requestBody": {
"content": {
"application/json": {
"schema": {
"properties": {
"agentId": {
"description": "Optional agent override",
"type": "string"
},
"attachmentIds": {
"items": {
"type": "string"
},
"type": "array"
},
"message": {
"description": "User message text",
"type": "string"
},
"metadata": {
"additionalProperties": {
"nullable": true
},
"type": "object"
},
"projectId": {
"description": "Project id",
"type": "string"
},
"sessionId": {
"description": "Existing session id to continue the conversation",
"type": "string"
}
},
"required": ["projectId", "message"],
"type": "object"
}
}
}
},
"responses": {
"200": {
"content": {
"text/event-stream": {
"schema": {
"type": "string"
}
}
},
"description": "Success"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
},
"description": "Unauthorized"
},
"500": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
},
"description": "Internal server error"
}
},
"security": [
{
"ApiKeyAuth": []
}
],
"summary": "Agent-backed SSE streaming chat (legacy)",
"tags": ["Chat"]
}
},
"/api/v1/chat/complete": {
"post": {
"deprecated": true,
"description": "Deprecated — prefer the deployment-scoped `/api/v1/project/{projectSlug}/{env}/agent/{agentSlug}/complete`. Non-streaming completion with model routing and usage tracking.",
"operationId": "runtime.legacyChat.complete",
"requestBody": {
"content": {
"application/json": {
"schema": {
"properties": {
"maxTokens": {
"type": "number"
},
"messages": {
"description": "Conversation messages",
"items": {
"properties": {
"content": {
"type": "string"
},
"role": {
"enum": ["system", "user", "assistant", "tool"],
"type": "string"
}
},
"required": ["role", "content"],
"type": "object"
},
"type": "array"
},
"modelId": {
"type": "string"
},
"projectId": {
"description": "Project id",
"type": "string"
},
"temperature": {
"type": "number"
}
},
"required": ["projectId", "messages"],
"type": "object"
}
}
}
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"properties": {
"content": {
"type": "string"
},
"finishReason": {
"type": "string"
},
"latencyMs": {
"type": "number"
},
"model": {
"type": "string"
},
"usage": {
"properties": {
"estimatedCost": {
"nullable": true,
"type": "number"
},
"inputTokens": {
"type": "number"
},
"outputTokens": {
"type": "number"
},
"totalTokens": {
"type": "number"
}
},
"required": ["inputTokens", "outputTokens", "totalTokens", "estimatedCost"],
"type": "object"
}
},
"required": ["content", "usage", "latencyMs"],
"type": "object"
}
}
},
"description": "Success"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
},
"description": "Unauthorized"
},
"500": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
},
"description": "Internal server error"
}
},
"security": [
{
"ApiKeyAuth": []
}
],
"summary": "Non-streaming chat completion (legacy)",
"tags": ["Chat"]
}
},
"/api/v1/chat/session": {
"post": {
"deprecated": true,
"description": "Deprecated — creates a pre-initialized session with optional session metadata. Returns the session ID without executing a message.",
"operationId": "runtime.legacyChat.createSession",
"requestBody": {
"content": {
"application/json": {
"schema": {
"properties": {
"agentId": {
"type": "string"
},
"deploymentId": {
"type": "string"
},
"environment": {
"type": "string"
},
"projectId": {
"minLength": 1,
"type": "string"
},
"sessionMetadata": {
"additionalProperties": {
"nullable": true
},
"type": "object"
}
},
"required": ["projectId"],
"type": "object"
}
}
}
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"properties": {
"agentName": {
"type": "string"
},
"sessionId": {
"type": "string"
},
"status": {
"enum": ["ready"],
"type": "string"
}
},
"required": ["sessionId", "agentName", "status"],
"type": "object"
}
}
},
"description": "Success"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
},
"description": "Unauthorized"
},
"500": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
},
"description": "Internal server error"
}
},
"security": [
{
"ApiKeyAuth": []
}
],
"summary": "Create a chat session (legacy)",
"tags": ["Chat"]
}
},
"/api/v1/project/{projectSlug}/{env}/agent/{agentSlug}/chat": {
"post": {
"description": "Deployment-scoped agent chat. Creates a session on first call or continues one via sessionId. Project and agent are resolved from the URL.",
"operationId": "runtime.agent.chat",
"parameters": [
{
"description": "Project slug",
"in": "path",
"name": "projectSlug",
"required": true,
"schema": {
"description": "Project slug",
"type": "string"
}
},
{
"description": "Environment tier",
"in": "path",
"name": "env",
"required": true,
"schema": {
"description": "Environment tier",
"enum": ["dev", "staging", "production"],
"type": "string"
}
},
{
"description": "Deployed agent slug",
"in": "path",
"name": "agentSlug",
"required": true,
"schema": {
"description": "Deployed agent slug",
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"properties": {
"attachmentIds": {
"description": "Attachment ids to include",
"items": {
"type": "string"
},
"type": "array"
},
"message": {
"description": "User message text",
"type": "string"
},
"metadata": {
"additionalProperties": {
"nullable": true
},
"type": "object"
},
"sessionId": {
"description": "Existing session id to continue the conversation",
"type": "string"
}
},
"required": ["message"],
"type": "object"
}
}
}
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"properties": {
"action": {
"additionalProperties": {
"nullable": true
},
"type": "object"
},
"outcome": {
"type": "string"
},
"response": {
"type": "string"
},
"sessionId": {
"type": "string"
}
},
"required": ["sessionId", "response"],
"type": "object"
}
}
},
"description": "Success"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
},
"description": "Unauthorized"
},
"500": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
},
"description": "Internal server error"
}
},
"security": [
{
"ApiKeyAuth": []
}
],
"summary": "Send a message to a deployed agent",
"tags": ["Conversation"]
}
},
"/api/v1/project/{projectSlug}/{env}/agent/{agentSlug}/complete": {
"post": {
"description": "Single-turn LLM completion against the deployed agent model.",
"operationId": "runtime.agent.complete",
"parameters": [
{
"description": "Project slug",
"in": "path",
"name": "projectSlug",
"required": true,
"schema": {
"description": "Project slug",
"type": "string"
}
},
{
"description": "Environment tier",
"in": "path",
"name": "env",
"required": true,
"schema": {
"description": "Environment tier",
"enum": ["dev", "staging", "production"],
"type": "string"
}
},
{
"description": "Deployed agent slug",
"in": "path",
"name": "agentSlug",
"required": true,
"schema": {
"description": "Deployed agent slug",
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"properties": {
"maxTokens": {
"type": "number"
},
"messages": {
"description": "Conversation messages",
"items": {
"properties": {
"content": {
"type": "string"
},
"role": {
"enum": ["system", "user", "assistant", "tool"],
"type": "string"
}
},
"required": ["role", "content"],
"type": "object"
},
"type": "array"
},
"modelId": {
"type": "string"
},
"temperature": {
"type": "number"
}
},
"required": ["messages"],
"type": "object"
}
}
}
},
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"properties": {
"content": {
"type": "string"
},
"finishReason": {
"type": "string"
},
"latencyMs": {
"type": "number"
},
"model": {
"type": "string"
},
"usage": {
"properties": {
"estimatedCost": {
"nullable": true,
"type": "number"
},
"inputTokens": {
"type": "number"
},
"outputTokens": {
"type": "number"
},
"totalTokens": {
"type": "number"
}
},
"required": ["inputTokens", "outputTokens", "totalTokens", "estimatedCost"],
"type": "object"
}
},
"required": ["content", "usage", "latencyMs"],
"type": "object"
}
}
},
"description": "Success"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
},
"description": "Unauthorized"
},
"500": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
},
"description": "Internal server error"
}
},
"security": [
{
"ApiKeyAuth": []
}
],
"summary": "One-shot completion via a deployed agent",
"tags": ["Conversation"]
}
},
"/api/v1/project/{projectSlug}/{env}/agent/{agentSlug}/stream": {
"post": {
"description": "Same as the chat route, streamed over Server-Sent Events (token deltas + trace events).",
"operationId": "runtime.agent.stream",
"parameters": [
{
"description": "Project slug",
"in": "path",
"name": "projectSlug",
"required": true,
"schema": {
"description": "Project slug",
"type": "string"
}
},
{
"description": "Environment tier",
"in": "path",
"name": "env",
"required": true,
"schema": {
"description": "Environment tier",
"enum": ["dev", "staging", "production"],
"type": "string"
}
},
{
"description": "Deployed agent slug",
"in": "path",
"name": "agentSlug",
"required": true,
"schema": {
"description": "Deployed agent slug",
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"properties": {
"attachmentIds": {
"description": "Attachment ids to include",
"items": {
"type": "string"
},
"type": "array"
},
"message": {
"description": "User message text",
"type": "string"
},
"metadata": {
"additionalProperties": {
"nullable": true
},
"type": "object"
},
"sessionId": {
"description": "Existing session id to continue the conversation",
"type": "string"
}
},
"required": ["message"],
"type": "object"
}
}
}
},
"responses": {
"200": {
"content": {
"text/event-stream": {
"schema": {
"type": "string"
}
}
},
"description": "Success"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
},
"description": "Unauthorized"
},
"500": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ErrorResponse"
}
}
},
"description": "Internal server error"
}
},
"security": [
{
"ApiKeyAuth": []
}
],
"summary": "Stream a deployed agent response (SSE)",
"tags": ["Conversation"]
}
}
}
}