Skip to content
OpenRelay is in early access, and the /v1 API is stable. New capabilities ship in the changelog.
Skip to Content
API ReferenceProvidersProvider

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 get
GET
/v1/orgs/{orgId}/provider/earnings

Authorization

apiKey
headerAuthorizationBearer <token>

OpenRelay API key. Send it as Authorization: Bearer or_… (legacy vl_… keys still work).

Path Parameters

orgId*string

Response Body

OK

application/json
  1. response
totalEarningsCents*integer
grossEarningsCents?integer

Total customer sell gross for legacy revenue-share records. Omitted for fixed-only providers; mixed providers exclude fixed-contract customer economics.

billableGrossCents?integer

Total customer gross attributable to legacy revenue-share paid-funded hours. Omitted for fixed-only providers; mixed providers exclude fixed-contract customer economics.

totalHours*number

Total hours hosted across all of this provider's usage.

billableHours?number

Legacy revenue-share hours in customers' paid-funding band. Omitted for fixed-only providers.

earningHours?number

Hours owed to the provider. Fixed-hourly contracts accrue across eligible hosted utilization; legacy revenue share accrues only across paid-funded hours.

freeCreditHours?number

Legacy revenue-share hours funded by customer free credits. Omitted for fixed-only providers and excludes fixed-contract hours in mixed responses.

unpaidHours?number

Legacy revenue-share hours beyond customer free credit and paid balance. Omitted for fixed-only providers and excludes fixed-contract hours in mixed responses.

currentMonthEarningsCents*integer
currentMonthHours*number
pendingEarningsCents*integer
availableForPayoutCents*integer
totalPaidOutCents*integer
commissionPercent*integer

Default legacy provider revenue-share percentage. Relevant to legacy records in revenue_share_legacy and mixed responses; fixed records use their locked hourly rate.

compensationMode?string

How 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.

Value in"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?integer

Currently-running rentals on this provider's nodes (open usage records).

recentPayouts*array<>
Example Request
curl -X GET 'https://api.openrelay.inc/v1/orgs/string/provider/earnings'
Example Response
{  "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"    }  ]}