Skip to main content
POST
Start a Thread

Authorizations

x-api-key
string
header
required

Body

application/json

POST /v1/threads body.

input_message
string
required

The complete research brief. The agent is autonomous and asks no follow-up questions, so include the whole task in one message.

Required string length: 1 - 10000
mode
enum<string>
default:pro

Agent depth. pro (~20 papers) for almost all requests; deep (~50 papers, structured report) requires a paid plan.

Available options:
pro,
deep
filters
ThreadFilters · object | null

Global filters applied to every search the agent runs (shared /v1/search vocabulary).

Field set must match the filter fields of features/quick_search/schema.py:QuickSearchSearchParams (the RFC says the two surfaces share one filter schema); parity is pinned by schema_test.py. Values are validated here, not just typed: downstream parsers silently drop unknown domain/study-type values, and an expensive agent run must not execute without a restriction the caller asked for.

attachments
ThreadAttachments · object | null

Scope the research to specific papers/collections.

Response

Successful Response

POST /v1/threads and POST /v1/threads/{thread_id}/interactions.

thread_id
string
required
interaction_id
string
required
status
enum<string>
required

Always running on dispatch.

Available options:
running,
idle,
failed
mode
enum<string>
required
Available options:
pro,
deep
url
string
required

Deep-link to the Thread on consensus.app.

poll_after_seconds
integer
required

Recommended wait between GET /v1/threads/{thread_id} polls.

max_wait_seconds
integer
required

Suggested polling ceiling before giving up (~180 pro, ~600 deep).

created_at
string<date-time> | null
title
string | null

Auto-generated Thread title.