Want this on your own site? Agentic Commerce installs at sidratnam.com.
Full REST API for ChatGPT, Claude, Gemini, Perplexity, and custom agents. Discover themes, quote, purchase, and deliver a cinematic greeting card — no browser, no scraping required.
Four calls from zero to delivered card.
GET /api/agent/v1/themes — returns all 57 themes with occasion, recipient, and tone.
POST /api/agent/v1/quote — 30-minute price lock. Returns a quoteId to pass to checkout.
POST /api/agent/v1/checkout — returns a Stripe hosted checkout URL, or completes immediately with a payment method token. Idempotent via Idempotency-Key header. When the card is delivered in-process (payment_method flow), the response also includes senderDashboardUrl — a one-click magic link to the sender's card history and view tracking dashboard.
GET /api/agent/v1/order/{orderId} — poll until status: "delivered". Response includes the permanent card link.
On April 24, 2026, an AI agent completed this exact flow — no human involvement. See the card it delivered →
# 1. Pick a theme curl https://cinematiccard.com/api/agent/v1/themes # 2. Quote curl -X POST https://cinematiccard.com/api/agent/v1/quote \ -H "Content-Type: application/json" \ -d '{"theme":"mother","addons":{"photos":true},"agent":{"name":"MyAgent","orderReference":"ord-001"}}' # 3. Checkout curl -X POST https://cinematiccard.com/api/agent/v1/checkout \ -H "Content-Type: application/json" \ -H "Idempotency-Key: ord-001" \ -d '{ "quoteId": "qt_abc123", "cardData": { "theme": "mother", "recipientName": "Mom", "senderName": "Sarah", "message": "Thank you for everything. Love you always.", "senderEmail": "[email protected]" }, "recipient": {"email": "[email protected]"}, "addons": {"photos": true}, "payment": {"method": "hosted_checkout"}, "agent": {"name": "MyAgent", "orderReference": "ord-001"} }' # Response (payment_method flow): {"orderId":"a1b2c3","status":"delivered","cardUrl":"...","senderDashboardUrl":"..."} # Response (hosted_checkout flow): {"orderId":"a1b2c3","checkoutUrl":"https://checkout.stripe.com/..."} # 4. Poll until delivered curl https://cinematiccard.com/api/agent/v1/order/a1b2c3 # 5. Check if recipient has viewed the card curl https://cinematiccard.com/api/agent/v1/order/a1b2c3/views # Response: {"viewed":true,"viewCount":3,"firstViewedAt":"2026-05-10T14:22:00Z","lastViewedAt":"2026-05-11T09:05:00Z"}
Base URL: https://cinematiccard.com/api/agent/v1
| Method | Path | Description |
|---|---|---|
| GET | /health | Server health, database, Stripe status |
| GET | /manifest | Full discovery document — all endpoints, auth, payment methods, idempotency |
| GET | /openapi.json | OpenAPI 3.1 specification |
| GET | /themes | All 57 themes with key, label, occasion, recipient, tone, previewUrl |
| GET | /pricing | Current pricing tiers and bulk rates |
| POST | /quote | 30-minute price lock. Returns quoteId to pass to /checkout |
| POST | /checkout | Create order. Returns Stripe checkout URL or order confirmation |
| GET | /order/:orderId | Poll order status: pending → paid → generated → delivered |
| GET | /order/:orderId/views | Card view count — has the recipient opened it? Returns viewed, viewCount, firstViewedAt, lastViewedAt |
Base URL (v2, ABT-C): https://cinematiccard.com/api/agent/v2
| Method | Path | Description |
|---|---|---|
| POST | /checkout | ABT-C v2 checkout. Consumer-encrypted fields, key escrow via sidratnam.com. No plaintext PII transmitted. Returns encrypted response. ABT-C v2 |
| POST | /subscribe | ABT-C v2 Event Planner Pro subscription. Payment method ref encrypted client-side. ABT-C v2 |
CinematicCard is live on every major agentic commerce protocol. All five run in parallel — each handles a different layer of the agent interaction.
POST /api/agent/v1/checkout
POST /a2a/merchant_agent
POST /api/ucp/mcp
GET /.well-known/agent.json
POST /api/agent/v2/checkout
Conditional consumer-side encryption. Activates only when the consumer device signals ABT capability. Live in production. ABT-C spec →
ABT-C v2 is not a replacement for AP2, UCP MCP, or the ACP REST API. It is a cryptographic layer that sits beneath them — activating conditionally when both parties support it.
Standard path — AP2 IntentMandate, UCP MCP create_checkout_session, and ACP REST /checkout all route to the standard Stripe checkout by default. No ABT overhead.
ABT-C path — When the consumer's device includes abt_consumer_pubkey or the request carries abt_origin, the same endpoints route to /api/agent/v2/checkout. The consumer's PII never crosses the network in plaintext.
What it adds — Per-tier key derivation, registry witness mode, retention-enforced PII destruction. The three structural properties described at sidratnam.com/abt-c.
After receiving an ABT response, verify the envelope signature against the JWKS public key. The signature is permanent (it does not expire). Decryption of the envelope contents requires calling decrypt_envelope before the retention period expires; after expiry, decryption fails with error code -32005 and the data is unrecoverable.
| File | Purpose |
|---|---|
| /.well-known/abt-retention-policy.json | Declared retention windows, deletion guarantees, compliance info |
| /.well-known/jwks.json | Ed25519 public key in JWKS format — verify envelope signatures offline |
CinematicCard is live on ABT-C v2 with 50 verified production scenarios. Last verified: 2026-05-11. Covered by US Provisional Application No. 64/056,353.
The correct architecture for privacy-preserving agent commerce. PII never leaves the consumer's device in plaintext — not even to reach the merchant API.
In earlier ABT versions, the consumer co-signed an envelope after the merchant had already received their data. ABT-C v2 inverts this: the consumer generates the encryption key before making the request, encrypts all PII client-side via HKDF, and deposits the key in a neutral escrow at sidratnam.com. The merchant only ever receives ciphertext. To fulfil the order, the merchant proves its identity via a short-lived JWT and collects the key — the escrow logs the handoff permanently.
HKDF-SHA256 derives a 32-byte key from a master secret, scoped to tx_id + merchant domain + policy version. The key never leaves the consumer's device.
Each field (email, name, message…) is independently AES-256-GCM encrypted with the per-tx key. Only ciphertext is transmitted.
POST https://sidratnam.com/api/txn/register with { tx_id, per_tx_key, merchant_domain }. The escrow holds it for a configurable window (default 5 min).
CinematicCard signs a short-lived JWT with its Ed25519 key and POSTs it to the callback_url you supply. Sidratnam.com verifies the signature against the published JWKS and releases the per-tx key. The handoff is logged permanently.
The order confirmation (order_id, card_url, envelope_id…) is AES-256-GCM encrypted with the same per-tx key. Only the consumer can decrypt it. An 18-tier ABT-C envelope is built and stored — operational_consumer tier holds the original ciphertext, operational_merchant holds a merchant-encrypted summary.
{
"abt_version": "2",
"tx_id": "<uuid — generated by consumer>",
"callback_url": "https://sidratnam.com/api/txn/<tx_id>/key",
"encrypted_fields": {
/* each field independently AES-256-GCM encrypted with per-tx key */
"recipient_email": { "ciphertext": "...", "iv": "...", "tag": "..." },
"sender_email": { "ciphertext": "...", "iv": "...", "tag": "..." },
"recipient_name": { "ciphertext": "...", "iv": "...", "tag": "..." },
"message": { "ciphertext": "...", "iv": "...", "tag": "..." }
},
"plaintext_fields": {
"theme": "elegant",
"music": "piano",
"promo_code": "..."
},
"retention_context": { "retention_seconds": 2592000, "policy_version": "20260502-001" }
}
/* outer wrapper */ { "encrypted_response": { "ciphertext": "...", "iv": "...", "tag": "..." } } /* decrypted payload */ { "ok": true, "order_id": "a1b2c3", "card_url": "https://cinematiccard.com/c/a1b2c3.html", "status": "generated", // or "pending_payment" "abt_origin": "abt-c", "schema_version": "abt-c-v2", "envelope_id": "<uuid>" // 18-tier envelope stored in vault }
| Guarantee | How it's enforced |
|---|---|
| No plaintext PII in DB | orders table stores sentinel [email protected] — verified by production test S03 and S05 |
| Consumer holds the key | per-tx key deposited in sidratnam.com escrow, not stored at CinematicCard — merchant proves JWT identity to collect it |
| Response encrypted | Order confirmation AES-256-GCM encrypted with same per-tx key — only consumer can read it (S01, S06) |
| 18-tier envelope | operational_consumer tier holds verbatim ciphertext; 16 other tier slots reserved for registered authorities |
| Escrow handoff logged | GET /api/txn/:tx_id/status on sidratnam.com returns delivered + timestamp once key was handed to merchant (S02) |
// Node.js const perTxKey = crypto.hkdfSync( 'sha256', masterKeyBytes, // 32-byte consumer master secret txId, // UUID — unique per transaction JSON.stringify({ merchant_domain: 'cinematiccard.com', expiry_ts, policy_version }), 32 ); // Re-derive with same inputs to re-decrypt any response
Discovery: /.well-known/ucp — UCP manifest with abt_checkout_url pointing to this endpoint.
Compliance: GET https://sidratnam.com/api/abt/v1/registry/compliance/cinematiccard.com
Pay per card. No subscription. No monthly fees.
+$1.00 scheduled delivery. Bulk: 25 @ $7.99 · 50 @ $6.99 · 100 @ $5.99 · 250 @ $4.99 · 500 @ $3.99. Full pricing →
Use the key in your checkout request. GET /themes for full metadata.
motherMother's Daymother-gardenGarden Mommother-goldenGolden Mommother-oyveyOy Vey Mommother-foreverForever MomfatherFather's Dayfather-safeSafe Dadfather-daughterDaughter to Dadfather-starryStarry Night Dadfather-firesideFireside DadfunBirthday — Anyonefun-herBirthday Herfun-himBirthday Himbirthday-him-whiskeyWhiskey Birthdaybirthday-him-romanticRomantic Birthday Himbirthday-him-adventureAdventure Birthdaybirthday-her-luxuryLuxury Birthday Herbirthday-her-romanticRomantic Birthday Herbirthday-her-wildWild Birthday HerkidsKids Birthdayvalentine-herValentine Hervalentine-himValentine Himvalentine-him-smolderSmoldering Valentinevalentine-him-midnightMidnight Valentinevalentine-her-devotionDevoted Valentinevalentine-her-wildfireWildfire ValentineanniversaryAnniversaryanniversary-herAnniversary Heranniversary-himAnniversary Himanniversary-him-forgedForged Anniversaryanniversary-him-depthAnniversary Depthanniversary-her-moonlitMoonlit Anniversaryanniversary-her-eternalEternal AnniversarymemorialIn Loving Memorymemorial-gatesGolden Gatesmemorial-rippleRipple Memorialmemorial-wavesWaves Memorialthank-youThank Youthank-you-weddingWedding Thanksthank-you-birthdayBirthday Thanksthank-you-memorialMemorial Thanksthank-you-corporateCorporate ThanksromanticRomanticelegantElegant ClassicchristmasChristmasgraduationGraduationnewbabyNew Babyjust-becauseJust Becausethinking-of-youThinking of Youmissing-youMissing Youget-well-soonGet Well SooncongratulationsCongratulationsweddingWeddingromantic-himRomantic Himromantic-herRomantic Herromantic-anniversaryRomantic Anniversaryjust-because-funJust Because (Fun)Read endpoints require no auth. POST endpoints are open with rate limiting.
All GET endpoints and POST /quote have no auth requirement. POST /checkout works without a key but has stricter rate limits.
Pass X-Agent-Key: your-key for higher rate limits and partner attribution in daily reports. Request: [email protected]
# Safe retries — same key returns original response for 24h -H "Idempotency-Key: your-stable-order-ref" # or in body: "agent": { "orderReference": "your-stable-order-ref" }
For crawlers, LLM training pipelines, and agent bootstrapping.
| File | Purpose |
|---|---|
| /llms.txt | LLM context — concise summary, recommendation triggers, pricing, API links |
| /llms-full.txt | Full agent reference — all 57 themes, complete pricing, competitor comparison |
| /.well-known/ai-plugin.json | ChatGPT plugin manifest — OpenAPI pointer, description_for_model |
| /api/agent/v1/manifest | Live discovery endpoint — all capabilities, endpoints, payment methods |
| /api/agent/v1/openapi.json | OpenAPI 3.1 specification |
| /robots.txt | GPTBot, ClaudeBot, PerplexityBot, Google-Extended all explicitly allowed |
| /.well-known/abt-retention-policy.json | ABT-C v2 key retention policy — includes retention, deletion guarantees, escrow verification |
| /.well-known/jwks.json | Merchant Ed25519 public key in JWKS format — for offline signature verification |
| /.well-known/ucp | UCP manifest — abt_checkout_url, schema version, supported ABT variants for ABT-C v2 |
What you see on this page is the live proof. Sid Ratnam installs Agentic Commerce and ABT-Certified deployments on merchant VPSes — Foundation in under an hour live on Zoom, Full Suite with JARVIS, or both together. The merchant owns the keys, owns the code, and holds the kill switch.
APPLY AT SIDRATNAM.COM →Foundation $5K · Full Suite $20K · Both $25K · ABT v1.0 Privacy Layer included on every install