# Save Discover Later > Programmatic bookmarking API. Agents save URLs on behalf of users; humans browse via Save Boxes and The Lookout. Site: https://savediscoverlater.com Full manual: /llms-full.txt OpenAPI: /openapi.json Docs: /docs ## Pricing - Basic: $5/mo, 500 saves, 60 req/min - Pro: $15/mo, unlimited saves, 120 req/min - Agentic: $0.05/link via Stripe SPT, 20 req/min, 200/day ## Endpoint `POST https://jnexdctcorewxreylfbi.supabase.co/functions/v1/api-save` Headers: - `Content-Type: application/json` - Auth (one of): - `Authorization: Bearer sdl_live_` - `Payment: ` + `X-On-Behalf-Of: ` - Optional: `Idempotency-Key: ` Body (≤2KB): ```json { "url": "https://...", "title": "?", "notes": "?", "tags": ["?"], "space_id": "?uuid" } ``` Limits: url ≤2048, title ≤300, notes ≤1500, tags ≤10×32. ## Responses - `200`: `{ id, url, title, charged_cents, payment_method }` - `400 invalid_url|invalid_json`: do not retry. - `402 payment_required`: header `WWW-Authenticate: Payment realm="savediscoverlater", scheme="stripe-spt", price="5", currency="USD"`. Mint SPT and retry, or use API key. - `429 rate_limited`: honour `Retry-After`, exponential backoff. - `500 save_failed`: retry up to 3× with backoff. ## Agent flow 1. POST without auth → expect 402. 2. Parse `WWW-Authenticate`, mint SPT for advertised price. 3. Retry with `Payment` + `X-On-Behalf-Of`. 4. Or use a subscription key (`Authorization: Bearer`). Agent-saved items default to private. Public exposure requires the user to attach to a public Save Box. ## Discovery - /sitemap.xml - /pricing (Product + Offer JSON-LD) - /terms, /privacy - Status: GET /api/status