---
title: "Schedule a signed wake ($0.01)"
method: POST
path: "/v1/wake"
---

# Schedule a signed wake ($0.01)

`POST /v1/wake`

## Request

- Base URL: `https://soren.com`
- URL: `https://soren.com/v1/wake`
- Auth: none declared

Registers a wake ?in=<seconds> (30 to 2592000) from now. With ?url=<public https callback>, an Ed25519-signed receipt binding wake_id, scheduled_at and the actual fired_at is POSTed to it at the appointed time, retrying at 30s, 2m, 10m and 30m; the receipt is signed once and retries resend the identical copy — verify against https://soren.com/oracle-key.json. Without url, the wake is a pure timer: poll GET /v1/wake/{id} for free. Callback URLs must consent by echoing a registration challenge (200 with the challenge anywhere in the body) before anything is charged; https only, private address space refused, 50 registrations per target host per day. Nothing is charged until the wake is scheduled. No payload is stored — a wake knows its URL and its time, nothing else. Status and receipt remain readable for 7 days after firing, then the wake is deleted.

## Query parameters

- `in` integer, required
- `url` string, uri

## Response `201`

Scheduled. Carries wake_id, status_url and the settlement hash.

## Other responses

- `400`: Bad in or url. Nothing charged.
- `402`: Payment required.
- `422`: The callback URL did not consent to the handshake. Nothing charged.
- `429`: Rate limited, host capped, or repeated failed settlements.
- `503`: Not configured. Nothing charged.

---

[API](https://skmtc.dev/soren/apis/soren-free-games-api.md) · [All operations](https://skmtc.dev/soren/apis/soren-free-games-api/llms.txt) · [OpenAPI document](https://skmtc.dev/soren/apis/soren-free-games-api/revisions/00402cfcf30d?raw)
