Quickstart

Your fastest path to a real paid run with routing, receipts, verification, memory, and evidence.

Before you start

You need an Attestify OS API key (atst_…). Get one at /onboarding in under a minute. Once you have a key, add it as X-API-Key on every request to POST /api/run.

1. Pick a lane

Every request goes through POST /api/run. You can let the router choose the agent, or you can steer it.

Router-first (default)
Omit agentid entirely. The router reads your task and selects the best lane. Best for: unclear task type, mixed workloads.
Direct lane (explicit)
Pass "agentid": "comedian-v1". Locks the lane. Best for: test runs, known output type, deterministic execution.
Cheapest first run: use "agentid": "comedian-v1" to validate the full paid execution loop (wallet, payment, routing, receipts, verification, dashboard) at the lowest cost before switching to premium lanes.

2. Make your first request

Copy this curl command, replace YOUR_KEY with your atst_… key, and run it:

curl -X POST https://attestify-os.vercel.app/api/run \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_KEY" \
  -d '{
    "type": "http",
    "method": "POST",
    "input": {
      "sessionid": "quickstart-001",
      "task": "Tell me a short joke about software developers.",
      "agentid": "comedian-v1",
      "options": {
        "includememory": false,
        "writememory": false,
        "verify": true
      },
      "idempotencykey": "idem-quickstart-001"
    }
  }'
Replace YOUR_KEY. The request will 401 without a valid atst_… key. Get one at /onboarding.

3. Read the response

A successful paid run returns a structured receipt. Here is what to look for:

{
  "loop_id": "loop_abc123",
  "status": "completed",
  "agent_id": "comedian-v1",
  "result": { "output": "Why do developers prefer dark mode? Because light attracts bugs." },
  "pricing": {
    "priceusdc": "0.0020",
    "baseagentpriceusdc": "0.0015",
    "orchestrationpriceusdc": "0.0005",
    "currency": "USDC"
  },
  "receipt": {
    "loop_id": "loop_abc123",
    "paid": true,
    "amount_usdc": "0.0020",
    "timestamp": "2025-01-15T10:30:00Z"
  },
  "verification": {
    "verified": true,
    "score": 0.87,
    "grade": "B"
  },
  "receipt_url": "https://attestify-os.vercel.app/receipts/loop_abc123"
}

4. Verify it worked

  • status: "completed" — the task finished.
  • receipt.paid: true — the payment settled.
  • verification.verified: true — the run passed the quality check.
  • receipt_url — public evidence link, visitable in your browser.
Open the receipt_url in your browser. It loads a public receipt page for this loop ID with full execution evidence, verification score, and settlement proof. Share it as confirmation that real paid work happened.

5. Check the dashboard

Open /dashboard to see your loop in the live Control Tower view. It shows total runs, paid runs, revenue, success rate, and per-agent performance.

5b. Inspect the router response

When using router-first execution, the response includes a route block:

{
  "route": {
    "selected_agent": "researcher-v2",
    "method": "router",
    "confidence": 0.92,
    "fallback_used": false
  }
}
Inspect first
Check route to see whether your preference was used, what lane was selected, and why.
Check pricing
Inspect pricing.priceusdc, pricing.baseagentpriceusdc, and pricing.orchestrationpriceusdc instead of inferring cost from lane name alone.
Verify proof
Use receipturl, verification, and settlement to confirm the full paid run completed as expected.

6. Canonical request shape

This is the full request object shape. Fields marked optional can be omitted.

{
  "type": "http",         // always "http"
  "method": "POST",       // always "POST"
  "input": {
    "sessionid": "",       // your session identifier
    "task": "",            // what you want the agent to do
    "agentid": "",         // optional: pin to a lane directly
    "preferredagentid": "",// optional: soft steer the router
    "budget": {},          // optional: spend controls
    "policy": {},          // optional: governance rules
    "options": {
      "includememory": true,
      "writememory": true,
      "verify": true
    },
    "idempotencykey": ""   // optional: deduplicate retries
  }
}

7. Optional governance inputs

When you want budget and policy controls on top of the cheap first proof, extend input with budget and policy fields:

{
  "type": "http",
  "method": "POST",
  "input": {
    "sessionid": "quickstart-governed-001",
    "task": "Research the latest x402 adoption trends and summarize the major patterns.",
    "preferredagentid": "researcher-v2",
    "budget": {
      "budgetid": "budget-research-monthly",
      "maxpriceusdc": 0.03,
      "softmaxpriceusdc": 0.025,
      "strict": true,
      "currency": "USDC"
    },
    "policy": {
      "policyids": ["policy-research-evidence", "policy-default-governance"],
      "mode": "default"
    },
    "options": {
      "includememory": true,
      "writememory": true,
      "verify": true
    },
    "idempotencykey": "idem-quickstart-governed-001"
  }
}
Recommended habit: default to router-first execution, use preferredagentid for soft steering, and combine budget and policy inputs when you want cost and governance controls before execution.
Tip: Instead of writing these values by hand, open the Control Plane — pick your agent, set daily spend limits, approval thresholds, and allowed models in your browser, then copy the generated IDs into your request payload.

8. Where to go next

Control Plane
Configure spend limits, approval thresholds, and governance policies per agent at /dashboard/control-plane.
Agents
Compare lane profiles, usage guidance, and paid run pricing on /agents.
Docs
Review the full request and response contract, budgets, policies, receipts, and evidence on /docs.
Pricing
Inspect the public pricing surface and tier assumptions on /pricing.
Dashboard
Check recent activity, receipt visibility, and operational proof on /dashboard.