grep-public-api

Start Research

Start a new research job.

Requires USER or API_KEY authentication (not capability-based).

Expert ACL is validated upstream by _validate_research_expert_acl — by the time we get here, the caller is guaranteed to be entitled to dispatch against input_data.expert_id (or it's None / a public registry id).

Returns: ResearchJobResponse with job_id for tracking

post/api/v1/research

Request

  • Base URL
    https://api.grep.ai (the document declares no server; this is the origin it was published from)
  • URL
    https://api.grep.ai/api/v1/research
  • Auth
    none declared

Request body

action_modeboolean

If True, implement changes (write code, create PRs) instead of producing a research report.

additional_thesisstring nullable

Additional thesis to explore

api_modeboolean

If True (default for API), produce pure markdown without widget:html blocks. Set to False for widget:html blocks.

approach'scientific' | 'technical' | 'creative' | 'general' nullable

Research approach. If not provided, auto-determined from question.

benchmark_modeboolean

If True, skip HTML reporter and return raw markdown + structured sources for benchmark evaluation.

contextstring nullable

Additional context for the research

custom_mcp_toolsstring[] nullable

Custom MCP tools to use

custom_skillsstring[] nullable

Custom skills to use

effort'ultra_fast' | 'deep' | 'ultra_deep' | 'low' | 'medium' | 'high' | 'build'

Research effort level. When omitted, uses the agent default depth, or low if none is configured. New values: 'low' (~10-20s, Haiku), 'medium' (~2-3 min), 'high' (~8-15 min), 'build' (Opus 4.6, creative/app building). Legacy values: 'ultra_fast'→low, 'deep'→medium, 'ultra_deep'→high.

expert_idstring nullable

Expert ID from registry (e.g., 'patent-expert', 'medical-expert'). Overrides auto-detection.

from_datestring nullable

Start date for content filtering (YYYY-MM-DD)

from_suggested_topicboolean

If True, job originated from an agent-suggested topic card. Bypasses the person-search private_individual gate (only). Does NOT bypass tier2_strike moderation.

harness_shastring nullable

Vendored agentrun harness variant for this job (advanced/experimental). Omit to use the deployment default. Ignored by the claude_agents runtime.

job_idstring nullable

Optional pre-generated job ID. Use this when workspace files have been uploaded.

json_schemaobject nullable

Custom output JSON Schema (draft-07). The request 422s with the reason when the schema cannot be compiled; annotation keywords outside the draft-07 vocabulary are dropped.

max_cost_usdnumber nullable

Leave unset unless the user explicitly asks for a spending cap; never estimate one. Optional maximum metered provider spend for each logical run. The minimum depends on effort, because a run pays for its prompt/skill preamble before it can issue a tool call: low/ultra_fast $0.50, medium/deep and build $2.50, high/ultra_deep $5.00. The normal billing margin still applies when provider cost is converted to credits.

modelstring nullable

Override the AI model used for research. If provided, bypasses automatic tier-based model selection. Accepts a concrete model id (e.g., 'claude-opus-4-6', 'gpt-5.6-luna', 'deepseek-v4-pro') or a registry alias (e.g., 'luna', 'glm', 'deepseek'). Internal/benchmark use only.

model_config_profilestring nullable

Research model config profile name from RESEARCH_MODEL_CONFIGS (e.g., 'opus46_full', 'opus46_haiku_searcher', 'haiku_full')

output_typestring nullable

Output type: 'report' (default) for a markdown report, 'data_explorer' for a tabular data app, 'structured_output' to return ONLY the structured JSON payload — no report and no artifact is written, so a run whose result is consumed by code skips the write-up entirely. Pair it with json_schema to shape the payload.

projectstring nullable

Workspace directory path (e.g. 'experts/flutterwave_mcc'). If set, reads instructions.md from this directory and uses it as the agent's system prompt. The job runs under a dedicated project brain.

questionstring required

The research question to investigate

render_rich_reportboolean

Render the report with widget:html visualisations (cover page, charts, diagrams, callouts). Default false produces a clean markdown report (headings, prose, markdown tables, inline citations) suitable for API/MCP consumers piping the output into their own pipelines. The Parcha UI sends true to get the rich rendered experience.

response_languagestring

Language for research report (ISO 639-1 code: en, es, fr, de, pt, ja, ko, zh-CN, it, nl)

runtime'claude_agents' | 'agentrun' nullable

Agent runtime harness. When omitted, resolves to the server default (GREP_DEFAULT_RESEARCH_HARNESS, else claude_agents) — see default_research_harness(). An explicit value always wins.

search_tool_overridestring nullable

Search tool variant for eval: 'anthropic_native_websearch', 'parallel_mcp_native', 'custom_wrapped_parallel'

skip_clarificationboolean

If True, skip clarification questions even if the planner requests them. Useful for automated/webhook jobs.

skip_moderation_blockboolean

If True, run moderation but don't block job on violations. Parcha admins may auto-enable this.

status_webhook_filterstring[] nullable

Optional filter for message types to send. E.g., ['Thinking', 'UserMessage', 'status']. If None, sends ALL messages.

status_webhook_urlstring nullable

Webhook URL to receive ALL status messages in real-time. Each message POSTed with: job_id, message, message_type, timestamp, metadata

structured_inputobject nullable

Raw structured (JSON object) input, persisted to the job so the agent can read it.

to_datestring nullable

End date for content filtering (YYYY-MM-DD)

webhook_urlstring nullable

Webhook URL for completion notification

websitestring nullable

Website URL for enriched context

Response

Successful Response

downgradeobject nullable
idempotent_replayboolean

True when this response replays a previous request with the same idempotency key.

job_idstring required
messagestring nullable
slugstring nullable
statusstring required

Changes

No recorded changes to this operation across all 1 revision of this API.