Pre-GA · client install command and public sign-up gated until GA. Existing tenants can run the snippets below against their issued endpoint and key.

1. Install the client

Pick your language. Same auth, same endpoints.

# Python
pip install {{TBD-install-command-py}}

# Node
npm install {{TBD-install-command-node}}

# Go
go get {{TBD-install-command-go}}

2. Authenticate

Pick one of the four modes documented at Auth and payment. The fastest first query is API key:

export DEEPTAP_API_KEY="dt_live_..."

For machine-to-machine commerce, prefer x402. For multi-party flows, see MPP. For signed-receipt agentic commerce, see TrueCom.

3. Run a depth-1 query

curl -X POST https://api.deeptap.ai/v1/search \
  -H "Authorization: Bearer $DEEPTAP_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "query": "What is the EU AI Act enforcement date for general-purpose models?",
    "depth": 1
  }'

4. Inspect the response envelope

Every response carries the depth executed, the rounds run, the stop reason, and the facts the cache promoted. The facets ledger is included when you pass include_ledger=true.

{
  "depth": 1,
  "rounds_executed": 1,
  "stop_reason": "single_pass_complete",
  "cache_hit": false,
  "facts": [
    {
      "claim": "...",
      "confidence": 0.91,
      "decay_class": "slow",
      "source_url": "https://...",
      "rerank_score": 0.87,
      "firewall_verdict": "ok"
    }
  ],
  "credits_charged": "{{TBD-depth-1-credits}}"
}

5. Run depth 2 and depth 3

Same endpoint for depth 2; the streaming research endpoint for depth 3.

# Depth 2 (reflection loop)
curl -X POST https://api.deeptap.ai/v1/search \
  -H "Authorization: Bearer $DEEPTAP_API_KEY" \
  -d '{"query": "...", "depth": 2}'

# Depth 3 (streaming research)
curl -X POST https://api.deeptap.ai/v1/research \
  -H "Authorization: Bearer $DEEPTAP_API_KEY" \
  -d '{"query": "...", "depth": 3}'

Depth 3 streams partial progress as the stopping AI evaluates saturation. Depth 1 and 2 share /v1/search; depth 3 lives on /v1/research because a multi-minute blocking request is unusable in an agent loop. See Depths for when to pick each.

What next