Every API here is available over the APIs.io API and to AI agents over MCP.
{
"openapi": "3.1.0",
"info": {
"title": "Amdahl Platform API",
"version": "1.0.0",
"description": "REST API for Amdahl, an eval harness for GTM outputs. Three surfaces: **Evals** grades what your agents write against your own customer conversations, **Search** answers questions over the same corpus in one synchronous call, and **Agents** runs async investigations (multi-turn Chat)."
},
"servers": [
{
"url": "/"
}
],
"security": [
{
"ApiKeyAuth": []
},
{
"BearerAuth": []
}
],
"tags": [
{
"name": "assets",
"description": "Artifacts - unified output storage with version history and hierarchy."
},
{
"name": "context",
"description": "Business context, substrate intelligence, remembered evidence, and Q&A."
},
{
"name": "conversations",
"description": ""
},
{
"name": "data",
"description": "Data exploration - SQL queries, hybrid search, and ML clusters."
},
{
"name": "workflows",
"description": "Workflow orchestration endpoints."
}
],
"components": {
"securitySchemes": {
"ApiKeyAuth": {
"type": "apiKey",
"in": "header",
"name": "X-API-Key",
"description": "Platform API key (amdhl_...). Scopes are enforced per operation. The same key is also accepted as `Authorization: Bearer <key>` — one key works on both transports."
},
"BearerAuth": {
"type": "http",
"scheme": "bearer",
"bearerFormat": "JWT",
"description": "Bearer credential: an API key (amdhl_-prefixed values are validated as API keys), an OAuth access token, or a Supabase JWT. Role + scope enforcement applies."
},
"OAuth2": {
"type": "oauth2",
"description": "OAuth2 authorization code flow with scope granularity.",
"flows": {
"authorizationCode": {
"authorizationUrl": "/oauth/authorize",
"tokenUrl": "/oauth/token",
"scopes": {
"connections:delete": "Disconnect connections",
"connections:read": "Read connections and the connector catalog",
"connections:write": "Connect, reconnect, and configure connections",
"conversations:read": "Read chats and their runs",
"conversations:write": "Start, rename, and configure chats",
"data:read": "Query and search data sources",
"messages:execute": "Run the message optimizer on a draft message",
"workflows:write": "Resume and cancel agent runs"
}
}
}
}
},
"schemas": {},
"parameters": {}
},
"paths": {
"/api/platform/v1/agents/{session_id}/resume": {
"post": {
"operationId": "agentsResume",
"summary": "Resume Agent Session",
"description": "Resume an agent run that is paused on pending user input. Use when replying to an outline approval prompt, a clarification question, or a continue/finish decision. The input payload must match the run's `pending_input_schema`. After a successful resume the run transitions back to running and proceeds from where it paused.",
"tags": [
"workflows"
],
"parameters": [
{
"name": "session_id",
"in": "path",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {}
}
}
}
}
},
"400": {
"description": "Invalid input - failed schema validation",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"details": {
"type": "object",
"additionalProperties": true
}
},
"required": [
"code",
"message"
]
}
},
"required": [
"error"
]
}
}
}
},
"401": {
"description": "Authentication required",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"details": {
"type": "object",
"additionalProperties": true
}
},
"required": [
"code",
"message"
]
}
},
"required": [
"error"
]
}
}
}
},
"403": {
"description": "Forbidden - missing scope or role",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"details": {
"type": "object",
"additionalProperties": true
}
},
"required": [
"code",
"message"
]
}
},
"required": [
"error"
]
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"details": {
"type": "object",
"additionalProperties": true
}
},
"required": [
"code",
"message"
]
}
},
"required": [
"error"
]
}
}
}
}
},
"security": [
{
"ApiKeyAuth": [
"workflows:write"
]
},
{
"BearerAuth": [
"workflows:write"
]
}
],
"x-scopes": [
"workflows:write"
],
"x-stability": "stable",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"input": {
"type": "object",
"description": "The user's resume payload. Must match the run's persisted pending_input_schema.",
"additionalProperties": true
}
},
"required": [
"input"
],
"additionalProperties": false
}
}
}
}
}
},
"/api/platform/v1/agents/{session_id}/cancel": {
"post": {
"operationId": "agentsCancel",
"summary": "Cancel Agent Session",
"description": "Cancel an in-flight agent run. Use when the user wants to stop a running agent before it finishes, or abandon a run that has gone sideways. Cascades to any sub-agents spawned from this run via agents.delegate — every live descendant is cancelled atomically. The runner bails at the next iteration boundary after observing the status change. Already-completed runs cannot be canceled. Pass a reason to record WHY the run was aborted in the audit trail.",
"tags": [
"workflows"
],
"parameters": [
{
"name": "session_id",
"in": "path",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {}
}
}
}
}
},
"400": {
"description": "Invalid input - failed schema validation",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"details": {
"type": "object",
"additionalProperties": true
}
},
"required": [
"code",
"message"
]
}
},
"required": [
"error"
]
}
}
}
},
"401": {
"description": "Authentication required",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"details": {
"type": "object",
"additionalProperties": true
}
},
"required": [
"code",
"message"
]
}
},
"required": [
"error"
]
}
}
}
},
"403": {
"description": "Forbidden - missing scope or role",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"details": {
"type": "object",
"additionalProperties": true
}
},
"required": [
"code",
"message"
]
}
},
"required": [
"error"
]
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"details": {
"type": "object",
"additionalProperties": true
}
},
"required": [
"code",
"message"
]
}
},
"required": [
"error"
]
}
}
}
}
},
"security": [
{
"ApiKeyAuth": [
"workflows:write"
]
},
{
"BearerAuth": [
"workflows:write"
]
}
],
"x-scopes": [
"workflows:write"
],
"x-stability": "stable",
"requestBody": {
"required": false,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"reason": {
"type": "string",
"maxLength": 500,
"description": "Optional operator note describing why the run was canceled."
}
},
"additionalProperties": false
}
}
}
}
}
},
"/api/platform/v1/connections/catalog": {
"get": {
"operationId": "connectionsListCatalog",
"summary": "List Connector Catalog",
"description": "Read the catalog of integrations a workspace can hook up - CRM, calls, comms, docs, support, social, and actions (outbound) - with each entry's connect flow, ownership, and the data streams it brings in. Read when rendering the \"add a connection\" picker or answering which providers are supported. Describes what CAN be connected, not what is already connected. Optional kind / category filters narrow the menu.",
"tags": [
"data"
],
"parameters": [
{
"name": "kind",
"in": "query",
"required": false,
"description": "Filter to one ingestion stack. first_party (amdahl-data pullers) is the only stack today; use category=social to filter the social UI grouping.",
"schema": {
"type": "string",
"enum": [
"first_party"
],
"description": "Filter to one ingestion stack. first_party (amdahl-data pullers) is the only stack today; use category=social to filter the social UI grouping."
}
},
{
"name": "category",
"in": "query",
"required": false,
"description": "Filter to one UI category.",
"schema": {
"type": "string",
"enum": [
"crm",
"calls",
"comms",
"docs",
"support",
"social",
"actions"
],
"description": "Filter to one UI category."
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {}
}
}
}
}
},
"400": {
"description": "Invalid input - failed schema validation",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"details": {
"type": "object",
"additionalProperties": true
}
},
"required": [
"code",
"message"
]
}
},
"required": [
"error"
]
}
}
}
},
"401": {
"description": "Authentication required",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"details": {
"type": "object",
"additionalProperties": true
}
},
"required": [
"code",
"message"
]
}
},
"required": [
"error"
]
}
}
}
},
"403": {
"description": "Forbidden - missing scope or role",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"details": {
"type": "object",
"additionalProperties": true
}
},
"required": [
"code",
"message"
]
}
},
"required": [
"error"
]
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"details": {
"type": "object",
"additionalProperties": true
}
},
"required": [
"code",
"message"
]
}
},
"required": [
"error"
]
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"details": {
"type": "object",
"additionalProperties": true
}
},
"required": [
"code",
"message"
]
}
},
"required": [
"error"
]
}
}
}
}
},
"security": [
{
"ApiKeyAuth": [
"connections:read"
]
},
{
"BearerAuth": [
"connections:read"
]
}
],
"x-scopes": [
"connections:read"
],
"x-stability": "stable"
}
},
"/api/platform/v1/connections": {
"get": {
"operationId": "connectionsList",
"summary": "List Established Connections",
"description": "Read the integrations a workspace has actually established, newest first, merging first-party data sources and tracked social accounts into one normalized list with a uniform status, scope, and last-synced field. Read when rendering the connections inventory or answering which integrations are live for the tenant. Defaults to ACTIVE connections; pass include_inactive=true to also return disconnected and never-synced sources.",
"tags": [
"data"
],
"parameters": [
{
"name": "include_inactive",
"in": "query",
"required": false,
"description": "Include disconnected and never-synced (abandoned / in-flight) connections. Defaults to false, which returns only active connections (connected/syncing or ever-synced).",
"schema": {
"type": "boolean",
"description": "Include disconnected and never-synced (abandoned / in-flight) connections. Defaults to false, which returns only active connections (connected/syncing or ever-synced)."
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {}
}
}
}
}
},
"400": {
"description": "Invalid input - failed schema validation",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"details": {
"type": "object",
"additionalProperties": true
}
},
"required": [
"code",
"message"
]
}
},
"required": [
"error"
]
}
}
}
},
"401": {
"description": "Authentication required",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"details": {
"type": "object",
"additionalProperties": true
}
},
"required": [
"code",
"message"
]
}
},
"required": [
"error"
]
}
}
}
},
"403": {
"description": "Forbidden - missing scope or role",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"details": {
"type": "object",
"additionalProperties": true
}
},
"required": [
"code",
"message"
]
}
},
"required": [
"error"
]
}
}
}
},
"404": {
"description": "Not found",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"details": {
"type": "object",
"additionalProperties": true
}
},
"required": [
"code",
"message"
]
}
},
"required": [
"error"
]
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"details": {
"type": "object",
"additionalProperties": true
}
},
"required": [
"code",
"message"
]
}
},
"required": [
"error"
]
}
}
}
}
},
"security": [
{
"ApiKeyAuth": [
"connections:read"
]
},
{
"BearerAuth": [
"connections:read"
]
}
],
"x-scopes": [
"connections:read"
],
"x-stability": "stable"
},
"post": {
"operationId": "connectionsConnect",
"summary": "Connect an Integration",
"description": "Establish a new integration for a workspace, routing on the connector type: collect an API key, kick off an OAuth redirect, or track a social handle. Use when a user picks a provider from the catalog and wants it connected. Returns the created connection, or an OAuth authorize URL to redirect to. Creates and stores the connection without starting a sync.",
"tags": [
"data"
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"data": {}
}
}
}
}
},
"400": {
"description": "Invalid input - failed schema validation",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"details": {
"type": "object",
"additionalProperties": true
}
},
"required": [
"code",
"message"
]
}
},
"required": [
"error"
]
}
}
}
},
"401": {
"description": "Authentication required",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"co
# --- truncated at 32 KB (346 KB total) ---
# Full source: https://artifacts.apis.io/amdahl-ai/openapi/_original/amdahl-ai-api-openapi.json