# orbit x402 Picks API

> orbit x402 Picks API is a paid API for AI agents from x402-picks.orbit-builder.workers.dev, paid per call via x402, $0.005/call, status unknown (last checked 2026-10-30).

Given a task description, returns the top 5 most relevant and active paid x402 API endpoints from the Coinbase Bazaar catalog, ranked by relevance, demand, and liveness.

## Facts

- Endpoint: GET https://x402-picks.orbit-builder.workers.dev/v1/recommend?utm_source=zero.xyz
- Price: $0.005/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-30
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/orbit-x402-picks-api-2f55be9e
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_TNQAk8WScXYRQtrlI1ytz

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability orbit-x402-picks-api-2f55be9e
```

Example prompt: Find me the top 3 live x402 endpoints on Base that can get crypto token prices, priced under $0.01 each.

## When to prefer this

Use this endpoint when an AI agent needs to dynamically discover which x402-paid API to call for a given task, especially when the best endpoint isn't known in advance. Prefer it over static catalogs or manual searches when you want real-time demand signals (unique payers, recency), liveness verification, and BM25 relevance ranking over the full Coinbase Bazaar catalog. Ideal for agent orchestration layers that need to route subtasks to the most appropriate and actively-used paid microservice.

## Known failure modes

- Missing 'task' query parameter returns a 400 validation error
- Task string shorter than 2 chars or longer than 300 chars is rejected
- No matching live endpoints returns an empty picks array
- Invalid chain identifier returns a filter error or empty results
- max_price filter too restrictive results in zero picks
- Endpoint index may be up to 6 hours stale since it rebuilds every 6 hours

## How this service works

x402 endpoint recommender, $0.005 USDC per call: describe a task, get the top 5 paid x402 endpoints to call. BM25 relevance over the Coinbase Bazaar catalog, re-ranked by real demand (unique payers 30d), recency of last paid call, price and a liveness probe (402 seen); dead endpoints excluded, max 2 per host. Filters: chain, max_price, live, method. Each pick: url, method, price_usd, networks, payers, last_called_at, liveness, score. Free: /v1/preview?task= (top 1). Index of 9398 endpoints with recent paying users, rebuilt every 6h. Neutral ranking; no paid placement. By orbit-builder.

## Output

A JSON object containing the task echo, number of picks returned, index metadata (source, build timestamp, total endpoints), applied filters, and an array of up to 10 ranked endpoint picks — each with URL, HTTP method, price in USD, supported payment networks, demand metrics (calls and unique payers over 30 days, last called timestamp), liveness status, and relevance score.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "required": [
      "task"
     ],
     "properties": {
      "live": {
       "type": "string",
       "description": "1 = only endpoints that answered our last probe with HTTP 402"
      },
      "task": {
       "type": "string",
       "description": "what the endpoint should do (2-300 chars); aliases need, q, query"
      },
      "view": {
       "type": "string",
       "description": "compact (default) | full (adds score_breakdown and input_example)"
      },
      "chain": {
       "type": "string",
       "description": "payment network filter: base, solana, polygon, arbitrum, ... or CAIP-2 (eip155:8453); comma list"
      },
      "limit": {
       "type": "integer",
       "maximum": 10,
       "minimum": 1,
       "description": "picks to return (default 5)"
      },
      "method": {
       "type": "string",
       "description": "GET | POST | MCP"
      },
      "max_price": {
       "type": "number",
       "description": "max price per call in USD (alias max_price_usd)"
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "required": [
      "task",
      "picks"
     ],
     "properties": {
      "task": {
       "type": "string"
      },
      "count": {
       "type": "integer"
      },
      "index": {
       "type": "object"
      },
      "picks": {
       "type": "array",
       "items": {
        "type": "object",
        "properties": {
         "url": {
          "type": "string"
         },
         "rank": {
          "type": "integer"
         },
         "score": {
          "type": "number"
         },
         "demand": {
          "type": "object",
          "properties": {
           "calls_30d": {
            "type": "integer"
           },
           "last_called_at": {
            "type": "string"
           },
           "unique_payers_30d": {
            "type": "integer"
           }
          }
         },
         "
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "task": "get token price on base",
  "count": 1,
  "index": {
   "source": "CDP Bazaar discovery",
   "built_at": "2026-10-23T17:16:02.185Z",
   "endpoints": 9398
  },
  "picks": [
   {
    "url": "https://crypto.apitoll.cloud/v1/crypto/price",
    "rank": 1,
    "score": 0.874,
    "demand": {
     "calls_30d": 2100,
     "last_called_at": "2026-10-23T16:00:00.000Z",
     "unique_payers_30d": 69
    },
    "method": "GET",
    "service": "apitoll crypto",
    "liveness": "402_ok",
    "networks": [
     "eip155:8453"
    ],
    "price_usd": 0.001,
    "description": "Latest crypto token prices by ticker symbol, CoinGecko id, or chain:address",
    "how_to_call": "GET https://crypto.apitoll.cloud/v1/crypto/price -> HTTP 402 -> sign x402 payment -> retry with PAYMENT-SIGNATURE"
   }
  ],
  "filters": {
   "live": false,
   "chain": [
    "eip155:8453"
   ],
   "method": null,
   "max_price": 0.01
  },
  "considered": 3920
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/orbit-x402-picks-api-2f55be9e/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from x402-picks.orbit-builder.workers.dev](https://www.zero.xyz/host/x402-picks.orbit-builder.workers.dev/llms.txt)
