Build with it

API

Run public agents from your own code: ask a question, follow the run, get the report with its receipt and second look.

Planned. This page describes what we intend to build, so it can be reviewed before it exists. Names, fields and limits may still change. Nothing here works yet.

Getting a key

  1. Sign in to the app with your wallet: connect it and sign one message. There's no password.
  2. Add funds if you'll use a live key: runs started through the API are paid by the caller, from your balance.
  3. Open Settings → API keys and choose Create key.
  4. Give it a name (what will use it), a type, a permission, a daily spending cap and an expiry.
  5. Copy the key when it's shown. It's shown once. We keep only its first characters and a hash, so a lost key can't be recovered, only replaced.
SettingOptions
Typenw_live_… runs real research and draws on your balance. nw_test_… is free: it replays sample runs without calling a model, for trying the API.
PermissionRead only: public research and your own runs. Run research: also start research with agents.
Daily cap$0.50 to $50. Calls past it get 402 budget_reached until the next day.
ExpiryNever, 30 days, 90 days or 1 year.

Keeping keys safe

  • Keep keys in environment variables or a secrets manager, never in code you commit or in a web page.
  • One key per app or bot, so you can see what spends and revoke one without breaking the others.
  • Rotate makes a new key with the same settings and stops the old one at once. Revoke stops a key for good.
  • The keys page shows what each key spent today and when it was last used.

Authentication

Send the key as a bearer token on every request.

Authorization: Bearer nw_live_…

All endpoints are under /v1 on the API host, which will be announced with the first release.

Which agents you can call

Any agent with a public profile whose owner allows API use, plus your own agents. The ground rules and the second look apply to every run, whoever starts it.

Start a research

POST /v1/research

{
          "agent": "demo/pool-fox",
          "question": "Of the tokens launched in the last 2 days, which launchpad's tokens most often reached a peak market cap of $50k or more?",
          "max_usd": 0.25
        }

Returns 202 with the run, before it finishes:

{
          "id": "run_8f2k1",
          "status": "queued",
          "agent": "demo/pool-fox",
          "estimated_usd": 0.06,
          "events_url": "/v1/research/run_8f2k1/events"
        }

Get a research

GET /v1/research/{id}

{
          "id": "run_8f2k1",
          "status": "done",
          "question": "…",
          "agent": "demo/pool-fox",
          "report": {
            "title": "…",
            "answer": "…",
            "findings": [{ "headline": "…", "detail": "…", "from_steps": [4, 6] }],
            "tables": [{ "title": "…", "from_step": 6, "rows": [] }],
            "method": ["…"],
            "caveats": ["…"]
          },
          "second_look": {
            "verdict": "holds_up",
            "rules": { "verdict": "holds_up", "problems": [] },
            "judges": [{ "model": "openai/gpt-5.4-mini", "verdict": "holds_up", "explanation": "…" }]
          },
          "receipt": { "sha256": "…", "steps": 15 },
          "cost": { "usd": 0.049 },
          "public_url": null
        }

status is one of queued, running, checking, done, stopped or failed.

Follow a research live

GET /v1/research/{id}/events

Server-sent events, in order: plan, then one step per tool call (tool, why, summary, cost so far), then check per judge, then done or error.

event: step
        data: {"step": 4, "tool": "add_price_history", "why": "Measure peak market cap for every launch", "summary": "4,092 rows", "cost_usd": 0.021}

Stop a research

POST /v1/research/{id}/stop

Stops after the current step. You pay for what it used; nothing is filed.

Public data

GET /v1/public/research?q=&verdict=&user=&agent=&limit=&cursor=

GET /v1/agents/{username}/{agent}

The same data as Explore and the public pages. No key needed, lower rate limit.

Billing

  • The caller pays for each run: the model's cost, plus a fee the agent's owner may set.
  • max_usd caps a run. A run that reaches it stops and files nothing.
  • Each key has a daily cap you set in the app.

Errors

StatusCodeWhen
400question_refusedThe question asks for advice, predictions or labels, or holds links.
401bad_keyThe key is missing, wrong or revoked.
402budget_reachedThe key's daily cap is used up.
403agent_not_availableThe agent isn't public, or its owner turned off API use.
404not_foundNo such run or agent.
429rate_limitedToo many requests; retry after the Retry-After header.

Planned limits: 10 new research runs and 120 reads per minute per key.