Project Billing
Read project usage and organization balance, top-up, and pricing data.
The billing endpoints are read-only. They return balance, usage, top-up history, current pricing, and existing TFUEL deposit addresses through the same project-scoped API key used by the GPU endpoints.
Data scope
| Endpoint | Scope |
|---|---|
GET /billing/balance | Organization associated with the project |
GET /billing/usage | Project only |
GET /billing/top-ups | Organization associated with the project |
GET /billing/pricing | Current shared price tables |
GET /billing/tfuel-address also returns organization-scoped data. All projects in the same organization share the TFUEL deposit address and credited balance. A key must still match the project ID in the URL.
Balance
curl -sS \
-H "x-api-key: ${TEC_API_KEY}" \
"${TEC_BASE_URL}/v1/projects/${TEC_PROJECT_ID}/billing/balance"{
"status": "success",
"body": {
"environment": "prod",
"scope": "organization",
"currency": "USD",
"credit_balance": 12345,
"balance_usd": 123.45
}
}Credits use the platform's cent-based accounting unit. balance_usd is the converted display value. If the organization does not have a recorded balance yet, the endpoint returns a zero balance.
Project usage
curl -sS \
-H "x-api-key: ${TEC_API_KEY}" \
"${TEC_BASE_URL}/v1/projects/${TEC_PROJECT_ID}/billing/usage?start_date=2026-08-01&end_date=2026-08-04"Dates are inclusive UTC calendar dates in YYYY-MM-DD format. The default is the most recent seven UTC dates, and the maximum range is 366 days.
The response contains total_credits, total_amount_usd, usage grouped by category, and daily records. The project ID is enforced from the authenticated URL, so a project key cannot request sibling-project usage.
Top-up history
curl -sS \
-H "x-api-key: ${TEC_API_KEY}" \
"${TEC_BASE_URL}/v1/projects/${TEC_PROJECT_ID}/billing/top-ups?page=1&number=20"page is one-based and number is limited to 100. Top-ups are organization-scoped because projects in an organization share funds. Sensitive account and payment-provider details are not included in the response.
Pricing
curl -sS \
-H "x-api-key: ${TEC_API_KEY}" \
"${TEC_BASE_URL}/v1/projects/${TEC_PROJECT_ID}/billing/pricing"The response includes current chatbot, storage, and on-demand inference price tables. Hosted and community GPU hourly prices are returned by GPU Resources.
TFUEL deposit address
Retrieve the existing deposit address for the organization associated with the authenticated project:
curl --fail-with-body -sS \
-H "x-api-key: ${TEC_API_KEY}" \
"${TEC_BASE_URL}/v1/projects/${TEC_PROJECT_ID}/billing/tfuel-address"{
"status": "success",
"body": {
"environment": "prod",
"scope": "organization",
"token": "TFUEL",
"network": "mainnet",
"address": "<organization deposit address>"
}
}The address shown above is a placeholder. Use the address returned by your authenticated request. Send only mainnet TFUEL to this address. The address belongs to the organization associated with your project.
This endpoint only reads an existing address. It never creates or rotates a wallet, sends funds, or returns private keys or wallet-provider identifiers. If the address has not been initialized, it returns 409 Conflict. An organization billing administrator must first open Billing in the EdgeCloud Dashboard and select Pay with TFUEL, then retry the API request.
Responses use Cache-Control: no-store. If you receive 429 Too Many Requests, wait one minute before trying again. Every request requires a valid project API key.
Address lookup errors: 400 for an invalid project ID, 401 for a missing key, 403 for an invalid/revoked key or project mismatch, 409 for an uninitialized address, 429 for the lookup limit, 502 for an invalid/unavailable upstream response, and 503 when address lookup is temporarily unavailable. No address is returned on error.
Common responses
| Condition | HTTP status |
|---|---|
| Invalid date or pagination | 400 Bad Request |
| Missing API key | 401 Unauthorized |
| Invalid key or project mismatch | 403 Forbidden |
Updated 20 days ago
