---
title: "A race's committed world seed and its drand beacon (ORO-2756)"
method: GET
path: "/v1/public/races/{race_id}/seed-commitment"
tags: ["public"]
---

# A race's committed world seed and its drand beacon (ORO-2756)

`GET /v1/public/races/{race_id}/seed-commitment`

## Request

- Base URL: `https://api.oroagents.com`
- URL: `https://api.oroagents.com/v1/public/races/{race_id}/seed-commitment`
- Auth: none declared
- TypeScript: <https://skmtc.dev/oroagents/apis/oro-api/docs/v1/public/races/:race_id/seed-commitment/get.ts> (a function with typed inputs; its response is checked against the schema)

Published from race creation: `sha256(secret)` and the drand quicknet round the world seed waits for (the first at or after the qualifying close plus the offset). The beacon's signature appears once recorded; the secret, the world seed, the pinned world's pack hash and every rejected compile attempt appear when the race's results are revealed. 404 for a race without a commitment.

## Path parameters

- `race_id` string, uuid, required: Race ID

## Response `200`

Successful Response

- RaceSeedCommitmentResponse: Commit-then-beacon world seed record for one race (ORO-2756). Verify: ``sha256(secret) == secret_sha256``; ``drand_signature`` is drand quicknet's signature for ``drand_round`` (any drand client, chain ``drand_chain_hash``); ``drand_randomness == sha256(drand_signature)``; ``world_seed == sha256(secret || drand_randomness)``; attempt ``n``'s compile salt is ``HMAC-SHA256(world_seed, "oro-world:<race_id>:<n>")``, and attempts ``0..n-1`` are listed with their rejection reasons. Until the beacon is recorded, ``drand_round`` follows the rule ``first round at or after qualifying_closes_at + drand_offset_seconds``.
  - `race_id` string, uuid, required
  - `scheme` string, required
  - `secret_sha256` string, required
  - `drand_chain_hash` string, required
  - `drand_offset_seconds` integer, required
  - `drand_round` integer, required
  - `drand_round_time` string, date-time, required
  - `committed_at` string, date-time, required
  - `drand_signature` string, nullable: Set once the beacon is recorded
  - `drand_randomness` string, nullable
  - `revealed` boolean, required: True once the race's results are public
  - `secret` string, nullable: Published at reveal
  - `world_seed` string, nullable: Published at reveal
  - `world_pack_sha256` string, nullable: Published at reveal
  - `rejected_attempts` WorldAttemptPublic[], nullable: Every logged gate re-roll, published at reveal
    - `attempt` integer, required
    - `reason` string, nullable
    - `archive_sha256` string, nullable

## Other responses

- `404`: No commitment for the race
- `422`: Validation Error

## Changes

- **2026-10-19** `eab3507e806b`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/oroagents/apis/oro-api/changes/v1/public/races/:race_id/seed-commitment/get.md)

---

[API](https://skmtc.dev/oroagents/apis/oro-api.md) - [All operations](https://skmtc.dev/oroagents/apis/oro-api/llms.txt) - [OpenAPI document](https://skmtc.dev/oroagents/apis/oro-api/revisions/480df97b3966?raw)
