Get provider earnings and payout history
Returns the provider's earnings totals, the amount available for payout, breakdowns by node, GPU model and day, a count of active rentals, and recent payouts.
Required permission
Requires the provider.read permission. See Permissions for the roles and API key permissions that include it.
Command line
The orl CLI wraps this endpoint:
orl provider earnings getapiKeyAuthorizationBearer <token>OpenRelay API key. Send it as Authorization: Bearer or_… (legacy vl_… keys still work).
orgId*stringOK
application/json- response
totalEarningsCents*integergrossEarningsCents?integerTotal customer sell gross for legacy revenue-share records. Omitted for fixed-only providers; mixed providers exclude fixed-contract customer economics.
billableGrossCents?integerTotal customer gross attributable to legacy revenue-share paid-funded hours. Omitted for fixed-only providers; mixed providers exclude fixed-contract customer economics.
totalHours*numberTotal hours hosted across all of this provider's usage.
billableHours?numberLegacy revenue-share hours in customers' paid-funding band. Omitted for fixed-only providers.
earningHours?numberHours owed to the provider. Fixed-hourly contracts accrue across eligible hosted utilization; legacy revenue share accrues only across paid-funded hours.
freeCreditHours?numberLegacy revenue-share hours funded by customer free credits. Omitted for fixed-only providers and excludes fixed-contract hours in mixed responses.
unpaidHours?numberLegacy revenue-share hours beyond customer free credit and paid balance. Omitted for fixed-only providers and excludes fixed-contract hours in mixed responses.
currentMonthEarningsCents*integercurrentMonthHours*numberpendingEarningsCents*integeravailableForPayoutCents*integertotalPaidOutCents*integercommissionPercent*integerDefault legacy provider revenue-share percentage. Relevant to legacy records in revenue_share_legacy and mixed responses; fixed records use their locked hourly rate.
compensationMode?stringHow provider earnings in this response were calculated. Optional for backward compatibility; absent means revenue_share_legacy. mixed indicates the selected history contains both fixed-hourly and legacy records.
"revenue_share_legacy""fixed_hourly""mixed"byNode*array<>byGpuModel*array<>byStream?array<>CPU vs GPU income streams.
daily?array<>Last-30-UTC-day earnings series, oldest first, one point per day (zero-filled). A record's band hours/earnings are prorated onto each day by its share of the record's hosted hours (band placement itself is whole-of-life, so a day's split is an attribution, not a re-run of the waterfall per day).
activeRentals?integerCurrently-running rentals on this provider's nodes (open usage records).
recentPayouts*array<>curl -X GET 'https://api.openrelay.inc/v1/orgs/string/provider/earnings'{ "totalEarningsCents": 0, "grossEarningsCents": 0, "billableGrossCents": 0, "totalHours": 0, "billableHours": 0, "earningHours": 0, "freeCreditHours": 0, "unpaidHours": 0, "currentMonthEarningsCents": 0, "currentMonthHours": 0, "pendingEarningsCents": 0, "availableForPayoutCents": 0, "totalPaidOutCents": 0, "commissionPercent": 0, "compensationMode": "revenue_share_legacy", "byNode": [ { "nodeId": "string", "hostname": "string", "grossEarningsCents": 0, "billableGrossCents": 0, "earningsCents": 0, "hours": 0, "billableHours": 0, "earningHours": 0, "gpuCount": 0, "rentedGpuHoursMonth": 0, "utilizationPercent": 0 } ], "byGpuModel": [ { "gpuModelId": "string", "name": "string", "grossEarningsCents": 0, "billableGrossCents": 0, "earningsCents": 0, "hours": 0, "billableHours": 0, "earningHours": 0 } ], "byStream": [ { "stream": "string", "grossEarningsCents": 0, "billableGrossCents": 0, "earningsCents": 0, "hours": 0, "billableHours": 0, "earningHours": 0 } ], "daily": [ { "date": "string", "earningsCents": 0, "billableGrossCents": 0, "hostedHours": 0, "billableHours": 0, "earningHours": 0, "freeHours": 0, "unpaidHours": 0 } ], "activeRentals": 0, "recentPayouts": [ { "id": "string", "type": "string", "amountCents": 0, "description": "string", "createdAt": "string" } ]}Provider node + token stats GET
Returns counts of the organization's nodes (total, online and offline, removed nodes excluded) and of its provisioning tokens that can still enroll a node.
Terminate spot workloads on a node POST
Terminates spot-tier workloads on a node your organization owns, or on reservations it manages there, and returns the VM ids it terminated and left running. A managing org (managingOrgIds) reaches only the released units of the reservations it manages, while each is active and inside its term. Scoped strictly to workloads bought at the spot tier: a spot instance is sold on the explicit contract that the capacity owner can terminate it at any time. Non-spot workloads on the node are never touched. Every termination is audited and the affected VM records capacity reclaim as its reason, so the customer is not told it was a platform fault.