curl --request GET \
--url https://intentleads.si/api/v1/billing \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://intentleads.si/api/v1/billing', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://intentleads.si/api/v1/billing"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"plan": "growth",
"status": "active",
"period_start": "2026-10-01",
"period_end": "2026-11-01",
"monthly_contacts": 7500,
"rollover_contacts": 1200,
"allowance": 8700,
"used": 2350,
"remaining": 6350,
"held_by_exports_in_progress": 250,
"left_to_export": 6100,
"plans": [
{
"id": "starter",
"name": "Starter",
"price_usd_per_month": 250,
"contacts_per_month": 2500,
"current": false
},
{
"id": "growth",
"name": "Growth",
"price_usd_per_month": 500,
"contacts_per_month": 7500,
"current": true
},
{
"id": "scale",
"name": "Scale",
"price_usd_per_month": 1000,
"contacts_per_month": 20000,
"current": false
},
{
"id": "partner",
"name": "Partner",
"price_usd_per_month": 2000,
"contacts_per_month": 50000,
"current": false
}
],
"billing": "card",
"invoices": {
"portal": "POST /api/v1/billing/portal"
}
}{
"error": "unauthorized",
"message": "Send a valid API key as: Authorization: Bearer il_live_…"
}{
"error": "admin_key_required",
"message": "This needs an admin API key. Owners can create one on the API and CLI page."
}{
"error": "internal_error",
"message": "Something went wrong. Try again."
}Get billing
Your plan, its status and period, usage (as in Get usage), every plan you can move to, and how you’re billed.
Admin key required. Standard keys get 403 admin_key_required.
Free. This doesn’t use any contacts from your plan.
curl --request GET \
--url https://intentleads.si/api/v1/billing \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://intentleads.si/api/v1/billing', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://intentleads.si/api/v1/billing"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"plan": "growth",
"status": "active",
"period_start": "2026-10-01",
"period_end": "2026-11-01",
"monthly_contacts": 7500,
"rollover_contacts": 1200,
"allowance": 8700,
"used": 2350,
"remaining": 6350,
"held_by_exports_in_progress": 250,
"left_to_export": 6100,
"plans": [
{
"id": "starter",
"name": "Starter",
"price_usd_per_month": 250,
"contacts_per_month": 2500,
"current": false
},
{
"id": "growth",
"name": "Growth",
"price_usd_per_month": 500,
"contacts_per_month": 7500,
"current": true
},
{
"id": "scale",
"name": "Scale",
"price_usd_per_month": 1000,
"contacts_per_month": 20000,
"current": false
},
{
"id": "partner",
"name": "Partner",
"price_usd_per_month": 2000,
"contacts_per_month": 50000,
"current": false
}
],
"billing": "card",
"invoices": {
"portal": "POST /api/v1/billing/portal"
}
}{
"error": "unauthorized",
"message": "Send a valid API key as: Authorization: Bearer il_live_…"
}{
"error": "admin_key_required",
"message": "This needs an admin API key. Owners can create one on the API and CLI page."
}{
"error": "internal_error",
"message": "Something went wrong. Try again."
}Authorizations
An Intent Leads API key, e.g. il_live_ followed by 32 letters and digits. Create one on the API and CLI page of the dashboard.
Response
Billing.
Plan id (starter, growth, scale, partner), or null without a plan.
Subscription status, or null without a plan. Exports need active or trialing.
active, trialing, past_due, canceled, null Start of the current billing period.
End of the current billing period.
Contacts included in the plan each period.
Unused monthly contacts carried over from last period (for one period).
monthly_contacts + rollover_contacts.
People exported this period.
allowance − used.
Contacts reserved by exports still running.
What a new export can take: remaining less what's held. 0 without an active plan.
Every plan you can move to.
Show child attributes
Show child attributes
card: paid by card online (upgrades apply at once; invoices in the billing portal). none_yet: no plan yet (POST /api/v1/billing/plan returns a checkout link). invoiced_by_dbee: invoiced by your DBEE contact; plan changes are requests.
card, none_yet, invoiced_by_dbee Where invoices are.
- Option 1
- Option 2
Show child attributes
Show child attributes