curl "https://api.alura.io/v1/usage" \
-H "Authorization: Bearer $ALURA_API_KEY"const res = await fetch('https://api.alura.io/v1/usage', {
headers: {
Authorization: `Bearer ${process.env.ALURA_API_KEY}`,
},
});
console.log(await res.json());import json
import os
import urllib.request
request = urllib.request.Request(
"https://api.alura.io/v1/usage",
headers={
"Authorization": f"Bearer {os.environ['ALURA_API_KEY']}",
},
)
with urllib.request.urlopen(request) as response:
print(json.load(response)){
"object": "usage",
"plan": "growth",
"period": {
"start": "2026-10-01T00:00:00.000Z",
"end": "2026-11-01T00:00:00.000Z"
},
"credits": {
"allowance": 20000,
"used": 3420,
"remaining": 16580
},
"daily": {
"limit": 5000,
"used": 210,
"resets_at": "2026-10-16T00:00:00.000Z"
},
"rate_limit": {
"requests_per_minute": 120
},
"fetch_caps": {
"shops": {
"limit": 50,
"used": 2
},
"products": {
"limit": 500,
"used": 14
},
"keywords": {
"limit": 500,
"used": 0
},
"shop_names": {
"limit": 25,
"used": 1
}
},
"by_operation": {
"research.products.get": 520
},
"by_client": {
"claude": 400,
"script": 120
},
"costs": {
"reference.categories.search": {
"credits": 0,
"unit": "call"
},
"reference.categories.get": {
"credits": 0,
"unit": "call"
},
"reference.languages.list": {
"credits": 0,
"unit": "call"
},
"account.me.get": {
"credits": 0,
"unit": "call"
},
"account.workspaces.list": {
"credits": 0,
"unit": "call"
},
"account.workspace.switch": {
"credits": 0,
"unit": "call"
},
"account.usage.get": {
"credits": 0,
"unit": "call"
},
"account.usage.byDay": {
"credits": 0,
"unit": "call"
},
"account.usage.events": {
"credits": 0,
"unit": "call"
},
"research.products.get": {
"credits": 1,
"unit": "call"
},
"research.products.getMany": {
"credits": 1,
"unit": "item"
},
"research.products.search": {
"credits": 10,
"unit": "page"
},
"research.products.similar": {
"credits": 10,
"unit": "page"
},
"research.shops.get": {
"credits": 1,
"unit": "call"
},
"research.shops.search": {
"credits": 10,
"unit": "page"
},
"research.shops.products": {
"credits": 1,
"unit": "page"
},
"research.keywords.lookup": {
"credits": 1,
"unit": "item"
},
"research.keywords.get": {
"credits": 1,
"unit": "call"
},
"research.products.tags": {
"credits": 1,
"unit": "page"
},
"research.keywords.related": {
"credits": 1,
"unit": "page"
},
"research.keywords.products": {
"credits": 10,
"unit": "page"
},
"research.keywords.shops": {
"credits": 10,
"unit": "page"
},
"research.keywords.history": {
"credits": 1,
"unit": "call"
},
"research.keywords.trending": {
"credits": 10,
"unit": "page"
},
"research.products.trending": {
"credits": 10,
"unit": "page"
},
"research.shops.trending": {
"credits": 10,
"unit": "page"
},
"research.shops.reviews": {
"credits": 1,
"unit": "page"
},
"research.products.reviews": {
"credits": 1,
"unit": "page"
},
"research.products.history": {
"credits": 1,
"unit": "call"
},
"research.shops.history": {
"credits": 1,
"unit": "call"
},
"research.lookup": {
"credits": 1,
"unit": "call"
},
"research.saved.folders.list": {
"credits": 0,
"unit": "call"
},
"research.saved.folders.get": {
"credits": 0,
"unit": "call"
},
"research.saved.folders.create": {
"credits": 0,
"unit": "call"
},
"research.saved.folders.update": {
"credits": 0,
"unit": "call"
},
"research.saved.folders.delete": {
"credits": 0,
"unit": "call"
},
"research.saved.lists.list": {
"credits": 0,
"unit": "call"
},
"research.saved.lists.get": {
"credits": 0,
"unit": "call"
},
"research.saved.lists.create": {
"credits": 0,
"unit": "call"
},
"research.saved.lists.update": {
"credits": 0,
"unit": "call"
},
"research.saved.lists.delete": {
"credits": 0,
"unit": "call"
},
"research.saved.items.list": {
"credits": 1,
"unit": "item"
},
"research.saved.items.add": {
"credits": 0,
"unit": "call"
},
"research.saved.items.remove": {
"credits": 0,
"unit": "call"
}
},
"upgrade_url": "https://platform.alura.io/settings/billing"
}{
"type": "https://docs.alura.io/errors/invalid_request",
"title": "Invalid request",
"status": 400,
"code": "invalid_request",
"detail": "Invalid request",
"suggestion": "Fix the request as the detail says, then send it again.",
"retryable": false,
"request_id": "req_01JQ5W3H8M2N4P6R8T0V2X4Z6B"
}{
"type": "https://docs.alura.io/errors/unauthorized",
"title": "Unauthorized",
"status": 401,
"code": "unauthorized",
"detail": "Unauthorized",
"suggestion": "Send a valid API key as `Authorization: Bearer alura_sk_...`.",
"retryable": false,
"request_id": "req_01JQ5W3H8M2N4P6R8T0V2X4Z6B"
}{
"type": "https://docs.alura.io/errors/credits_exhausted",
"title": "API credits exhausted",
"status": 402,
"code": "credits_exhausted",
"detail": "API credits exhausted",
"suggestion": "Upgrade the plan or wait for the monthly reset.",
"retryable": false,
"request_id": "req_01JQ5W3H8M2N4P6R8T0V2X4Z6B"
}{
"type": "https://docs.alura.io/errors/plan_required",
"title": "Plan required",
"status": 403,
"code": "plan_required",
"detail": "Plan required",
"suggestion": "Upgrade the workspace plan to use this operation.",
"retryable": false,
"request_id": "req_01JQ5W3H8M2N4P6R8T0V2X4Z6B"
}{
"type": "https://docs.alura.io/errors/not_found",
"title": "Not found",
"status": 404,
"code": "not_found",
"detail": "Not found",
"suggestion": "Check the ID, or search for it first.",
"retryable": false,
"request_id": "req_01JQ5W3H8M2N4P6R8T0V2X4Z6B"
}{
"type": "https://docs.alura.io/errors/method_not_allowed",
"title": "Method not allowed",
"status": 405,
"code": "method_not_allowed",
"detail": "Method not allowed",
"suggestion": "Use one of the methods in the Allow header.",
"retryable": false,
"request_id": "req_01JQ5W3H8M2N4P6R8T0V2X4Z6B"
}{
"type": "https://docs.alura.io/errors/rate_limited",
"title": "Rate limited",
"status": 429,
"code": "rate_limited",
"detail": "Rate limited",
"suggestion": "Wait for Retry-After, then retry.",
"retryable": true,
"request_id": "req_01JQ5W3H8M2N4P6R8T0V2X4Z6B"
}{
"type": "https://docs.alura.io/errors/internal_error",
"title": "Internal error",
"status": 500,
"code": "internal_error",
"detail": "Internal error",
"suggestion": "Retry; if it keeps failing, report the request_id.",
"retryable": true,
"request_id": "req_01JQ5W3H8M2N4P6R8T0V2X4Z6B"
}{
"type": "https://docs.alura.io/errors/credits_unavailable",
"title": "API credits unavailable",
"status": 503,
"code": "credits_unavailable",
"detail": "API credits unavailable",
"suggestion": "Retry shortly.",
"retryable": true,
"request_id": "req_01JQ5W3H8M2N4P6R8T0V2X4Z6B"
}Usage
The workspace’s plan, this month’s API credits (allowance, used, remaining), the daily ceiling, the request rate, today’s fetch caps, credits spent by operation and by client, the price of every operation and the upgrade link. Free.
Cost: free.
curl "https://api.alura.io/v1/usage" \
-H "Authorization: Bearer $ALURA_API_KEY"const res = await fetch('https://api.alura.io/v1/usage', {
headers: {
Authorization: `Bearer ${process.env.ALURA_API_KEY}`,
},
});
console.log(await res.json());import json
import os
import urllib.request
request = urllib.request.Request(
"https://api.alura.io/v1/usage",
headers={
"Authorization": f"Bearer {os.environ['ALURA_API_KEY']}",
},
)
with urllib.request.urlopen(request) as response:
print(json.load(response)){
"object": "usage",
"plan": "growth",
"period": {
"start": "2026-10-01T00:00:00.000Z",
"end": "2026-11-01T00:00:00.000Z"
},
"credits": {
"allowance": 20000,
"used": 3420,
"remaining": 16580
},
"daily": {
"limit": 5000,
"used": 210,
"resets_at": "2026-10-16T00:00:00.000Z"
},
"rate_limit": {
"requests_per_minute": 120
},
"fetch_caps": {
"shops": {
"limit": 50,
"used": 2
},
"products": {
"limit": 500,
"used": 14
},
"keywords": {
"limit": 500,
"used": 0
},
"shop_names": {
"limit": 25,
"used": 1
}
},
"by_operation": {
"research.products.get": 520
},
"by_client": {
"claude": 400,
"script": 120
},
"costs": {
"reference.categories.search": {
"credits": 0,
"unit": "call"
},
"reference.categories.get": {
"credits": 0,
"unit": "call"
},
"reference.languages.list": {
"credits": 0,
"unit": "call"
},
"account.me.get": {
"credits": 0,
"unit": "call"
},
"account.workspaces.list": {
"credits": 0,
"unit": "call"
},
"account.workspace.switch": {
"credits": 0,
"unit": "call"
},
"account.usage.get": {
"credits": 0,
"unit": "call"
},
"account.usage.byDay": {
"credits": 0,
"unit": "call"
},
"account.usage.events": {
"credits": 0,
"unit": "call"
},
"research.products.get": {
"credits": 1,
"unit": "call"
},
"research.products.getMany": {
"credits": 1,
"unit": "item"
},
"research.products.search": {
"credits": 10,
"unit": "page"
},
"research.products.similar": {
"credits": 10,
"unit": "page"
},
"research.shops.get": {
"credits": 1,
"unit": "call"
},
"research.shops.search": {
"credits": 10,
"unit": "page"
},
"research.shops.products": {
"credits": 1,
"unit": "page"
},
"research.keywords.lookup": {
"credits": 1,
"unit": "item"
},
"research.keywords.get": {
"credits": 1,
"unit": "call"
},
"research.products.tags": {
"credits": 1,
"unit": "page"
},
"research.keywords.related": {
"credits": 1,
"unit": "page"
},
"research.keywords.products": {
"credits": 10,
"unit": "page"
},
"research.keywords.shops": {
"credits": 10,
"unit": "page"
},
"research.keywords.history": {
"credits": 1,
"unit": "call"
},
"research.keywords.trending": {
"credits": 10,
"unit": "page"
},
"research.products.trending": {
"credits": 10,
"unit": "page"
},
"research.shops.trending": {
"credits": 10,
"unit": "page"
},
"research.shops.reviews": {
"credits": 1,
"unit": "page"
},
"research.products.reviews": {
"credits": 1,
"unit": "page"
},
"research.products.history": {
"credits": 1,
"unit": "call"
},
"research.shops.history": {
"credits": 1,
"unit": "call"
},
"research.lookup": {
"credits": 1,
"unit": "call"
},
"research.saved.folders.list": {
"credits": 0,
"unit": "call"
},
"research.saved.folders.get": {
"credits": 0,
"unit": "call"
},
"research.saved.folders.create": {
"credits": 0,
"unit": "call"
},
"research.saved.folders.update": {
"credits": 0,
"unit": "call"
},
"research.saved.folders.delete": {
"credits": 0,
"unit": "call"
},
"research.saved.lists.list": {
"credits": 0,
"unit": "call"
},
"research.saved.lists.get": {
"credits": 0,
"unit": "call"
},
"research.saved.lists.create": {
"credits": 0,
"unit": "call"
},
"research.saved.lists.update": {
"credits": 0,
"unit": "call"
},
"research.saved.lists.delete": {
"credits": 0,
"unit": "call"
},
"research.saved.items.list": {
"credits": 1,
"unit": "item"
},
"research.saved.items.add": {
"credits": 0,
"unit": "call"
},
"research.saved.items.remove": {
"credits": 0,
"unit": "call"
}
},
"upgrade_url": "https://platform.alura.io/settings/billing"
}{
"type": "https://docs.alura.io/errors/invalid_request",
"title": "Invalid request",
"status": 400,
"code": "invalid_request",
"detail": "Invalid request",
"suggestion": "Fix the request as the detail says, then send it again.",
"retryable": false,
"request_id": "req_01JQ5W3H8M2N4P6R8T0V2X4Z6B"
}{
"type": "https://docs.alura.io/errors/unauthorized",
"title": "Unauthorized",
"status": 401,
"code": "unauthorized",
"detail": "Unauthorized",
"suggestion": "Send a valid API key as `Authorization: Bearer alura_sk_...`.",
"retryable": false,
"request_id": "req_01JQ5W3H8M2N4P6R8T0V2X4Z6B"
}{
"type": "https://docs.alura.io/errors/credits_exhausted",
"title": "API credits exhausted",
"status": 402,
"code": "credits_exhausted",
"detail": "API credits exhausted",
"suggestion": "Upgrade the plan or wait for the monthly reset.",
"retryable": false,
"request_id": "req_01JQ5W3H8M2N4P6R8T0V2X4Z6B"
}{
"type": "https://docs.alura.io/errors/plan_required",
"title": "Plan required",
"status": 403,
"code": "plan_required",
"detail": "Plan required",
"suggestion": "Upgrade the workspace plan to use this operation.",
"retryable": false,
"request_id": "req_01JQ5W3H8M2N4P6R8T0V2X4Z6B"
}{
"type": "https://docs.alura.io/errors/not_found",
"title": "Not found",
"status": 404,
"code": "not_found",
"detail": "Not found",
"suggestion": "Check the ID, or search for it first.",
"retryable": false,
"request_id": "req_01JQ5W3H8M2N4P6R8T0V2X4Z6B"
}{
"type": "https://docs.alura.io/errors/method_not_allowed",
"title": "Method not allowed",
"status": 405,
"code": "method_not_allowed",
"detail": "Method not allowed",
"suggestion": "Use one of the methods in the Allow header.",
"retryable": false,
"request_id": "req_01JQ5W3H8M2N4P6R8T0V2X4Z6B"
}{
"type": "https://docs.alura.io/errors/rate_limited",
"title": "Rate limited",
"status": 429,
"code": "rate_limited",
"detail": "Rate limited",
"suggestion": "Wait for Retry-After, then retry.",
"retryable": true,
"request_id": "req_01JQ5W3H8M2N4P6R8T0V2X4Z6B"
}{
"type": "https://docs.alura.io/errors/internal_error",
"title": "Internal error",
"status": 500,
"code": "internal_error",
"detail": "Internal error",
"suggestion": "Retry; if it keeps failing, report the request_id.",
"retryable": true,
"request_id": "req_01JQ5W3H8M2N4P6R8T0V2X4Z6B"
}{
"type": "https://docs.alura.io/errors/credits_unavailable",
"title": "API credits unavailable",
"status": 503,
"code": "credits_unavailable",
"detail": "API credits unavailable",
"suggestion": "Retry shortly.",
"retryable": true,
"request_id": "req_01JQ5W3H8M2N4P6R8T0V2X4Z6B"
}Authorizations
An API key: Authorization: Bearer alura_sk_....
Query Parameters
Comma-separated dotted paths to return; id, object and as_of always come back.
Response
OK
"usage"free, basic, growth, professional The UTC calendar month the API credits belong to; they reset at end.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
The daily ceiling: 25% of the month on paid plans. null when the plan has none (Free can spend the month in one day).
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Today's (UTC) fetches of items Alura had not seen yet, per type, and the shop-name lookups (spec §6).
Show child attributes
Show child attributes
API credits spent this month, by operation id (the keys of costs).
Show child attributes
Show child attributes
API credits spent this month, by client: claude, chatgpt, cursor, script, other; unknown for charges whose client was not recorded.
Show child attributes
Show child attributes
The price of every operation, by operation id: credits per call, per non-empty page or per item returned.
Show child attributes
Show child attributes