API Reference / Endpoints / Platform
List API keys
/v1/apikeysList API keys for the authenticated workspace.
GET
/v1/apikeysAuth: API key or dashboard JWTBilling: FreeBehavior: Sync
GETSyncNo body
When to use it
Use this to power a key-management UI, reconcile prefixes, or fetch expiry and request counters for operational review.
Behavior on success
Returns a completed payload on the normal success path.
Integration shape
Authorization model
API key or dashboard session
Request format
No request body
Polling pattern
No polling required on the normal success path.
Request
| Field | Type | Required | Description |
|---|---|---|---|
page | number | Optional | Pagination page number. |
limit | number | Optional | Page size, capped by the backend max limit. |
include_inactive | boolean | Optional | Set to true to include revoked or disabled keys. |
Example request
GET /v1/apikeys
const response = await fetch('https://prod-backup-backend.wubble.ai/v1/apikeys?page=1&limit=20&include_inactive=false', {
method: 'GET',
headers: {
Authorization: `Bearer ${process.env.WUBBLE_API_KEY}`,
},
});
const payload = await response.json();
console.log(payload);Example response
Response shapejson
{
"success": true,
"data": {
"keys": [
{
"key_id": "key_123",
"name": "CI usage reader",
"prefix": "wbk_ce03e701",
"scopes": [
"analytics:read",
"webhooks:manage"
],
"is_active": true,
"last_used_at": "2026-05-12T11:55:00.000Z",
"expires_at": "2026-08-10T12:00:00.000Z",
"total_requests": 27,
"created_at": "2026-05-12T12:00:00.000Z"
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 1,
"pages": 1
}
}
}Implementation notes
This route returns key prefixes and metadata only. It never returns the raw key value again.
Production guidance
Pair this route with idempotency on POST requests and either request polling or webhooks whenever the response is asynchronous.
Was this page helpful?