# OpenVerbs ULID Decode

> OpenVerbs ULID Decode is a paid API for AI agents from id.openverbs.com, paid per call via x402, $0.002/call, status unknown (last checked 2026-09-14).

Validates a 26-character ULID and extracts its embedded timestamp plus time and random components.

## Facts

- Endpoint: POST https://id.openverbs.com/v1/decode
- Price: $0.002/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-14
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/openverbs-ulid-decode-2cbe0da3
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_lGBVDp7fF8xXkDt4uJ53o

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 openverbs-ulid-decode-2cbe0da3 -d '<json body>'
```

Example prompt: Can you decode this ULID for me — 01ARZ3NDEKTSV4RRFFQ69G5FAV — and tell me what timestamp is embedded in it and whether it's valid?

## When to prefer this

Choose this endpoint when you need to validate a ULID's correctness and/or extract its embedded timestamp without writing your own parser. It is particularly useful in agent pipelines that ingest externally supplied ULIDs, need to audit event ordering, or must confirm an ID is well-formed before storing it. Prefer it over a generic UUID validator when your IDs are specifically ULIDs, as it understands ULID's Crockford base32 encoding and monotonicity properties.

## Known failure modes

- ULID shorter or longer than 26 characters returns a validation error
- Non-Crockford-base32 characters in the ULID cause a parse failure
- Empty or missing 'ulid' field returns a 400 bad request
- Malformed request body (missing required fields) returns a schema validation error
- Payment failure or insufficient funds returns a 402 error

## How this service works

Validate a ULID and extract its embedded timestamp and time/random components.

## Output

Returns whether the ULID is valid, the decoded UTC timestamp embedded in the first 48 bits, and the separated time and random components that make up the 26-character identifier.

## 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",
     "required": [
      "ulid"
     ],
     "properties": {
      "ulid": {
       "type": "string",
       "maxLength": 64,
       "minLength": 1,
       "description": "The 26-character ULID to decode."
      }
     },
     "additionalProperties": false
    },
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "POST"
     ],
     "type": "string"
    },
    "bodyType": {
     "enum": [
      "json",
      "form-data",
      "text"
     ],
     "type": "string"
    }
   },
   "additionalProperties": false
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/openverbs-ulid-decode-2cbe0da3/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from id.openverbs.com](https://www.zero.xyz/host/id.openverbs.com/llms.txt)
