Cancel a web research run by its id.
Cancel a queued or running Agent run immediately without returning any results. You are billed for usage accrued before cancellation. If the run has already reached a terminal status, the API returns the existing run.
Job web.research.cancel
telipot run exa.web.research.cancel \
--input-json '{"id":"agent_run_01j"}' \
--quotePrice
Price unknownexa.web.research.cancel
Whose account it uses
What it sends
{
"id": "agent_run_01j"
}Your Exa login is added for you. Your AI never sees it.
What it costs
Unknown
not listed, never free
| source | docs · exa.ai/docs/admin/pricing · checked 2026-10-05 |
| confidence | unknown |
| note | The route bills the usage a run accrued before it was cancelled, and the pricing page lists no rate for cancelling itself. |
Preview the price first. --quote runs nothing.
For developers · run it
Shell · runs the task on the named account
telipot run exa.web.research.cancel \
--input-json '{"id":"agent_run_01j"}'id string · required · 1 to 200 | Agent run id, as returned when the run was created. Ids carry the agent_run_ prefix. |
id string | Run id with the agent_run_ prefix |
object string | |
status string | |
stopReason string | null | Why the run stopped; null while it is queued or running |
createdAt string | |
completedAt string | null | |
request object | null | The request fields stored with the run |
output object | |
usage object | |
costDollars object |
Full output schema · JSONNested fields and constraints
Output JSON Schema
{
"type": "object",
"required": [
"id",
"object",
"status",
"stopReason",
"createdAt",
"completedAt",
"request",
"output",
"usage",
"costDollars"
],
"properties": {
"id": {
"type": "string",
"description": "Run id with the agent_run_ prefix"
},
"object": {
"type": "string",
"const": "agent_run"
},
"status": {
"type": "string",
"enum": [
"queued",
"running",
"completed",
"failed",
"cancelled"
]
},
"stopReason": {
"anyOf": [
{
"type": "string",
"enum": [
"schema_satisfied",
"budget_reached",
"time_limit_reached",
"stopped",
"error",
"cancelled"
]
},
{
"type": "null"
}
],
"description": "Why the run stopped; null while it is queued or running"
},
"createdAt": {
"type": "string"
},
"completedAt": {
"type": [
"string",
"null"
]
},
"request": {
"type": [
"object",
"null"
],
"description": "The request fields stored with the run"
},
"output": {
"type": "object",
"required": [
"text",
"structured",
"grounding"
],
"properties": {
"text": {
"type": "string",
"description": "Natural-language answer or summary"
},
"structured": {
"description": "JSON shaped by outputSchema; null when no schema was given"
},
"grounding": {
"type": "array",
"description": "Field-level citations",
"items": {
"type": "object",
"required": [
"field",
"citations"
],
"properties": {
"field": {
"type": "string"
},
"citations": {
"type": "array",
"items": {
"type": "object",
"properties": {
"url": {
"type": "string"
},
"title": {
"type": "string"
}
}
}
},
"confidence": {
"anyOf": [
{
"type": "string",
"enum": [
"low",
"medium",
"high"
]
},
{
"type": "null"
}
]
}
}
}
}
}
},
"usage": {
"type": "object",
"required": [
"agentComputeUnits",
"searches",
"emails",
"phoneNumbers"
],
"properties": {
"agentComputeUnits": {
"type": "number"
},
"searches": {
"type": "integer"
},
"emails": {
"type": "integer"
},
"phoneNumbers": {
"type": "integer"
},
"dataSources": {
"type": "object"
}
}
},
"costDollars": {
"type": "object",
"required": [
"total",
"agentCompute",
"search",
"emails",
"phoneNumbers"
],
"properties": {
"total": {
"type": "number"
},
"agentCompute": {
"type": "number"
},
"search": {
"type": "number"
},
"emails": {
"type": "number"
},
"phoneNumbers": {
"type": "number"
},
"dataSources": {
"type": "object"
}
}
}
}
}A real answer
No example captured yet: one is recorded when telipot catalog verify passes.

