API v0 · Pilot phase

API reference

Submit a question

Submits a question to experts. Returns at once with a request_id; the answers take time.

POSThttps://api.synquery.com/v0/questions
Authentication: send your API key in the x-api-key header.

Starts a request. The call returns immediately with a request_id and status: "pending", and experts answer over the following hours. Read the result with Get status and answers, or receive it by webhook.

A request has four parts: the question, the context experts read, the expert profile you prefer, and the fields each expert fills in. Each part has its own guide: Questions and presets, Expert selection, Custom answer fields and Reusing past answers.

Headers

x-api-keystringRequired#
Your API key.
Idempotency-KeystringOptional#
Recommended. A retry with the same key and body returns the original request instead of creating a new one.

Body

questionstringRequired*#
The question experts answer, verbatim. *Send question, preset or both.
presetstringRequired*#
A preset that supplies a standard question and default answer fields.
The research subject, shown to experts. Required by presets that name one.
productstringOptional#
The product in question.
contextobjectOptional#
What experts read: setting, claim, deal terms and your own keys. See Questions and presets.
expert_requirementsobjectOptional#
Who should answer. Preferences, plus exclusions that are always applied. See Expert selection.
answer_fieldsarrayOptional#
The fields each expert fills in. See Custom answer fields.
allow_past_answersbooleanOptional#
Default true. Reuse eligible past answers from your workspace.
max_answer_age_daysintegerOptional#
Default 90. Oldest past answer to reuse.
collection_methodstringOptional#
written, ai_interview, human_interview or any (default).
expert_identitystringOptional#
anonymous (default) or named.
deadlinestringOptional#
Latest time you need the answer (ISO 8601).
callback_urlstringOptional#
Webhook that receives events for this request.
metadataobjectOptional#
Keys returned unchanged. Never shown to experts.

Returns

Use it to read status and answers.
statusstring#
pending on submission.
Panel size asked for.
How many eligible past answers were reused, so you know how many will be fresh.
When the request was accepted, and when the result is expected.

Billing

You pay only for answers delivered and confirmed. Reused past answers are not charged again, and failed requests are not charged. A request that would go over a spend limit is rejected with 403 limit_exceeded before anything goes to experts. Not enough credits returns 402 insufficient_credits.

Retries

Retrying with the same Idempotency-Key and body returns the original request. The same key with a different body returns 409 idempotency_conflict. Keys are kept for 24 hours. See Idempotency.

Validation and screening

A missing, mistyped or unknown field returns 400 invalid_request naming the field. If screening finds personal, patient or customer-identifying data, the request is rejected with 422 context_blocked naming the field.

Next

Get status and answers →

Requestbash
curl -X POST https://api.synquery.com/v0/questions \
  -H "x-api-key: YOUR_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: acme-tka-2026-10-27" \
  -d '{
    "company_domain": "acme-surgical.com",
    "product": "Acme robotic knee system",
    "question": "What share of total knee replacements at US hospitals now use robotic assistance, and what is driving adoption?",
    "collection_method": "any",
    "deadline": "2026-10-30T17:00:00Z",
    "context": {
      "use_case": "Market sizing",
      "setting": "US hospitals, excluding ambulatory surgery centers",
      "custom": {"procedure": "Primary total knee replacement"}
    },
    "expert_requirements": {
      "sides": ["surgeon", "or_director", "seller"],
      "experience_with": "Robotic-assisted knee replacement",
      "last_in_role_within_years": 2,
      "num_experts": 5
    },
    "answer_fields": [
      {"name": "robotic_share", "type": "range", "unit": "%", "description": "Share of total knee replacements done with robotic assistance"},
      {"name": "adoption_drivers", "type": "list", "description": "What is driving adoption"},
      {"name": "barriers", "type": "list", "description": "What holds adoption back"},
      {"name": "outlook_3yr", "type": "choice", "options": ["increase", "flat", "decrease"], "description": "Direction over the next 3 years"}
    ],
    "allow_past_answers": true,
    "max_answer_age_days": 90,
    "metadata": {"memo_id": "ortho-2026-q4"}
  }'
Response · pendingjson
{
  "request_id": "q_8f2k1x",
  "status": "pending",
  "experts_requested": 5,
  "reused_answers": 1,
  "submitted_at": "2026-10-27T14:00:00Z",
  "eta": "2026-10-28T10:00:00Z"
}
Blocked context · 422json
{
  "error": {
    "code": "context_blocked",
    "message": "context.notes contains a patient name",
    "field": "context.notes"
  }
}