← back to index

one endpoint, multiple research providers.

budget caps · fallback strategies · normalized outputs · audit logs

standard contractorchestrationgovernanceauditability

Quickstart

get started in 30 seconds.

base urlhttps://research.site/api/v1
auth headerAuthorization: Bearer drx_live_...
make a request
curl -X POST https://research.site/api/v1/research/run \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "query": "what is quantum computing?",
    "providers": ["perplexity:sonar-deep-research"],
    "strategy": "parallel"
  }'

Get API Key

sign in to generate an api key. each key gets 1 free successful run.

loading...
save your key immediately. it's only shown once and cannot be retrieved later.

Authentication

all requests require an api key in the Authorization header.

Authorization: Bearer drx_live_your_key_here

Free Tier

1 free successful run per api key

each api key gets 1 free successful run. a run counts as "successful" if at least one provider returns status: "completed".

if all providers fail or timeout, the run doesn't count against your limit—you won't be penalized for infrastructure issues.

after your free run

subsequent requests return 402 with details on how to get more access:

waitlist_required response
{
  "error": {
    "code": "waitlist_required",
    "message": "you've used your 1 free run. request access to continue.",
    "waitlist_url": "https://research.site/waitlist",
    "contact": {
      "x": "https://x.com/vaniagrwall",
      "linkedin": "https://linkedin.com/in/vaniagarwal"
    }
  }
}

need more access?

POST /research/run

execute a deep research query across one or more providers.

request body

ParameterTypeDescription
query*stringthe research question
providers*string[]provider:model keys to query
strategystringparallel fallback race — default: parallel
modestringfast deep — default: deep
budget.max_cost_usdnumbersoft cost limit (warns if exceeded)
budget.max_time_msnumberhard timeout — default: 120000
options.citationsbooleaninclude citations — default: true
options.include_rawbooleaninclude raw provider response — default: false

GET /research/run/:id

fetch status and results of a previous run.

curl https://research.site/api/v1/research/run/YOUR_RUN_ID \
  -H "Authorization: Bearer YOUR_API_KEY"

Providers

available provider:model combinations.

Provider KeyNameEst. Cost
openai:o4-mini-deep-researchOpenAI o4-mini~$0.02-0.10
openai:o3-deep-researchOpenAI o3~$0.10-0.50
perplexity:sonar-deep-researchPerplexity Sonar~$0.05-0.15
gemini:deep-researchGemini Deep Research~$0.02-0.10
parallel:proParallel Pro$0.10 flat
parallel:ultraParallel Ultra$0.30 flat

Strategies

parallelrun all providers simultaneously, return all results.
fallbacktry providers in order. stop on first success.
racerun all providers, return first successful result.

Response Format

{
  "run_id": "690348a5-7707-4146-8217-598c8973edb4",
  "status": "completed",
  "total_latency_ms": 87843,
  "total_cost_usd": 0.101,
  "results": {
    "perplexity:sonar-deep-research": {
      "provider_key": "perplexity:sonar-deep-research",
      "status": "completed",
      "latency_ms": 86473,
      "cost_usd": 0.101,
      "tokens": { "input": 7, "output": 7030, "total": 7037 },
      "answer_markdown": "# Research results...",
      "citations": [{ "url": "https://...", "title": "...", "snippet": "..." }]
    }
  }
}

result status values

completedprovider returned successfully
failedprovider returned an error
timeoutprovider exceeded time limit
skippedskipped due to strategy

Error Codes

CodeHTTPDescription
auth_missing401no api key provided
auth_invalid401api key not found
auth_revoked401api key revoked
waitlist_required402free run exhausted
invalid_request400malformed request
invalid_provider400unknown provider
timeout200provider timed out (in result)
provider_error200provider error (in result)
internal_error500server error

Examples

javascript

const response = await fetch('https://research.site/api/v1/research/run', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    query: 'latest developments in quantum computing',
    providers: ['openai:o4-mini-deep-research'],
    strategy: 'parallel',
  }),
});

const data = await response.json();
console.log(data.results);

python

import requests

response = requests.post(
    'https://research.site/api/v1/research/run',
    headers={
        'Authorization': 'Bearer YOUR_API_KEY',
        'Content-Type': 'application/json',
    },
    json={
        'query': 'latest developments in quantum computing',
        'providers': ['openai:o4-mini-deep-research'],
        'strategy': 'parallel',
    },
)

data = response.json()
print(data['results'])