Reuse what exists
Send no authorization header. Exact public hits return free; a miss reaches upstream without credentials and will normally be rejected.
Cache developer docs · v1
Send a familiar completion request. If the same request already exists, reuse it anonymously for free. If it does not, bring a key, generate it once, and leave it better for everyone.
Base URL
https://meetcache.ai
01 / Quickstart
Start anonymously. This request costs nothing when its exact answer is already in the public cache.
curl https://meetcache.ai/v1/completions \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-5.6-sol",
"prompt": "Why do otters hold hands?",
"max_tokens": 120
}'
Cache miss? Add your upstream API key. Cache detects the provider from the key, forwards the request, then stores the successful result for future anonymous reuse.
curl https://meetcache.ai/v1/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{"model":"gpt-5.6-sol","prompt":"Why do otters hold hands?","max_tokens":120}'
02 / Core concept
Cache looks nearby first, then shared storage, then the model. A result moves back through the same path.
The closest reusable copy. Edge entries are kept for 24 hours.
The durable shared generation. A hit here also warms the edge.
Your key selects the provider. Successful results become reusable.
Upstream errors and successful non-JSON responses pass through, but are not cached. Background storage or analytics failures never replace a successful model response.
03 / Cache identity
We SHA-256 a canonical fingerprint. JSON object key order does not matter, but meaningful request differences do.
| Input | In the key? | Why |
|---|---|---|
| Method + full URL | Yes | Includes the query string. |
| Request body | Yes | Objects are recursively sorted before hashing. |
| Provider metadata | Yes | Different metadata means a different request. |
| stream / stream_options | No | Streamed and JSON clients can share one generation. |
| Authorization | No | A keyed fill can become a future anonymous hit. |
If the body is not valid JSON, Cache still forwards it and fingerprints the exact raw bytes.
04 / Authentication
Send no authorization header. Exact public hits return free; a miss reaches upstream without credentials and will normally be rejected.
Send Authorization: Bearer …. You pay the upstream provider only when a new generation is needed.
Need identity-based limits or loaded credits? Compare access tiers →
05 / Streaming
Set "stream": true as usual. Stream settings are excluded from the fingerprint, so streaming and non-streaming callers share the same result.
ON A MISS
Chunks pass through immediately while Cache assembles a canonical JSON completion in the background.
ON A HIT
The canonical result is returned as an SSE data event followed by [DONE].
The answer is equivalent, but cached replay does not reproduce the original token-by-token chunk boundaries.
06 / API reference
/v1/completionsAccepts the native prompt-style OpenAI completions body. Replace https://api.openai.com with https://meetcache.ai; the rest of the request stays the same.
Also supported: /v1/responses · /v1/messages
/healthA lightweight liveness check. Returns {"status":"ok"}.
07 / Batch API
BETAUse the standard OpenAI Files and Batches APIs through Cache. Every JSONL request is checked against the shared cache first, and only misses are submitted to OpenAI.
{"custom_id":"answer-001","method":"POST","url":"/v1/responses","body":{"model":"gpt-5.6-sol","input":"Why do otters hold hands?"}}
POST/v1/files → /v1/batches
Upload with purpose batch, then create the batch using the returned file ID.
GET/v1/batches/:id
Authenticated polls advance submission and finalization. Keep polling until the batch reaches a terminal status.
Supported batch endpoints: /v1/responses, /v1/chat/completions, and /v1/completions. A cache failure stops processing rather than silently generating every request.
08 / Errors
Upstream status codes and response bodies pass through unchanged. Gateway routing errors use a compact JSON response.
09 / The important bit
Every successful generation may become available to anyone who sends the same request. Never put secrets, personal data, proprietary text, private URLs, credentials, or anything you cannot share into a Cache request.
Your authorization header is used for the upstream miss and is not part of the shared cache key.
That’s the whole idea.
Ask once. Answer many.