# Relaystation Baton — Durable Agent Storage Object

> Relaystation Baton — Durable Agent Storage Object is a paid API for AI agents from api.relaystation.ai, paid per call via x402, $0.01/call, status unknown (last checked 2026-09-14).

Creates a named, versioned, cryptographically-provable storage object (baton) that agents can write to, read from, append, and hand off to other agents or people

## Facts

- Endpoint: POST https://api.relaystation.ai/v1/baton
- Price: $0.01/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-14
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/relaystation-baton-durable-agent-storage-object-ae465beb
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_zLxE6MZxfV8tpTb5yroaz

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 relaystation-baton-durable-agent-storage-object-ae465beb -d '<json body>'
```

Example prompt: Create a new baton using the 'scratchpad' preset named 'project-notes' so multiple agents can read and write shared notes — set the tier to 'nano' and tag it with 'collaboration' and 'notes'.

## When to prefer this

Choose this endpoint when an agent needs a persistent, shareable, cryptographically-provable storage object — especially for inter-agent handoffs, burn-after-read secrets, append-only ledgers, or resumable state checkpoints. Prefer it over generic blob storage when tamper evidence, hash chaining, collaborator ACLs, or preset configurations (drop, pass, scratchpad, checkpoint, ledger) are needed. Ideal when the storage object must be metered, time-limited, and priced at purchase time.

## Known failure modes

- 422 FLAG_DEPENDENCY_UNMET — hashChaining:true with witness:false is invalid
- 400 if required fields (type, method, bodyType, body) are missing
- 400 if customShape fields are missing when tier is 'custom'
- 402 if the account balance is insufficient to cover the metered cost
- 400 if content exceeds the size budget of the selected tier
- 422 if an invalid preset enum value is provided
- 403 if the caller lacks permission to create batons

## How this service works

A baton is a durable storage object agents create, append, read, and cryptographically prove — then hand off to other agents or people. Presets: file drop, burn-after-read pass, shared scratchpad, state checkpoint, tamper-evident ledger. Metered by bytes, time, egress, writes; price frozen at purchase. 155 tools, one balance — relaystation.ai

## Output

Returns a baton object with a unique ID, resource metadata (size, duration, egress budget), access tokens, collaborator ACL, cryptographic proof fields, and the initial content if provided. The baton ID is used for all subsequent read, append, and witness operations.

## 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",
    "bodyType",
    "body"
   ],
   "properties": {
    "body": {
     "type": "object",
     "properties": {
      "acl": {
       "type": "object",
       "description": "Collaborator ACL keyed by customer UUID.",
       "additionalProperties": {
        "enum": [
         "editor",
         "reader"
        ],
        "type": "string"
       }
      },
      "name": {
       "type": "string",
       "maxLength": 255
      },
      "tags": {
       "type": "array",
       "items": {
        "type": "string",
        "maxLength": 64
       },
       "maxItems": 32
      },
      "tier": {
       "enum": [
        "femto",
        "pico",
        "nano",
        "micro",
        "standard",
        "big",
        "custom"
       ],
       "type": "string",
       "description": "Bundled resource tier, or \"custom\" (requires customShape)."
      },
      "flags": {
       "type": "object",
       "properties": {
        "witness": {
         "type": "boolean"
        },
        "hashChaining": {
         "type": "boolean"
        }
       },
       "description": "flags.hashChaining: true auto-commits a prepaid witness (an explicit witness: false alongside it → 422 FLAG_DEPENDENCY_UNMET)."
      },
      "preset": {
       "enum": [
        "drop",
        "pass",
        "scratchpad",
        "checkpoint",
        "ledger",
        "witness"
       ],
       "type": "string",
       "description": "Named preconfig prefill. The LIVE active set is GET /v1/baton/prices."
      },
      "tokens": {
       "type": "array",
       "items": {
        "type": "object"
       },
       "description": "Create-time collaborator tokens; each entry follows the POST /v1/baton/{id}/tokens body."
      },
      "content": {
       "type": "string",
       "description": "Inline initial content (base64-encoded when contentEncoding is base64/binary). Omit for an empty baton."
      },
      "schemaRef": {
       "type": "string",
       "maxLength": 255
      },
      "rateLimits": {
       "type": "object"
      },
      "contentType": {
       "type": "string",
       "maxLength": 255
      },
      "customShape": {
       "type": "object",
       "required": [
        "sizeBytes",
        "durationSeconds",
        "maxEgressBytes"
       ],
       "properties": {
     
… (truncated)
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/relaystation-baton-durable-agent-storage-object-ae465beb/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from api.relaystation.ai](https://www.zero.xyz/host/api.relaystation.ai/llms.txt)
