Remote MCP with an API key: x-api-key or Bearer on Sume?
Sume's hosted MCP accepts a key as Authorization: Bearer or as x-api-key. Both see the full tool set; writes and paid calls still need an idempotency_key.

Either header works. Hosted Sume MCP accepts your Sume API key as Authorization: Bearer <SUME_API_KEY> or as x-api-key: <SUME_API_KEY>, and the session sees the full hosted tool set. Choose the header your client can set from an environment variable without writing the secret into a config file you commit.
A key session is the path for automation that cannot do an interactive OAuth consent, such as a job on a server. It does not skip the other gates: every write or paid call must still carry an idempotency_key, spending is governed by the wallet and admission, and the optional max_spend_usd is enforced only when you send it.
Key session vs OAuth session
The table restates the Sume MCP OAuth page, read 2026-10-09.
| Question | API key | OAuth |
|---|---|---|
| How it connects | Bearer or x-api-key header | Client runs OAuth against the MCP host |
| Tools visible | Full hosted tool set | mcp:read shows read-only tools; add mcp:write for write and paid tools |
| Paid or write call needs | idempotency_key | idempotency_key, plus the mcp:write grant |
| Spend control | Wallet and admission; optional max_spend_usd | Wallet and admission; no mcp:paid scope exists |
| Preferred for | Current automation | Interactive clients such as Cursor and Claude |
Keeping the key out of the wrong places
The credential rules in the docs apply to both credentials. Do not paste a key or token into a prompt, do not store OAuth tokens in CLI config, and do not forward either to third-party providers. If a key appears in logs or chat history, rotate it. Keys are created in the dashboard under API keys.
A related rule runs the other way. An OAuth token is not a Sume API key, and one cannot stand in for the other, so do not mint a key for a hosted OAuth client as a way around a missing scope.
A first-call checklist for a key session
Before the first paid call, spend a minute on four reads and one preview.
mcp_healthconfirms the endpoint and the auth source.tools_listshows what this session can call; a key session lists the write and paid tools too.account_meandbalance_getconfirm the workspace and the money available.generation_admission_previewordry_run=truepreviews cost before the first paid submit. The docs recommend it before expensive bursts, not for every single create.
When to prefer OAuth anyway
If a person is at the keyboard, OAuth gives you a smaller blast radius: leave Write off and the session cannot spend. A key session has no such switch, so keep its use to jobs where you have already decided what the agent may buy.
Worked example: a nightly job
Suppose a server job runs at night and needs to list yesterday's jobs and read the balance. It does not need a human consent screen, so a key session fits. Store the key in the job's secret manager, load it into an environment variable, and have the MCP client read that variable into the header. If the job only reads, you still get the full tool set on a key session, so the prompt must say plainly that the job is read-only and must not call paid tools.
If you would rather have a hard guarantee that nothing can be bought, use an OAuth session with Write off for that job. The tools are then not merely discouraged; they are hidden. That difference, between a rule in a prompt and a rule in the connection, is the main reason to choose OAuth even for scheduled work when a person can complete the one-time consent.
Sources
Related posts
More in Developers
- Replay a sume/auto video submit with one key, assert one job
Submit model sume/auto twice with the same Idempotency-Key and assert the same job id and the same route. Why a replay is safe and why Sume hides the family.
- Resume a Sume job wait after SumeJobTimeoutError in TypeScript
A 30-second Seedance 2.5 clip can outlast one waitForJob call. Call it again with the same job id on timeout or a transient read error. Never resubmit.
- Resume polling Sume video jobs after a restart with a sqlite ledger
Write the job id and Idempotency-Key to sqlite before anything else can crash, then resume polling open jobs on start. Python standard library only.
- Ruby Net::HTTP: Gemini Omni Flash 1.1 vertical 6 s clip, $0.75
Ruby standard library only: submit a 6-second 9:16 Gemini Omni Flash 1.1 clip to Sume ($0.75 at 720p) and poll to completion. Prices at four resolutions.
Written by Sume