I'm In The Book — Developer Resources & API
A public, read-only REST API for prices, art styles, story scenes and gift occasions.
Overview
I'm In The Book makes personalized keepsake storybooks starring a grandchild and their grandparents. This page documents our public REST API, which exposes the catalog data behind the store: current prices, the illustration styles a book can be drawn in, the story scenes a customer chooses from, and the gift-occasion pages we publish.
The API is read-only and built for programmatic access — scripts, integrations and AI agents alike. Every endpoint is a GET, every response is JSON, and the whole surface is described by a published OpenAPI 3 schema. No personal data, order data or internal identifiers are exposed. Creating and buying a book stays a human web flow at iminthebook.com.
Base URL & Versioning
All endpoints live under:
https://iminthebook.com/api/v1/
The API is versioned in the URL path. The current contract version is 1.0.0, served at /api/v1/.
Deprecation policy
- Backwards-incompatible changes are never made in place. A breaking change ships as a new version path (for example
/api/v2/) while the previous version keeps working. - Any endpoint or version scheduled for removal is announced at least 6 months in advance.
- Deprecated responses carry the
DeprecationandSunsetresponse headers giving the deprecation date and the retirement date. - Retirement dates are also published on this page, so a client can watch either the headers or
https://iminthebook.com/developers. - Additive changes (new endpoints, new optional response fields) can happen at any time within a version. Clients should ignore unknown JSON fields rather than failing on them.
Authentication
None. Version 1 requires no API key, token or signup — it serves public read-only catalog data. Ordering, checkout and anything touching a customer's photos or book remain on the human web flows and are not part of this API.
Endpoints
| Endpoint | What it returns |
|---|---|
GET /api/v1/status |
Service name, health indicator, API version and links to the docs, the OpenAPI schema and the website. |
GET /api/v1/pricing |
Current price list: hardcover book, digital book, gift wrap add-on, additional hardcover copy, and multi-book pricing. |
GET /api/v1/pricing/quote |
Itemized quote for one book. Query params: format_type (hardcover or digital) and gift_wrap (true/false). |
GET /api/v1/art-styles |
The six illustration styles a book can be drawn in, with ids and descriptions. |
GET /api/v1/scenes |
The selectable story scenes. Optional category filter: activity, food, funny or sweet. |
GET /api/v1/occasions |
Gift occasions with dedicated landing pages, each with a title, summary and absolute URL. |
Example: price quote
curl "https://iminthebook.com/api/v1/pricing/quote?format_type=hardcover&gift_wrap=true"
{
"currency": "USD",
"base_price": 74.99,
"gift_wrap": 7.99,
"discount": 0.0,
"total": 82.98
}
Example: art styles
curl https://iminthebook.com/api/v1/art-styles
{
"count": 6,
"art_styles": [
{
"id": "classic_storybook",
"name": "Classic Storybook",
"description": "Warm, traditional illustration with soft lighting and rich colors"
},
{
"id": "dreamy_watercolor",
"name": "Dreamy Watercolor",
"description": "Soft, ethereal pastel tones with gentle brushstrokes"
}
]
}
Example: scenes in one category
curl "https://iminthebook.com/api/v1/scenes?category=food"
{
"count": 9,
"scenes": [
{
"id": "food_ice_cream_square",
"label": "Ice cream at the town square",
"category": "food"
}
]
}
Rate Limits
Requests are limited to 60 requests per minute per IP address. Every response under /api/v1/ carries rate limit headers in the RFC RateLimit header fields for HTTP syntax:
RateLimit-Policy: "default";q=60;w=60
RateLimit: "default";r=59;t=42
q— the quota (requests allowed per window)w— the window length in secondsr— requests remaining in the current windowt— seconds until the current window resets
Exceeding the limit returns 429 Too Many Requests with a Retry-After header (whole seconds to wait) and a JSON body:
HTTP/1.1 429 Too Many Requests
Retry-After: 18
RateLimit-Policy: "default";q=60;w=60
RateLimit: "default";r=0;t=18
{"detail": "Rate limit exceeded. Retry after 18 seconds."}
Please back off until the window resets rather than retrying immediately. If you need a higher limit for a legitimate integration, email us.
Machine-Readable Resources
- /openapi.json — OpenAPI 3 specification covering every public endpoint.
- /docs — interactive API reference generated from that specification.
- /llms.txt — a plain-text summary of the site for language models and agents.
- /sitemap.xml — the full list of public pages.
Public pages also support content negotiation: send Accept: text/markdown to get a Markdown rendering of a page instead of HTML, or append a .md suffix to the path (for example /about.md or /developers.md).
Contact
Questions, bug reports or a request for a higher rate limit: email [email protected]. A human reads every message.