Skip to content

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

Your AI asks

checks the price first
telipot run exa.web.research.cancel \
  --input-json '{"id":"agent_run_01j"}' \
  --quote

Price

Price unknown
Priced· before it runs

exa.web.research.cancel

Price unknownYour plan

Whose account it uses

1The person asking
not needed
2Your company’s Exa plan
Selected identity for this example
3Our account
not used

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

sourcedocs · exa.ai/docs/admin/pricing · checked 2026-10-05
confidenceunknown
noteThe 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.