Skip to content

View API usage

GET /v1/usage

https://api.voygr.tech/v1/usage

Open in playground

Overview

Get current usage, quota, and reset date for the API key.

Authentication

  • API key in header X-API-Key: Your customer API key (pk_live_...), sent on every request. Self-serve at https://api.voygr.tech/checkout.

Responses

200

Successful Response

application/json

Schema: UsageResponse

401

Missing API key header

application/json

Schema: ErrorResponse

Example

{
  "success": false,
  "error": "API key required. Include X-API-Key header.",
  "error_code": "AUTHENTICATION_ERROR",
  "request_id": "ad33009a-fdfe-4e25-9650-4a49099c3d4a"
}

403

Invalid, revoked, or unauthorized API key

application/json

Schema: ErrorResponse

Example

{
  "success": false,
  "error": "Invalid or revoked API key",
  "error_code": "AUTHENTICATION_ERROR",
  "request_id": "25b104f0-9ad0-4fc7-8530-c5d5ff8d9698"
}

422

Validation Error

application/json

Schema: HTTPValidationError

Schemas

UsageResponse

Type: object

Response model for usage endpoint.

FieldTypeRequiredDescription and constraints
tierstringrequiredAccount plan identifier associated with the API key.
api_key_idstringrequiredAPI key ID
customer_idstringrequiredThe account this key belongs to. Stable across key rotation; key per-customer client state on this, not on api_key_id.
key_hintstring | nulloptionalLast 4 characters of the key's plaintext, so the holder can recognise it. null on keys minted before this was recorded.
key_created_atstring | nulloptionalWhen this key was minted (ISO 8601). null if unknown.
customer_namestringrequiredCustomer name
quota_limitintegerrequiredCredit allowance for the current period, not a number of requests.
current_usageintegerrequiredCredits charged plus credits reserved by requests still in progress. Unused reservations are released on settlement.
remainingintegerrequiredCredits available to spend, after charges and current holds. Same value as available.
availableinteger | nulloptionalCredits spendable right now - same value as remaining, named for the question callers ask. Already net of credits frozen by in-flight reservations.
call_credit_holdinteger | nulloptionalCredits ONE outbound call freezes at dial time (a refundable hold, not a charge). available // call_credit_hold is the CREDIT-limited bound on calls in flight - entitlement and the per-customer concurrency cap gate independently, so it is not a guarantee that many will start.
max_placesinteger | nulloptionalTotal places search and import may deliver to this key (self-serve trial cap). Null when the key is uncapped.
places_usedinteger | nulloptionalPlaces delivered so far, plus those reserved by in-flight requests, against max_places. Null when uncapped.
contact_emailstring | nulloptionalThe address a support or sales reply would be sent to - the email on this key. Empty string when the key carries none, in which case POST /v1/contact requires reply_to. Null from a backend that predates the field.
credits_per_fieldinteger | nulloptionalCredits one (place × field) fill costs in deep research.
credits_per_placeinteger | nulloptionalCredits one found/imported place costs (places search + import).
open_invoicesarray of object | nulloptionalOpen (unpaid) invoices raised for this key, newest first.
percentage_usednumberrequiredPercentage of quota used
reset_datestringrequiredDate when usage resets (YYYY-MM-DD)
periodstringrequiredQuota period (monthly, weekly, daily)
statusstringrequiredAPI key status (active, revoked, suspended)
validation_timestampstring | nulloptionalUTC timestamp when usage response was produced (ISO 8601).

Example 1

{
  "api_key_id": "f4d0a2c2-f73f-4de6-ac3e-f42ce35af4d6",
  "customer_id": "cus_0001example",
  "customer_name": "Acme Inc",
  "quota_limit": 10000,
  "current_usage": 2375,
  "remaining": 7625,
  "percentage_used": 23.75,
  "reset_date": "2026-03-31",
  "period": "monthly",
  "status": "active",
  "tier": "<account-plan>"
}

Example 2

{
  "api_key_id": "eaa59659-7fab-4d1f-a80d-4f1e0f9388e4",
  "customer_id": "cus_0002example",
  "customer_name": "Beta Foods",
  "quota_limit": 5000,
  "current_usage": 5000,
  "remaining": 0,
  "percentage_used": 100.0,
  "reset_date": "2026-03-01",
  "period": "monthly",
  "status": "active",
  "tier": "<account-plan>"
}

ErrorResponse

Type: object

Error response model.

FieldTypeRequiredDescription and constraints
successbooleanoptionalAlways false for errors
default False
errorstringrequiredError message
error_codestring | nulloptionalError category code (VALIDATION_ERROR, MODEL_ERROR, EXTERNAL_API_ERROR, etc.)
request_idstring | nulloptionalRequest ID for tracing
validation_timestampstring | nulloptionalUTC timestamp when error response was produced (ISO 8601).
detailobject | nulloptionalAdditional error details

Example 1

{
  "success": false,
  "error": "API key required. Include X-API-Key header.",
  "error_code": "AUTHENTICATION_ERROR",
  "request_id": "ad33009a-fdfe-4e25-9650-4a49099c3d4a"
}

Example 2

{
  "success": false,
  "error": "Invalid or revoked API key",
  "error_code": "AUTHENTICATION_ERROR",
  "request_id": "25b104f0-9ad0-4fc7-8530-c5d5ff8d9698"
}

HTTPValidationError

Type: object

FieldTypeRequiredDescription and constraints
detailarray of ValidationErroroptional

ValidationError

Type: object

FieldTypeRequiredDescription and constraints
locarray of (string | integer)required
msgstringrequired
typestringrequired
inputanyoptional
ctxobjectoptional