Usage
What is left, of today's calls and of the account's storage.
Worth a route of its own because every one of these numbers is a thing a caller can be refused for, and finding out what your allowance is by hitting it is a poor way to run a nightly job.
It is also the only way from outside to see that a credential is being answered with its own account's limits rather than a stranger's.
What is left#
GET
/api/v1/usage
documents:read
Calls made today and storage used, against what each is capped at —
so a nightly job can find out before it hits a limit rather than by
hitting one. null means no limit.
The allowance is counted per account, not per credential, and resets at midnight UTC.
curl -s https://docubend.com/api/v1/usage \
-H "Authorization: Bearer $TOKEN"
const r = await fetch(`${BASE}/api/v1/usage`,
{ headers: { Authorization: `Bearer ${TOKEN}` } });
const usage = await r.json();
u = requests.get(f"{BASE}/api/v1/usage",
headers={"Authorization": f"Bearer {TOKEN}"}, timeout=30).json()
if u["calls"]["left"] is not None and u["calls"]["left"] < 50:
print("nearly out of calls for today")
Response
{
"ok": true,
"day": "2026-08-14",
"calls": {
"today": 2,
"allowed": 2000,
"left": 1998
},
"storage": {
"used": 0,
"quota": 5368709120,
"left": 5368709120,
"largest_file": 536870912
}
}
What is here#
GET
/api/v1
documents:read
This page, as JSON: every route, the scopes, and where the token endpoint is. Useful for poking at the API with curl, and for a client that would rather read the surface than have it hard-coded.
curl -s https://docubend.com/api/v1 -H "Authorization: Bearer $TOKEN"
const r = await fetch(`${BASE}/api/v1`,
{ headers: { Authorization: `Bearer ${TOKEN}` } });
const surface = await r.json();
requests.get(f"{BASE}/api/v1",
headers={"Authorization": f"Bearer {TOKEN}"}, timeout=30).json()
Response
{
"ok": true,
"version": 1,
"docs": "https://docubend.com/api",
"authentication": {
"grant": "client_credentials",
"token_endpoint": "https://docubend.com/auth/oauth/token",
"use": "Authorization: Bearer <token>",
"scopes": {
"…": "as above"
}
},
"read": {
"…": "every GET route"
},
"write": {
"…": "every POST, PUT and DELETE route"
}
}