Skip to main content
API keys are the simplest way to authenticate with Jinko. They prefix with jnk_ and work everywhere, the SDK, the CLI, MCP clients, and direct REST calls. Use them for: agents, scripts, CI/CD, server-side apps, MCP clients without OAuth support. Don’t use them for: end-user-facing OAuth flows in MCP clients that support DCR (Claude Desktop, ChatGPT, Cursor, Codex, Openclaw).

Get a key

1

Sign in to the dashboard

gojinko.com/dashboard/keysFirst time? You’ll be auto-onboarded via Jinko Auth, no waitlist.
2

Create a key

Hit Create key, name it something memorable. Default monthly quota is 1,000 requests.
3

Copy it once

The full key is only shown once at creation. Store it somewhere safe (1Password, your secrets manager, etc.) before navigating away.If you lose it, just rotate, make a new one and delete the old.

Use a key

import { createJinkoClient } from '@gojinko/api-client'
const client = await createJinkoClient({ apiKey: 'jnk_...' })
Or via env: export JINKO_API_KEY=jnk_... and call createJinkoClient() with no args.

Sandbox keys

Jinko runs two isolated environments — production and sandbox (test the full flow without touching prod data). They use separate keys: a jnk_ key is scoped to the environment it was created in and won’t authenticate against the other. Generate a sandbox key from the dashboard, then point your client at the matching base URL:
SurfaceProductionSandbox
REST / SDKhttps://api.gojinko.comhttps://api.sandbox.gojinko.com
MCPhttps://mcp.builders.gojinko.com/mcphttps://mcp.builders.sandbox.gojinko.com/mcp
CLIdefault--env sandbox
The CLI and SDK have built-in environment switching (they store the two keys separately); for REST/MCP just use the sandbox URL above with your sandbox key.

Rotation

If a key leaks (committed to git, posted in chat, etc.):
  1. Create a new key in the dashboard.
  2. Update your scripts / env / config to use the new key.
  3. Delete the old key in the dashboard. Anything still using it stops working immediately.
Always rotate; never edit a key in place. There’s no rate-limited grace period.

Quotas

Free tier: 1,000 requests / 30 days, per key. Quota counters are per key, splitting work across multiple keys doesn’t help. Need more? Email dev@gojinko.com with your use case and we’ll bump it.

Common failures

SymptomLikely causeFix
401 UnauthorizedKey missing, mistyped, or revokedVerify the key in the dashboard; check for whitespace at start/end
401 with unexpected iss claimYou’re sending a CLI OAuth token, not an API keyUse a jnk_* key instead, see OAuth for why
429 Too Many RequestsMonthly quota exhaustedEmail dev@gojinko.com or wait for the next billing window
403 Forbidden on a specific endpointEndpoint requires a higher tier or a permission your account lacksCheck the dashboard for plan info; reach out if surprised
For 4xx debugging, also check the response body, Jinko returns a structured error object with a code and message. See Errors & troubleshooting.