Jewline
Public API
Read-only quota snapshot for a Jewline API key (all values are in quota tokens, the same units used for billing and plan limits) and public model status.
GET /v1/quota
Base URL: https://api.jewline.cc
Returns current usage and limits for the authenticated key.
Authentication
Send your full API key in one of these headers:
Authorization: Bearer jwl-…x-api-key: jwl-…
Do not send both headers with different values — the request will be rejected.
Response fields
subscription— total usage for the current billing period:used,limit,remaining.windows— rolling limits for subscription plans:h24(24 hours) andd7(7 days). Each window includesused,limit,remaining, whether it isactive, and optionalstartsAt/endsAttimestamps.windowHold— whentrue, rolling windows are paused (for example during an outage compensation).status—active,grace,expired, orrevoked.
Prepaid keys expose the subscription budget only; windows is an empty array.
Example
curl -sS https://api.jewline.cc/v1/quota \
-H "Authorization: Bearer jwl-YOUR_KEY"{
"keyPrefix": "jwl-abc123",
"status": "active",
"planId": "pro",
"windowHold": false,
"subscription": {
"used": 1234567,
"limit": 220000000,
"remaining": 218765433
},
"windows": [
{
"id": "h24",
"hours": 24,
"used": 120000,
"limit": 5500000,
"remaining": 5380000,
"active": true,
"startsAt": "2026-08-22T12:00:00.000Z",
"endsAt": "2026-08-23T12:00:00.000Z"
},
{
"id": "d7",
"hours": 168,
"used": 450000,
"limit": 8800000,
"remaining": 8350000,
"active": true,
"startsAt": "2026-08-16T12:00:00.000Z",
"endsAt": "2026-08-23T12:00:00.000Z"
}
]
}Errors
401— missing or invalid API key.405— method other than GET.
GET /v1/status
Public model availability, the same data as jewline.cc/status. No API key needed; CORS is open, and responses are cached for 60 seconds.
Every active text model is checked through the Jewline gateway every 15 minutes with a tiny completion request (up to 5 attempts per check). A single failed check is treated as a brief failure and is not counted; two or more failed checks in a row count as downtime, starting from the first one.
status— overall and per model:operational,degraded(the latest check failed and is awaiting confirmation),down(confirmed outage), orunknown(no recent checks).uptime— percentage over the last 24 hours, 7, 30 and 90 days;nullwhen there is no data.days— 90 UTC days, oldest first:uptime,downMinutes, andblips(brief failures not counted as downtime).last24h— 48 half-hour cells, oldest first, withstateup,blip,downornone.latencyMs— response time of the latest successful check.
curl -sS https://api.jewline.cc/v1/status{
"generatedAt": "2026-10-02T12:05:41.000Z",
"intervalMinutes": 15,
"status": "operational",
"models": [
{
"model": "gpt-6-sol",
"status": "operational",
"lastCheckedAt": "2026-10-02T12:00:00.000Z",
"latencyMs": 1840,
"uptime": { "h24": 100, "d7": 99.851, "d30": 99.965, "d90": 99.988 },
"days": [
{ "date": "2026-07-05", "uptime": 100, "downMinutes": 0, "blips": 1 },
"… 90 entries, oldest first …"
],
"last24h": [
{ "start": "2026-10-01T12:30:00.000Z", "state": "up" },
"… 48 half-hour cells, oldest first …"
]
}
]
}Reseller API
Manage resell keys programmatically. Base URL: https://api.jewline.cc/reseller/v1. Authenticate with a reseller token from the reseller dashboard → API: Authorization: Bearer jrs_…. Amounts are USD decimal strings in responses and numbers or strings in requests.
GET /account— balance, available and held funds, spend today / this month / 30 days, key counts.GET /models— every model with USD price per 1M tokens (input, output, cache read, cache write) or per image, plustokenRate.tokensPerUsd: how many Jewline tokens one dollar buys for token-limited keys (the Ultra plan rate, which follows EUR/USD). Each model's multiplier is applied to the tokens counted.GET /keys?status=&search=&limit=&offset=— list keys (status:active,disabled,expired,revoked).POST /keys— create a key; returns the key and itssecret(shown once).GET /keys/:id,PATCH /keys/:id— read or change name, note, limits, models, expiry, ordisabled.POST /keys/bulk— create up to 500 identical keys: the same body asPOST /keyspluscount. Names get#001,#002…; without anotethe keys share abatch-…tag. Returns{ batch, keys: [{ id, name, prefix, secret }] }— secrets are shown once.POST /keys/bulk-update—{ ids: [...], action: "disable" | "enable" | "revoke" }for up to 500 of your keys; returns how many changed.POST /keys/:id/rotate— issue a new secret; the old one stops working at once.DELETE /keys/:id— revoke permanently.GET /keys/:id/usage?limit=&offset=— per-request log with tokens andcostUsd(costTokensfor token keys).GET /ledger— top-ups and adjustments.
Key fields for POST / PATCH (omit a field to keep it; null removes a limit):
name(required on create, 1–80 chars),note.unit—"usd"(default) or"tokens", set on create and fixed afterwards. Token keys are limited in Jewline tokens and dollar keys in USD, but both are paid from your one USD balance (token keys at the Ultra plan price per token). A key only accepts limits in its own unit.budgetUsd— total spend cap;dailyLimitUsd,monthlyLimitUsd— UTC day / calendar month caps. Forunit: "tokens"usebudgetTokens,dailyLimitTokens,monthlyLimitTokens(whole numbers).rpm— requests per minute (1–10000).expiresInDaysorexpiresAt(ISO date);null= never.models— allowed model ids; an empty array allows all models.disabled—truepauses the key,falseresumes it.
curl https://api.jewline.cc/reseller/v1/keys \
-H "Authorization: Bearer jrs_YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"Order #4412","budgetUsd":5,"dailyLimitUsd":1.5,"expiresInDays":30,"models":["gpt-6-sol"]}'Customer keys
Resell keys start with sk- and work like any Jewline key on https://api.jewline.cc/v1 and on the reseller's verified domains (OpenAI- and Anthropic-compatible). Each request is charged from the reseller's balance at the listed price (token-limited keys: at the Ultra plan price per Jewline token); a worst-case amount is held while the request runs. Errors: 429 Insufficient balance, API key budget exhausted, Daily/Monthly spend limit reached, Rate limit exceeded; 403 for a model the key may not use.
GET /v1/balance with the customer key returns its status, spend, budget, remaining amount, daily/monthly usage, rpm, allowed models and expiry — without the reseller's internal name or note. For token keys currency is TOKENS and the amounts are spentTokens, budgetTokens, remainingTokens and limitTokens.
White-label domains
Add a hostname in the dashboard, then create a CNAME to api.jewline.cc and the TXT record shown at _api-verify.<hostname>. After verification HTTPS is issued automatically. The domain serves only the inference API, /v1/balance and a balance page at /, and accepts only that reseller's keys.
Billing
Long context costs 2×. When a request's context exceeds 256K tokens (uncached input + cache reads + cache writes), the whole request — output included — is charged at twice the usual quota. Output length does not count toward the threshold.