Aquanode Credits API
The Credits API from Aquanode — 6 operation(s) for credits.
The Credits API from Aquanode — 6 operation(s) for credits.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/aquanode-io:aquanode-io-credits-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
version: 1.0.0
title: Aquanode Orchestrator Credits API
description: API documentation for the Aquanode deployment orchestrator.
servers:
- url: /api/v1
tags:
- name: Credits
paths:
/credits:
get:
summary: Get team credits
description: 'Retrieves the total available credits for the current team, and the team''s prepaid plan (null when it has none, { status: ''unknown'' } when the plan lookup failed and only the balance is trustworthy), and tiersOnSale (the plan tiers checkout currently accepts; empty while plans are switched off). remainingCredits is 0 once the current grant has expired. Every field named *Credits is in credits (100 credits = $1); currentPeriodEnd is ISO 8601 UTC.'
tags:
- Credits
security:
- BearerAuth: []
responses:
'200':
description: Team credits retrieved successfully
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
type: object
properties:
credits:
type: number
plan:
anyOf:
- $ref: '#/components/schemas/TeamPlanSummary'
- type: object
properties:
status:
type: string
enum:
- unknown
required:
- status
- {}
tiersOnSale:
type: array
items:
type: string
enum:
- creator
- studio
- team
required:
- credits
- plan
- tiersOnSale
message:
type: string
example: Operation successful
timestamp:
type: string
example: '2026-11-09T19:02:47.229Z'
required:
- success
- data
- timestamp
'401':
description: Unauthorized
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: false
error:
type: string
example: Error message
timestamp:
type: string
example: '2026-11-09T19:02:47.229Z'
required:
- success
- error
- timestamp
operationId: getCredits
x-operation-id-source: derived
/credits/details:
get:
summary: Get detailed credit info
description: Retrieves comprehensive credit usage statistics and transaction history.
tags:
- Credits
security:
- BearerAuth: []
responses:
'200':
description: Detailed credit info retrieved successfully
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
type: object
properties:
currentCredits:
type: number
totalSpent:
type: number
totalPurchased:
type: number
usageStatistics:
type: object
properties:
averageDailyUsage:
type: number
estimatedDaysRemaining:
type:
- number
- 'null'
dailyUsage:
type: object
additionalProperties:
type: number
required:
- averageDailyUsage
- estimatedDaysRemaining
- dailyUsage
recentTransactions:
type: array
items:
type: object
properties:
id:
type: string
type:
type: string
amount:
type: number
timestamp:
type: string
deploymentId:
type:
- string
- 'null'
balanceAfter:
type: number
metadata: {}
required:
- id
- type
- amount
- timestamp
- deploymentId
- balanceAfter
summary:
type: object
properties:
lifetimeSpent:
type: number
lifetimePurchased:
type: number
netUsage:
type: number
transactionCount:
type: number
required:
- lifetimeSpent
- lifetimePurchased
- netUsage
- transactionCount
required:
- currentCredits
- totalSpent
- totalPurchased
- usageStatistics
- recentTransactions
- summary
message:
type: string
example: Operation successful
timestamp:
type: string
example: '2026-11-09T19:02:47.229Z'
required:
- success
- data
- timestamp
'401':
description: Unauthorized
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: false
error:
type: string
example: Error message
timestamp:
type: string
example: '2026-11-09T19:02:47.229Z'
required:
- success
- error
- timestamp
operationId: getCreditsDetails
x-operation-id-source: derived
/credits/purchase:
post:
summary: Purchase credits
description: Purchases the specified credit amount via the given currency; price is derived server-side from creditAmount.
tags:
- Credits
security:
- BearerAuth: []
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PurchaseCredits'
responses:
'200':
description: Credits purchased successfully
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data: {}
message:
type: string
example: Operation successful
timestamp:
type: string
example: '2026-11-09T19:02:47.229Z'
required:
- success
- timestamp
'400':
description: Invalid request data
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: false
error:
type: string
example: Error message
timestamp:
type: string
example: '2026-11-09T19:02:47.229Z'
required:
- success
- error
- timestamp
'401':
description: Unauthorized
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: false
error:
type: string
example: Error message
timestamp:
type: string
example: '2026-11-09T19:02:47.229Z'
required:
- success
- error
- timestamp
operationId: postCreditsPurchase
x-operation-id-source: derived
/credits/purchase/usd:
post:
summary: Purchase credits in USD
description: Initiates a credit purchase process using USD.
tags:
- Credits
security:
- BearerAuth: []
requestBody:
content:
application/json:
schema:
type: object
properties:
creditAmount:
type: number
minimum: 500
customerEmail:
type: string
format: email
required:
- creditAmount
- customerEmail
responses:
'200':
description: USD purchase initiated successfully
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data: {}
message:
type: string
example: Operation successful
timestamp:
type: string
example: '2026-11-09T19:02:47.229Z'
required:
- success
- timestamp
'400':
description: Invalid request data
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: false
error:
type: string
example: Error message
timestamp:
type: string
example: '2026-11-09T19:02:47.229Z'
required:
- success
- error
- timestamp
'401':
description: Unauthorized
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: false
error:
type: string
example: Error message
timestamp:
type: string
example: '2026-11-09T19:02:47.229Z'
required:
- success
- error
- timestamp
operationId: postCreditsPurchaseUsd
x-operation-id-source: derived
/credits/plans/checkout:
post:
summary: Start a prepaid plan checkout
description: Creates a Polar checkout for a monthly plan and returns its URL. Each paid period grants GPU credit at face value into the team wallet; unused plan credit expires at period end plus 24 hours. Answers 503 (reason plans_disabled) while plans are switched off and 409 (reason plan_exists) when the team already has a live plan.
tags:
- Credits
security:
- BearerAuth: []
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PlanCheckout'
responses:
'200':
description: Plan checkout created successfully
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
type: object
properties:
checkoutUrl:
type: string
required:
- checkoutUrl
message:
type: string
example: Operation successful
timestamp:
type: string
example: '2026-11-09T19:02:47.229Z'
required:
- success
- data
- timestamp
'400':
description: Invalid request data
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: false
error:
type: string
example: Error message
timestamp:
type: string
example: '2026-11-09T19:02:47.229Z'
required:
- success
- error
- timestamp
'401':
description: Unauthorized
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: false
error:
type: string
example: Error message
timestamp:
type: string
example: '2026-11-09T19:02:47.229Z'
required:
- success
- error
- timestamp
'409':
description: The team already has a plan
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: false
error:
type: string
example: Error message
timestamp:
type: string
example: '2026-11-09T19:02:47.229Z'
required:
- success
- error
- timestamp
'503':
description: Plans are not available yet
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: false
error:
type: string
example: Error message
timestamp:
type: string
example: '2026-11-09T19:02:47.229Z'
required:
- success
- error
- timestamp
operationId: postCreditsPlansCheckout
x-operation-id-source: derived
/credits/plans/portal:
get:
summary: Open the plan customer portal
description: Returns a Polar customer-portal URL where the customer cancels the plan or changes the card on file. Requires the full API key scope when called with an API key.
tags:
- Credits
security:
- BearerAuth: []
responses:
'200':
description: Plan portal link created successfully
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
data:
type: object
properties:
portalUrl:
type: string
required:
- portalUrl
message:
type: string
example: Operation successful
timestamp:
type: string
example: '2026-11-09T19:02:47.229Z'
required:
- success
- data
- timestamp
'401':
description: Unauthorized
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: false
error:
type: string
example: Error message
timestamp:
type: string
example: '2026-11-09T19:02:47.229Z'
required:
- success
- error
- timestamp
'403':
description: API key missing the full scope
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: false
error:
type: string
example: Error message
timestamp:
type: string
example: '2026-11-09T19:02:47.229Z'
required:
- success
- error
- timestamp
'404':
description: The team has no plan
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: false
error:
type: string
example: Error message
timestamp:
type: string
example: '2026-11-09T19:02:47.229Z'
required:
- success
- error
- timestamp
operationId: getCreditsPlansPortal
x-operation-id-source: derived
components:
schemas:
PurchaseCredits:
type: object
properties:
creditAmount:
type: number
minimum: 500
currency:
type: string
default: USD
required:
- creditAmount
TeamPlanSummary:
type: object
properties:
tier:
type: string
enum:
- creator
- studio
- team
status:
type: string
enum:
- active
- past_due
- canceled
- revoked
currentPeriodEnd:
type: string
grantCredits:
type: number
usedCredits:
type: number
remainingCredits:
type: number
cancelAtPeriodEnd:
type: boolean
required:
- tier
- status
- currentPeriodEnd
- grantCredits
- usedCredits
- remainingCredits
- cancelAtPeriodEnd
PlanCheckout:
type: object
properties:
tier:
type: string
enum:
- creator
- studio
- team
required:
- tier
securitySchemes:
BearerAuth:
type: http
scheme: bearer
bearerFormat: aq_sk_ API key
description: 'An Aquanode API key, created under API keys in the console, sent as `Authorization: Bearer aq_sk_...` (or in the `x-api-key` header). A key is scoped to the team that created it; mutating routes need a key with the `deploy` or `full` scope.'