InfiniteHD / API reference
Hosted storage and inference, through one server-side API.
Create an account, purchase storage through hosted checkout, create an API key, and use InfiniteHD from your own backend without exposing credentials to a browser.
01 / access
Create a server-side API key
Create an account, then open API keys in the developer console. The raw key is shown once. Store it in a server environment as INFINITEHD_API_KEY; never commit it or send it to a browser.
Every request uses Authorization: Bearer <key>. Missing, revoked, or invalid keys return 401.
02 / catalog
Use the governed verified catalog
Open the model console to search the bounded InfiniteHD catalog by model name, repository ID, or capability. The catalog includes governed candidates such as DeepSeek, Llama, Mistral, Qwen, and Phi; InfiniteHD does not proxy the entire public Hugging Face index, and an arbitrary public model ID cannot become a supported inference target.
A model is marked Compatible only after a real one-turn hosted chat check returns non-empty assistant text. The page shows the source link, verification evidence, and verification date for compatible records. Candidate records that are still pending or cannot run remain visible as Unverified or Unavailable with a safe provider, access, runtime, or resource reason; they are disabled in chat.
For an unverified or unavailable governed entry, choose Run hosted compatibility check in the model console. InfiniteHD sends the exact verification prompt through the hosted runtime and only stores Compatible when the real response contains assistant text. Configuration, access, runtime, rate, resource, and outage failures return one safe actionable reason, keep the model non-selectable, and can be retried. Search keys compact punctuation and spaces, so deep seek, deepseek, llama, and the common lamma spelling all resolve to governed records. A provider, access, task-routing, empty-response, or resource failure is shown as its specific cause; it does not make every public Hugging Face model supported.
03 / generation
Call inference from your server
Send only user and assistant messages. The response is normalized to the selected model ID and one assistant text string; the API does not create a session or append a turn for you.
curl -X POST "$INFINITEHD_BASE_URL/api/v1/inference" \
-H "Authorization: Bearer $INFINITEHD_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "<compatible-catalog-model-id>",
"messages": [
{"role": "user", "content": "Give me one concise idea for a developer tool."}
],
"temperature": 0.7
}'const response = await fetch(
`${INFINITEHD_BASE_URL}/api/v1/inference`,
{
method: "POST",
headers: {
Authorization: `Bearer ${process.env.INFINITEHD_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "<compatible-catalog-model-id>",
messages: [
{ role: "user", content: "Give me one concise idea for a developer tool." },
],
temperature: 0.7,
}),
},
);
const data = await response.json();Supported generation input is temperature from 0 to 2 (optional). Messages are limited to 50 items, 20,000 characters each, and 100,000 combined characters. The normalized success response is:
{
"model": "<compatible-catalog-model-id>",
"output": "One concise idea..."
}04 / allowance
Understand request and storage limits
The provisional Free plan includes 100 accepted inference requests per UTC calendar month and 10 MiB of persistent conversation storage. A provisional Developer plan allows 10,000 accepted requests and 1 GiB of persistent conversation storage. There is no self-service plan switch or checkout in this slice.
Valid authenticated requests for an available model count before the provider call, including requests that later receive a provider failure. Invalid requests, unauthorized keys, unavailable models, and model search do not consume inference allowance. Session names and turn content count as UTF-8 bytes; storage does not reset monthly.
{
"error": "quota_exceeded",
"limitType": "inference",
"planKey": "free",
"used": 100,
"limit": 100,
"requested": 1,
"resetAt": "2026-11-01T00:00:00.000Z"
}A quota_exceeded response returns HTTP 429. Inference requests are accepted again at the UTC reset; new sessions and turn appends are rejected when persistent storage is full, while existing history remains readable.
05 / durable context
Compose inference with session state
If your app needs durable conversation state, create a session and append the returned assistant text through the existing state API. Those calls remain account-isolated and versioned; inference never mutates them implicitly.
curl -X POST "$INFINITEHD_BASE_URL/api/v1/sessions" \
-H "Authorization: Bearer $INFINITEHD_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Support assistant"}'Use /api/v1/sessions/:id/turns for user and assistant turns and /history to read the latest or a bounded version. Another account receives the same generic 404 as a missing session.
06 / storage API
Infinite Hard Drive storage API
Infinite Hard Drive exposes account-scoped upload sessions, listing, private retrieval, deletion, and usage. Send a required lowercase SHA-256, complete the session only after the provider upload succeeds, and keep the API key on your server.
The verified legacy provider allows 512 MiB per account and 50 MiB per object. `.exe` files are accepted as opaque downloads within that ceiling and are never executed or previewed by the site.
Executable files can contain malware. Infinite Hard Drive does not verify files as safe. Download only files you trust. Use ?download=1 to retrieve a file as an attachment.
The public plan is provisionally priced at $20/month. 200 GB objects remain unavailable until an approved direct or multipart provider can support them reliably. R2 pricing reference.
View storage pricingcurl -X POST "$INFINITEHD_BASE_URL/api/v1/storage/uploads" \
-H "Authorization: Bearer $INFINITEHD_API_KEY" \
-H "Content-Type: application/json" \
-d '{"filename":"installer.exe","byteSize":"1048576","contentType":"application/octet-stream","sha256":"<64 lowercase hex characters>"}'
# The current verified fallback returns provider.uploadUrl. Send bytes as multipart:
curl -X POST "$INFINITEHD_BASE_URL/api/v1/storage/uploads/<uploadId>/legacy" \
-H "Authorization: Bearer $INFINITEHD_API_KEY" \
-F "file=@installer.exe"curl -X POST "$INFINITEHD_BASE_URL/api/v1/storage/uploads/<uploadId>/complete" \
-H "Authorization: Bearer $INFINITEHD_API_KEY" \
-H "Content-Type: application/json" \
-d '{"sha256":"<64 lowercase hex characters>"}'
curl "$INFINITEHD_BASE_URL/api/v1/storage/files" -H "Authorization: Bearer $INFINITEHD_API_KEY"
curl "$INFINITEHD_BASE_URL/api/v1/storage/files/<fileId>" -H "Authorization: Bearer $INFINITEHD_API_KEY"
curl -OJ "$INFINITEHD_BASE_URL/api/v1/storage/files/<fileId>?download=1" -H "Authorization: Bearer $INFINITEHD_API_KEY"
curl -X DELETE "$INFINITEHD_BASE_URL/api/v1/storage/files/<fileId>" -H "Authorization: Bearer $INFINITEHD_API_KEY"
curl "$INFINITEHD_BASE_URL/api/v1/storage/usage" -H "Authorization: Bearer $INFINITEHD_API_KEY"Upload responses use decimal strings for byte values. The fallback is app-proxied and capped at 50 MiB; a future signed direct or multipart provider can replace that transport without changing ownership, checksum, completion, or deletion semantics.
07 / failure behavior
Stable status codes
400— malformed JSON, invalid model ID, or message limits.401— missing, invalid, or revoked API key.404— the model ID is outside the governed catalog.422means a governed candidate is unavailable or unverified and includes a safe reason.413— the object exceeds the verified size or quota limit;429is reserved for rate/fair-use throttling.502/503— provider failure or missing platform AI configuration.
Error bodies contain a stable error code, model, reason code, and safe next action. Provider credentials and raw upstream details are never returned. Browser chat runs inference before writing turns; when inference fails, the submitted prompt stays in the composer and saved history is unchanged.