# Soren Verifiable Random Draw

> Soren Verifiable Random Draw is a paid API for AI agents from soren.com, paid per call via x402, $0.05/call, status unknown (last checked 2026-10-12).

Performs a tamper-proof random draw of n entries seeded by the drand League of Entropy beacon, returning winners and full derivation so anyone can verify the result

## Facts

- Endpoint: GET https://soren.com/v1/draw?utm_source=zero.xyz
- Price: $0.05/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-12
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/soren-verifiable-random-draw-55f147af
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_PyZ__uaaAfxuAHKy-in7a

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 soren-verifiable-random-draw-55f147af
```

Example prompt: Run a verifiable random draw for 500 entries and pick 3 winners — use drand round 4210000 so I can prove nobody influenced the result.

## When to prefer this

Choose this endpoint when you need a publicly auditable, tamper-proof random selection — especially for giveaways, lotteries, raffles, or any competition where trust and verifiability matter. The drand beacon seeding means neither the operator nor the caller can predict or influence the outcome. Use the future-round feature (round=) when you want to pre-commit to randomness before entries close, eliminating even the suspicion of manipulation. Prefer this over a simple RNG or internal shuffle whenever the fairness of the draw must be demonstrable to skeptical third parties.

## Known failure modes

- Invalid or non-existent drand round number returns an error
- n parameter missing or non-numeric causes a 400 bad request
- pick value exceeds n (drawing more than total entries) returns an error
- Future round not yet emitted — request will fail until beacon publishes that round
- Payment not settled or x402 header missing returns 402 Payment Required

## How this service works

A selection nobody can rig, including us. Seeded by the drand League of Entropy beacon: a distributed network emits one signed value every 30 seconds and no participant, Soren included, can choose or predict it. Returns the winners, the round, and the exact derivation so anyone can recompute the result. Name a FUTURE round with round= to remove even the assumption that we did not wait for a beacon we liked.

## Output

Returns the drawn winner indices or entry numbers, the drand round number used as the randomness seed, and the exact step-by-step derivation so any third party can independently recompute and verify the result.

## Request schema (JSON Schema)

```json
{
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "required": [
      "n"
     ],
     "properties": {
      "n": {
       "type": "string",
       "examples": [
        "100"
       ],
       "description": "How many entries are in the draw, numbered 1..n."
      },
      "pick": {
       "type": "string",
       "examples": [
        "3"
       ],
       "description": "How many to draw, without replacement. Default 1."
      },
      "round": {
       "type": "string",
       "examples": [
        "4210000"
       ],
       "description": "A drand round. Publish a FUTURE round in advance for a draw nobody can influence."
      }
     }
    }
   },
   "additionalProperties": false
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "n": "<int>",
  "pick": "<int>",
  "drawn": true,
  "beacon": {
   "round": "<int>",
   "randomness": "<64 hex>"
  },
  "winners": [
   "<int>"
  ],
  "signature": {
   "value": "<base64>",
   "algorithm": "Ed25519"
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/soren-verifiable-random-draw-55f147af/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from soren.com](https://www.zero.xyz/host/soren.com/llms.txt)
