---
title: "Answer a research task"
method: POST
path: "/web/answers"
tags: ["Answers"]
---

# Answer a research task

`POST /web/answers`

## Request

- Base URL: `https://api.context.dev/v1`
- URL: `https://api.context.dev/v1/web/answers`
- Auth: HTTP bearer

Research the web and return a sourced answer in your JSON shape. Choose `fast` for a short task or `ultra` for deeper research.

## Request body

- AnswersRequest
  - `mode` 'fast' | 'ultra': `fast` prioritizes speed, with extra verification for people and companies; `ultra` supports deeper research (default).
  - `task` string, required: Research task. The agent selects company/profile lookups, web searches, or page reads. Include domains or URLs to focus the research.
  - `json_format` object: Example answer object, not JSON Schema. Up to 8 levels, 500 values, and 16000 characters; unknowns may be null.
  - `timeoutOpts` PartialTimeout: Request deadline and what to return when it passes.
    - `milliseconds` integer, required: Deadline in milliseconds.
    - `behavior` 'fail' | 'return-partial': "fail" returns 408 at the deadline. "return-partial" returns available results; inspect the response’s partial flag.
  - `tags` string[]: Labels for filtering usage in the dashboard.
  - `zdr` 'enabled' | 'disabled': `enabled` turns on zero data retention. Returns 403 `ZDR_NOT_ENABLED` unless your organization has ZDR.

## Response `200`

The requested JSON shape, plus the sources used

- AnswersResponse
  - `partial` boolean: True when the request deadline ended research and the answer uses the evidence collected so far.
  - `json_content` object, required: The answer, in the shape requested by json_format.
  - `sources` string[], required: URLs of the pages and company/profile records read for the answer, followed by URLs cited in json_content.
  - `key_metadata` KeyMetadata: Credits this request used and your remaining balance.
    - `credits_consumed` integer, required: Credits charged for this request.
    - `credits_remaining` integer, required: Credits remaining for your organization.
  - `request_id` string, uuid, required: Unique ID of this request, also in `X-Request-Id`. Include it when contacting support.

## Other responses

- `400`: Bad request
- `401`: Unauthorized
- `402`: Insufficient credits (`USAGE_EXCEEDED`); authentication is valid. Retry once funded. Legacy deployments may return 401.
- `408`: The request exceeded timeoutOpts.milliseconds.
- `429`: Request exceeded the applicable rate limit.
- `500`: Research could not gather usable evidence or produce the requested JSON answer.
- `504`: The research exceeded its time limit.

## Changes

- **2026-10-21** `61627728926b`: 7 warning, 1 info
  - added the new `NO_PUBLISHED_MARKDOWN` enum value to the `error_code` response property for the response status `400`
  - added the new `NO_PUBLISHED_MARKDOWN` enum value to the `error_code` response property for the response status `401`
  - added the new `NO_PUBLISHED_MARKDOWN` enum value to the `error_code` response property for the response status `402`
  - added the new `NO_PUBLISHED_MARKDOWN` enum value to the `error_code` response property for the response status `408`
  - …4 more
- **2026-10-19** `4ddcf49b9fe5`: 7 info
  - added the non-success response with the status `402`
  - added the optional property `error_data` to the response with the `400` status
  - added the optional property `error_data` to the response with the `401` status
  - added the optional property `error_data` to the response with the `408` status
  - …3 more
- **2026-10-16** `2125f3e94e52`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/context/apis/brand-api/changes/web/answers/post.md)

---

[API](https://skmtc.dev/context/apis/brand-api.md) · [All operations](https://skmtc.dev/context/apis/brand-api/llms.txt) · [OpenAPI document](https://skmtc.dev/context/apis/brand-api/revisions/9e2ab7841fb1?raw)
