Skip to main content
POST
/
v1
/
research
curl --request POST \
  --url https://api.octen.ai/v1/research \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "tier": "standard",
  "messages": [
    {
      "role": "user",
      "content": "Progress and key milestones of the Artemis program"
    }
  ]
}
'
{
  "type": "status",
  "request_id": "20260403120000003ABCDE12345",
  "object": "research.chunk",
  "created": 1775361600,
  "model": "moonshotai/kimi-k2.5",
  "status": "Analyzing your question..."
}

Authorizations

Authorization
string
header
required

Bearer token used for request authentication. Alternatively, you can send the API key in the x-api-key header. Note: A payment method is required to use the API.

Body

application/json

Request body for the Deep Research API.

messages
object[]
required

Conversation messages. Only the last role=user message is used as the research question; other messages are ignored and do not enter plan generation, search, analysis, or report writing.

tier
enum<string>
default:lite

The research tier.

Available options:
lite,
standard,
pro
extra_context
string

Additional research background, constraints, or preferences, used as extra context for query rewriting and research direction supplementation.

skip_brief
boolean
default:false

Skip the Research Brief stage and write the final report directly from raw search and analysis results.

Note: when enabled, no brief event is emitted. Clients can rebuild the citation index by accumulating search_results events in the order they arrive (round-by-round / query-by-query / result-by-result) into a global index, then look up the corresponding url/title by the N in [^N].

skip_plan
boolean
default:false

Phase 1 only. Skip the Research Plan stage and proceed straight to the search loop. With skip_plan=true, the call never enters the Phase 2 pause mechanism.

skip_plan_confirm
boolean
default:false

Phase 1 only. When true, the run continues with all angles even if the plan is ambiguous, instead of pausing and waiting for the user to confirm a selection.

plan_id
string

Phase 2 only. The plan ID returned by a Phase 1 plan event with requires_selection=true. When provided, the server skips plan generation and applies the supplied selections against the stored plan. Each plan_id is retained for 30 minutes; after expiry the plan is regenerated.

selections
object[]

Phase 2 only. The user's corrections and angle filtering against the Phase 1 plan.

Response

Successful Deep Research response. Always streamed as Server-Sent Events.

A streaming chunk of a Deep Research response.

request_id
string
required

The unique identifier for this request.

created
number
required

Unix timestamp (in seconds) of when the chunk was created.

model
string
required

The model used for this completion.

type
enum<string>

The type of this streaming chunk.

Available options:
status,
plan,
queries,
search_done,
analysis,
brief,
content,
finish,
usage,
error
object
enum<string>

The object type, always research.chunk.

Available options:
research.chunk
round
integer

Current research round. Present only in queries, search_done, and analysis chunks.

latency
integer

Latency in milliseconds for the stage represented by this chunk.

status
string

Pipeline progress copy. Present only in status chunks.

plan
object

Research plan generated in Phase 1. Carried by plan chunks.

plan_id
string

Plan ID carried by plan chunks. The client must echo this back as plan_id when entering Phase 2.

queries
string[]

Sub-queries generated for this round. Present only in queries chunks.

search_result_count
integer

Total number of search results returned this round. Present only in search_done chunks.

search_results
object[]

Search results for this round, one group per sub-query. Present only in search_done chunks.

analysis
object

Analysis output for one research round. Carried by analysis chunks.

brief
object

Report outline and evidence set. Carried by brief chunks.

choices
object[]

Incremental choices for the final report. Present in content and finish chunks.

meta
object

Usage and latency metadata for the Deep Research call. Carried by usage chunks.