https://api.aireserve.com. A RunPod
client whose base URL is repointed here — the REST v2 TypeScript SDK, the
runpod Python package, the Serverless job SDKs, the local RunPod MCP server,
runpodctl for part of its surface, a generated OpenAPI client, curl — keeps
working after two settings change: the base URL and the key. The gateway
authenticates your AI Reserve credential, swaps it for the upstream key of the
RunPod organization contracted for you, forwards the request exactly as you
sent it, and relays RunPod’s answer exactly as RunPod gave it. There is no
operation allowlist: the whole of RunPod REST v2, the GraphQL API and
Serverless job invocation pass through, minus a short list of
tenancy-protecting denials described under
What AI Reserve enforces.
This endpoint is for organizations with a RunPod contract that AI Reserve has
assigned to them: a RunPod Organization provisioned under that contract and
recorded against your AI Reserve organization. Without an assignment every
call is refused before it reaches RunPod.
This is a passthrough, not a translation. Resource ids, request bodies, response shapes, pagination,
RateLimit headers, application/problem+json errors, SSE log streams — all RunPod’s own. Resources you create
live in the RunPod organization contracted for you, so ids from a personal RunPod account do not carry over; RunPod
does not move personal resources into an organization on its own
(Access).How tenancy works
The isolation is RunPod’s, not a filter in the gateway.- The organization is the tenancy wall. RunPod Organizations are its enterprise account model: “an organization is a first-class entity that owns all resources independent of any individual member, including compute, storage, secrets, and templates”, and “A user belongs to at most one organization” (Organizations). The upstream key AI Reserve holds for you belongs to a member of your organization and to nothing else, so nothing outside it is reachable. RunPod notes that “Organizations are currently in beta. Runpod provisions organization accounts and enables them for your account” (Organizations) — which is why AI Reserve arranges the organization under the contract rather than creating it through an API.
- The Dev role bounds management. The member that minted the upstream key holds RunPod’s Dev role: “Full compute access with no billing or member management. Devs can deploy Pods, create Serverless endpoints, manage network volumes, Instant Clusters, and templates. They cannot view billing, manage cost centers, or manage members or groups” (Roles).
- The Restricted key bounds permission. RunPod API keys are created with
All, Restricted or Read Only access; a Restricted key sets
None, Restricted, Read/Write or Read Only per RunPod API
(API keys). Your
read/write credential maps to a Restricted key with Read/Write on the compute
APIs; your read-only credential maps to a Read Only key. RunPod enforces
these at the source: “Keys are scoped to the permissions granted when
created; requests may return
403when a valid key lacks access to the requested resource or action” (security scheme inopenapi.json). - Visibility follows the member. “By default, a member can only see
resources they created themselves. When a resource is assigned to a group,
all members of that group can see it, regardless of who created it”
(Groups). Everything you
create through this endpoint is created by that member and is visible to
you. A resource created directly in the RunPod console by someone else
appears through this endpoint only once an organization admin assigns it to
a group that member belongs to. Templates are listed “owned by the
authenticated user (including team/organization-scoped ones)”
(
GET /v2/templates).
Get a RunPod credential
A RunPod credential is an AI Reserve API key bound to a RunPod permission level. You never see a RunPod key.- In the portal open Compute › RunPod. The page shows the RunPod organization assigned to you (id and name, as RunPod reported them when AI Reserve verified the upstream key) and your existing credentials. If no organization is assigned yet, creating a credential is refused with “No RunPod organization is assigned to your organization yet. Contact AI Reserve to assign your contracted RunPod organization.”
- Choose a name and a permission:
- read-only — RunPod’s Read Only level. Lists and reads only:
GET/HEADon REST v2 and Serverless, queries only on GraphQL. Any mutation is refused by the gateway withThis RunPod credential is read-only.before it reaches RunPod. - read/write — RunPod’s Restricted level with Read/Write on pods, Serverless, templates, volumes, clusters and registries. Resource mutations pass; account and organization management does not (below).
- read-only — RunPod’s Read Only level. Lists and reads only:
- Copy the key. It is shown once; afterwards only its prefix and suffix are displayed. Organization admins create and revoke credentials; revoking one stops every client using it until you create another.
403 and the detail This API key is not a RunPod credential. Create one under Compute › RunPod in the AI Reserve portal. Keyless (OIDC) callers get the
same answer: the RunPod surface is key-only.
Which RunPod clients work
What to change
What AI Reserve enforces
Every refusal is RunPod-shapedapplication/problem+json — the
{ title, status, detail } envelope RunPod’s own errors use — and names its
cause in detail, so the SDKs surface it unchanged:
- Your organization’s policies. The credential is checked exactly as on
every AI Reserve endpoint: paused keys (
401,This key is paused — an admin can resume it from the API Keys page.), invalid keys (401,Invalid API key.), per-key IP allowlists and organization network policies (403), and rate limits (429withRetry-After). RunPod calls never touch the token wallet: a wallet outage or a zero token balance cannot turn a valid RunPod request into a402or503. - Tenancy. The credential is resolved to your assignment on every request
(memoised for 30 seconds). Refusals, all
403and all before any upstream call:This API key is not a RunPod credential. Create one under Compute › RunPod in the AI Reserve portal.No RunPod organization is assigned to this AI Reserve organization. Contact AI Reserve to assign your contracted RunPod organization.The assigned RunPod organization has no upstream credential at this key's permission level yet. Contact AI Reserve.— for example a read-only credential when AI Reserve holds only a read/write upstream key for your organization.503The RunPod credential for this organization could not be loaded. Retry; contact AI Reserve if it persists.— a transient lookup failure, or a stored key the gateway cannot decrypt. Never a fallback to any other key.
- Read-only credentials.
GET,HEADandOPTIONSon REST v2 and Serverless, queries on GraphQL. Anything else is403This RunPod credential is read-only. - The account secrets store is denied for every credential. Every method
on
/v2/account/secretsand/v2/account/secrets/*answers403The RunPod account secrets store is not available through AI Reserve. Registries and pod secrets are.RunPod tags both the secrets store and container registries with the samesecretsscope (x-runpod-scopeinopenapi.json), so a key that can reach your private registries can also read the organization’s secret store; the gateway closes that path. Registry credentials (/v2/registries*) and secrets passed in a pod’s environment are unaffected. - Account, organization and API-key management is denied on GraphQL for
every credential. A GraphQL document whose top-level mutation fields
include any of
createApiKey,updateApiKey,deleteApiKey,createSharedApiKey,createFlashAuthRequest,organizationInviteCreate,organizationInviteAccept,organizationInviteDelete,organizationMembershipUpdate,organizationMembershipDelete,organizationUpdate,groupCreate,groupUpdate,groupDelete,teamCreate,teamUpdate,teamDelete,teamInviteCreate,teamInviteDelete,teamJoin,teamMembershipUpdate,teamMembershipDelete,updateUserSettings,updateUserInformation,deleteUser,setDefaultPaymentMethodordeletePaymentMethodanswers403Account, organization and API-key management mutations are not available through AI Reserve.Aliases and variables do not get around the check, and a mutation document the gateway cannot parse is refused the same way. The check is also deliberately conservative: a mutation whose top-level selection uses a fragment spread, an inline fragment, or a directive, or whose operation head carries anything other than variable definitions, is refused as well, because the gateway cannot vouch for where such a document executes (a denied field inside any fragment definition is refused by name). Write mutations the way RunPod’s own clients do — named fields with arguments and nested selections — and they pass; fragments and directives below the top level are fine. Resource mutations — pods, endpoints, templates, volumes, registries, clusters — pass. The RunPod GraphQL API itself is deprecated and “will be retired in early 2027” (GraphQL API). - Headers. Your
Authorizationandx-api-keyare replaced by the upstream key;X-Team-Idis dropped (the upstream key is already bound to your organization);Accept-Encodingis pinned toidentityso RunPod’s bytes are the bytes relayed.Idempotency-Key,Last-Event-ID,x-runpod-*and SDK user agents go through. - A request log. Each forwarded call is recorded with method, path (any
credential-looking query value masked), RunPod’s
x-request-id, upstream status,RateLimit, byte counts, time-to-headers, duration, outcome, your key id, and the assignment, credential and organization ids it resolved to. Refusals are recorded with their outcome before any upstream request. Neither includes bodies or credentials. - Nothing else. No request rewriting, no field validation, no response
filtering. An error from RunPod is RunPod’s error, relayed with RunPod’s
status. If RunPod answers
401to a forwarded call, the upstream key was disabled or revoked in the RunPod console; the answer is relayed as-is and the credential is flagged for AI Reserve to rotate. - Transport. RunPod unreachable →
503; no response headers within the time-to-headers bound (sized for pod placement and/runsync?wait=) →504; a stream that has started is never cut by that bound.
Limits
- A fresh organization, driven through the API. Pods, volumes, templates, registries, endpoints and SSH keys created through this endpoint belong to the RunPod organization contracted for you. You do not get RunPod console access to it through AI Reserve, and resources from a previous RunPod account are not migrated.
- Usage is metered hourly into your AI Reserve ledger. RunPod organizations
“are billed on a post-paid invoice model”
(Billing); the
commitment and any overage sit on your AI Reserve order. Every hour, AI
Reserve reads RunPod’s own billing history for your organization and books
each pod, network volume, cluster and serverless endpoint hour to your
wallet at RunPod’s metered amount. Each hour appears as its own line in
Observe › Event Log and Financials (model
runpod:pod,runpod:network_volume,runpod:clusterorrunpod:serverless, with the RunPod resource id in its details). Hours settle about two hours behind real time.GET /v2/billing/*passes through and shows the same figures — RunPod’s rule is that “Dev members see their own usage only” (Billing), and the member behind your credential is exactly what you created through AI Reserve. - Capacity is RunPod’s decision. The gateway does not reserve cards or rewrite GPU choices; RunPod places the request under the organization’s contract. Requests outside the committed hardware or quantity still pass through and may be billed as overage by RunPod.
- No account secrets store, no management mutations (above). Manage SSH
keys through
PUT /v2/account/ssh-keysrather than the GraphQLupdateUserSettingsmutation. - RunPod’s own sunsets apply. REST v1 is not mounted and retires on
November 15, 2026 (REST API v1);
GraphQL retires in early 2027
(GraphQL API). Move
GraphQL and v1 integrations to REST v2 — RunPod’s
migration guide
and
/runpod:migratecover both. - Serverless and Instant Clusters are RunPod products reached through this endpoint; they are not AI Reserve catalog products and carry no AI Reserve quote or price ceiling. For multi-node training with a quote and a price ceiling, use AI Reserve clusters.
aireserve CLI.