Skip to content
Sign in

API

Public /api/v1 catalog for this site and Shelf of Holding. Browse adventures, enemies, and mini links without authentication.

Interactive docs

Explore every endpoint, schema, and Try it out against this origin.

Open Swagger

Authentication

Catalog GET endpoints are public. Recommendations and adventure submissions require a signed-in user and an Authorization: Bearer <firebase-id-token> header.

# Public catalog read

curl "https://miniledger.futurehax.com/api/v1/adventures"

Rate limits

POST /api/v1/recommendations is limited to 10 requests per hour per Firebase uid. Exceeded limits return 429 with a Retry-After header (seconds until retry).

Endpoints

Base path /api/v1. Full request and response schemas live in Swagger.

Adventures

GET/api/v1/adventures

List adventures with optional search and filters.

GET/api/v1/adventures/{id}

Get one adventure with actors and official or Punch-Out mini links.

Actors

GET/api/v1/actors

List Foundry-sourced enemies, optionally by adventure.

Minis

GET/api/v1/minis

List official and Punch-Out minis with optional filters.

Recommendations

POST/api/v1/recommendations

Submit a mini suggestion for an adventure enemy (Bearer required).

Adventure submissions

POST/api/v1/adventure-submissions

Submit an adventure for catalog review (Bearer required; Discord intake).

Meta

GET/api/v1/openapi

OpenAPI 3.0 specification as JSON.

GET/api/v1/docs

Redirect to the interactive Swagger UI.

Error codes

Errors use a JSON envelope: { error, code, details? }.

unauthorized

Missing or invalid Firebase ID token.

invalid_argument

Request validation failed.

invalid_json

Request body is not valid JSON.

rate_limited

Too many requests; see the Retry-After header.

not_found

Requested resource was not found.

internal_error

Unexpected server error.

Next steps

Open SwaggerDiscordContact