curl --request POST \
--url https://api.tryfuse.ai/api/v1/business/credits/usage \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"since": "2023-11-07T05:31:56Z"
}
'import requests
url = "https://api.tryfuse.ai/api/v1/business/credits/usage"
payload = { "since": "2023-11-07T05:31:56Z" }
headers = {
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Basic <encoded-value>', 'Content-Type': 'application/json'},
body: JSON.stringify({since: '2023-11-07T05:31:56Z'})
};
fetch('https://api.tryfuse.ai/api/v1/business/credits/usage', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"since": "2026-09-01T00:00:00.000Z",
"to": null,
"memberIds": [],
"usage": {
"used": 5230,
"available": 14770,
"total": 20000,
"periodStartDate": "2026-08-14T18:30:00.000Z",
"periodEndDate": "2026-09-15T18:29:59.999Z",
"oneTimeCreditsHoldback": null
},
"spendByDateByProduct": [
{
"date": "Sep 1",
"isoDate": "2026-09-01",
"products": [
{
"product": "Email Enrichment",
"value": 396
},
{
"product": "Prospect Search",
"value": 90
}
]
},
{
"date": "Sep 2",
"isoDate": "2026-09-02",
"products": []
},
{
"date": "Sep 3",
"isoDate": "2026-09-03",
"products": [
{
"product": "Deep Research Action",
"value": 660
},
{
"product": "Email Enrichment",
"value": 366
}
]
}
]
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}The credit spend ledger
The credit spend ledger for a since / to window (to omitted = up to now) and an optional memberIds teammate filter — the same contract as the internal spend endpoint, all echoed back (to as null and memberIds as [] when omitted): usage is the current billing period’s headline (used, available, total, period bounds, and the AppSumo one-time holdback when one applies), and spendByDateByProduct is the zero-filled spend series over the window, each point carrying its deductions split by product. Points are time buckets sized by the window’s length — daily while it spans at most 13 days, otherwise weekly (ISO weeks), monthly or quarterly — so a one-month window comes back by week and a one-year window by month. Each point carries isoDate (the bucket’s start day, YYYY-MM-DD UTC) and date (a display label for that start: Sep 1 for daily and weekly buckets, Sep for monthly, Sep 2026 for quarterly). Sum a point’s products for the bucket’s total; sum a product across points for its window total. Omit memberIds (or pass []) for the whole ledger; pass teammate ids to restrict the series to those people’s deductions, including the owner id for the owner’s own untagged charges. Each of the two panels is null when its lookup fails. Available to any valid key (no scope needed). Rate limit: 120 requests per minute, 10000 per day.
Errors:
403TEAM_MEMBER_NOT_IN_SCOPE— AmemberIdsentry is not an active member of the caller’s team.422VALIDATION_FAILED—sinceis missing or not an ISO 8601 date,tois not an ISO 8601 date or precedessince, or amemberIdsentry is not a 24-character hex id.429RATE_LIMITED— Per-user quota for this endpoint family exceeded (120 per minute, 10000 per day); retry after the Retry-After / RateLimit-Reset seconds.
curl --request POST \
--url https://api.tryfuse.ai/api/v1/business/credits/usage \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"since": "2023-11-07T05:31:56Z"
}
'import requests
url = "https://api.tryfuse.ai/api/v1/business/credits/usage"
payload = { "since": "2023-11-07T05:31:56Z" }
headers = {
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Basic <encoded-value>', 'Content-Type': 'application/json'},
body: JSON.stringify({since: '2023-11-07T05:31:56Z'})
};
fetch('https://api.tryfuse.ai/api/v1/business/credits/usage', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"since": "2026-09-01T00:00:00.000Z",
"to": null,
"memberIds": [],
"usage": {
"used": 5230,
"available": 14770,
"total": 20000,
"periodStartDate": "2026-08-14T18:30:00.000Z",
"periodEndDate": "2026-09-15T18:29:59.999Z",
"oneTimeCreditsHoldback": null
},
"spendByDateByProduct": [
{
"date": "Sep 1",
"isoDate": "2026-09-01",
"products": [
{
"product": "Email Enrichment",
"value": 396
},
{
"product": "Prospect Search",
"value": 90
}
]
},
{
"date": "Sep 2",
"isoDate": "2026-09-02",
"products": []
},
{
"date": "Sep 3",
"isoDate": "2026-09-03",
"products": [
{
"product": "Deep Research Action",
"value": 660
},
{
"product": "Email Enrichment",
"value": 366
}
]
}
]
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"param": "<string>",
"doc_url": "<string>",
"request_id": "<string>"
}
}Authorizations
Your API token (af_…) as the Basic-auth username, with an empty password.
Body
Start of the spend window (inclusive) as an ISO 8601 date or date-time, e.g. 2026-08-01 or 2026-08-01T00:00:00Z. spendByDateByProduct is bucketed by the window's length — daily while it spans at most 13 days, then weekly (ISO weeks), monthly or quarterly — while usage always reflects the current billing period regardless of the window.
End of the spend window (inclusive) as an ISO 8601 date or date-time; must not precede since. Omit to run the window up to now. A date-only value means midnight UTC at the START of that day, so send an end-of-day instant (e.g. 2026-08-31T23:59:59.999Z) to include the last day.
Restrict spendByDateByProduct to these teammates' deductions. Omit or pass [] for the whole ledger (every teammate sees the same default). Each id must be an active member of the caller's team; including the owner adds the owner's own untagged charges. Any id outside the team answers 403 TEAM_MEMBER_NOT_IN_SCOPE. usage always reflects the current billing period regardless of this filter.
200