API Keys
4/v1/apikeysList API keys owned by the current user.curl -X GET "https://api.cirrusreader.com/v1/apikeys" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json"Response Body Fields
| Name | Type | Options | Required |
|---|---|---|---|
items | object[] | Any | Yes |
context | object | Any | Yes |
Response 200
The API keys were returned successfully.
{
"items": [
{
"id": "string",
"name": "string",
"organisationId": "string",
"userId": "string",
"keyId": "string",
"prefix": "string",
"keyHash": "string",
"suffix": "string",
"scopes": [
"read"
],
"revoked": "2026-04-29T10:00:00.000Z",
"expires": "2026-04-29T10:00:00.000Z",
"created": "2026-04-29T10:00:00.000Z",
"lastUsed": "2026-04-29T10:00:00.000Z",
"createdByUserId": "string",
"status": "active"
}
],
"context": {
"path": "string",
"method": "string",
"requestId": "string",
"authentication": {
"requestId": "string",
"authType": "apiKey",
"sub": "string",
"email": "string",
"groups": "string",
"keyId": "string",
"organisationId": "string",
"errorCode": "string",
"error": "string",
"user": {
"id": "string",
"sub": "string",
"firstName": "string",
"lastName": "string",
"email": "string",
"role": "Admin",
"status": "Active",
"onboarded": true,
"userImage": "string",
"billing": {
"planId": "starter",
"status": "incomplete",
"billingAccessStatus": "enabled",
"billingGracePeriodEndIso": "2026-04-29T10:00:00.000Z",
"billingInterval": "month",
"trialEndIso": "2026-04-29T10:00:00.000Z",
"currentPeriodEndIso": "2026-04-29T10:00:00.000Z",
"cancelAtPeriodEnd": true,
"publicationLimit": 1,
"monthlyBandwidthLimitBytes": "string",
"bandwidthPeriodStartIso": "2026-04-29T10:00:00.000Z",
"bandwidthPeriodEndIso": "2026-04-29T10:00:00.000Z",
"bandwidthPeriodUsedBytes": "string",
"bandwidthPeriodCalculatedThroughIso": "2026-04-29T10:00:00.000Z",
"bandwidthAccessStatus": "enabled"
}
},
"scopeId": "string"
}
}
}Error Responses
Response 400
The request body or parameters failed validation.
{
"error": "QL_ERROR",
"message": "string",
"context": {
"path": "string",
"method": "string",
"requestId": "string"
},
"details": [
{
"message": "string"
}
]
}Response 401
The request is missing valid authentication credentials.
{
"error": "AUTHENTICATION_ERROR",
"message": "string",
"context": {
"path": "string",
"method": "string",
"requestId": "string"
}
}Response 403
The authenticated user is not allowed to access this resource.
{
"error": "AUTHENTICATION_ERROR",
"message": "string",
"context": {
"path": "string",
"method": "string",
"requestId": "string"
}
}Response 404
The requested API key could not be found.
{
"error": "EMPTY_RESPONSE",
"message": "string",
"context": {
"path": "string",
"method": "string",
"requestId": "string"
}
}Response 405
The request method is not supported.
{
"error": "UNSUPPORTED_METHOD",
"message": "string",
"context": {
"path": "string",
"method": "string",
"requestId": "string"
}
}/v1/apikeys/{id}Retrieve a single API key by ID.Parameters
| Name | Type | Description | Required |
|---|---|---|---|
| id | string | Path parameter. | Yes |
curl -X GET "https://api.cirrusreader.com/v1/apikeys/ID" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json"Response Body Fields
| Name | Type | Options | Required |
|---|---|---|---|
item | object | Any | Yes |
context | object | Any | Yes |
Response 200
The API key was returned successfully.
{
"item": {
"id": "string",
"name": "string",
"organisationId": "string",
"userId": "string",
"keyId": "string",
"prefix": "string",
"keyHash": "string",
"suffix": "string",
"scopes": [
"read"
],
"revoked": "2026-04-29T10:00:00.000Z",
"expires": "2026-04-29T10:00:00.000Z",
"created": "2026-04-29T10:00:00.000Z",
"lastUsed": "2026-04-29T10:00:00.000Z",
"createdByUserId": "string",
"status": "active"
},
"context": {
"path": "string",
"method": "string",
"requestId": "string",
"authentication": {
"requestId": "string",
"authType": "apiKey",
"sub": "string",
"email": "string",
"groups": "string",
"keyId": "string",
"organisationId": "string",
"errorCode": "string",
"error": "string",
"user": {
"id": "string",
"sub": "string",
"firstName": "string",
"lastName": "string",
"email": "string",
"role": "Admin",
"status": "Active",
"onboarded": true,
"userImage": "string",
"billing": {
"planId": "starter",
"status": "incomplete",
"billingAccessStatus": "enabled",
"billingGracePeriodEndIso": "2026-04-29T10:00:00.000Z",
"billingInterval": "month",
"trialEndIso": "2026-04-29T10:00:00.000Z",
"currentPeriodEndIso": "2026-04-29T10:00:00.000Z",
"cancelAtPeriodEnd": true,
"publicationLimit": 1,
"monthlyBandwidthLimitBytes": "string",
"bandwidthPeriodStartIso": "2026-04-29T10:00:00.000Z",
"bandwidthPeriodEndIso": "2026-04-29T10:00:00.000Z",
"bandwidthPeriodUsedBytes": "string",
"bandwidthPeriodCalculatedThroughIso": "2026-04-29T10:00:00.000Z",
"bandwidthAccessStatus": "enabled"
}
},
"scopeId": "string"
}
}
}Error Responses
Response 400
The request body or parameters failed validation.
{
"error": "QL_ERROR",
"message": "string",
"context": {
"path": "string",
"method": "string",
"requestId": "string"
},
"details": [
{
"message": "string"
}
]
}Response 401
The request is missing valid authentication credentials.
{
"error": "AUTHENTICATION_ERROR",
"message": "string",
"context": {
"path": "string",
"method": "string",
"requestId": "string"
}
}Response 403
The authenticated user is not allowed to access this resource.
{
"error": "AUTHENTICATION_ERROR",
"message": "string",
"context": {
"path": "string",
"method": "string",
"requestId": "string"
}
}Response 404
The requested API key could not be found.
{
"error": "EMPTY_RESPONSE",
"message": "string",
"context": {
"path": "string",
"method": "string",
"requestId": "string"
}
}Response 405
The request method is not supported.
{
"error": "UNSUPPORTED_METHOD",
"message": "string",
"context": {
"path": "string",
"method": "string",
"requestId": "string"
}
}/v1/apikeys/{id}Update the name, scopes, revocation state, or status of an API key.Parameters
| Name | Type | Description | Required |
|---|---|---|---|
| id | string | Path parameter. | Yes |
Request Body Fields
| Name | Type | Options | Required |
|---|---|---|---|
name | string | Any | No |
scopes | enum[] | readwritedelete | No |
status | enum | activeinactive | No |
curl -X PATCH "https://api.cirrusreader.com/v1/apikeys/ID" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json"Response Body Fields
| Name | Type | Options | Required |
|---|---|---|---|
item | object | Any | Yes |
context | object | Any | Yes |
Response 200
The API key was updated successfully.
{
"item": {
"id": "string",
"name": "string",
"organisationId": "string",
"userId": "string",
"keyId": "string",
"prefix": "string",
"keyHash": "string",
"suffix": "string",
"scopes": [
"read"
],
"revoked": "2026-04-29T10:00:00.000Z",
"expires": "2026-04-29T10:00:00.000Z",
"created": "2026-04-29T10:00:00.000Z",
"lastUsed": "2026-04-29T10:00:00.000Z",
"createdByUserId": "string",
"status": "active"
},
"context": {
"path": "string",
"method": "string",
"requestId": "string",
"authentication": {
"requestId": "string",
"authType": "apiKey",
"sub": "string",
"email": "string",
"groups": "string",
"keyId": "string",
"organisationId": "string",
"errorCode": "string",
"error": "string",
"user": {
"id": "string",
"sub": "string",
"firstName": "string",
"lastName": "string",
"email": "string",
"role": "Admin",
"status": "Active",
"onboarded": true,
"userImage": "string",
"billing": {
"planId": "starter",
"status": "incomplete",
"billingAccessStatus": "enabled",
"billingGracePeriodEndIso": "2026-04-29T10:00:00.000Z",
"billingInterval": "month",
"trialEndIso": "2026-04-29T10:00:00.000Z",
"currentPeriodEndIso": "2026-04-29T10:00:00.000Z",
"cancelAtPeriodEnd": true,
"publicationLimit": 1,
"monthlyBandwidthLimitBytes": "string",
"bandwidthPeriodStartIso": "2026-04-29T10:00:00.000Z",
"bandwidthPeriodEndIso": "2026-04-29T10:00:00.000Z",
"bandwidthPeriodUsedBytes": "string",
"bandwidthPeriodCalculatedThroughIso": "2026-04-29T10:00:00.000Z",
"bandwidthAccessStatus": "enabled"
}
},
"scopeId": "string"
}
}
}Error Responses
Response 400
The request body or parameters failed validation.
{
"error": "QL_ERROR",
"message": "string",
"context": {
"path": "string",
"method": "string",
"requestId": "string"
},
"details": [
{
"message": "string"
}
]
}Response 401
The request is missing valid authentication credentials.
{
"error": "AUTHENTICATION_ERROR",
"message": "string",
"context": {
"path": "string",
"method": "string",
"requestId": "string"
}
}Response 403
The authenticated user is not allowed to access this resource.
{
"error": "AUTHENTICATION_ERROR",
"message": "string",
"context": {
"path": "string",
"method": "string",
"requestId": "string"
}
}Response 404
The requested API key could not be found.
{
"error": "EMPTY_RESPONSE",
"message": "string",
"context": {
"path": "string",
"method": "string",
"requestId": "string"
}
}Response 405
The request method is not supported.
{
"error": "UNSUPPORTED_METHOD",
"message": "string",
"context": {
"path": "string",
"method": "string",
"requestId": "string"
}
}/v1/apikeys/{id}Delete an API key by ID.Parameters
| Name | Type | Description | Required |
|---|---|---|---|
| id | string | Path parameter. | Yes |
curl -X DELETE "https://api.cirrusreader.com/v1/apikeys/ID" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json"Response Body Fields
| Name | Type | Options | Required |
|---|---|---|---|
item | object | Any | Yes |
context | object | Any | Yes |
Response 200
The API key was deleted successfully.
{
"item": {
"id": "string",
"name": "string",
"organisationId": "string",
"userId": "string",
"keyId": "string",
"prefix": "string",
"keyHash": "string",
"suffix": "string",
"scopes": [
"read"
],
"revoked": "2026-04-29T10:00:00.000Z",
"expires": "2026-04-29T10:00:00.000Z",
"created": "2026-04-29T10:00:00.000Z",
"lastUsed": "2026-04-29T10:00:00.000Z",
"createdByUserId": "string",
"status": "active"
},
"context": {
"path": "string",
"method": "string",
"requestId": "string",
"authentication": {
"requestId": "string",
"authType": "apiKey",
"sub": "string",
"email": "string",
"groups": "string",
"keyId": "string",
"organisationId": "string",
"errorCode": "string",
"error": "string",
"user": {
"id": "string",
"sub": "string",
"firstName": "string",
"lastName": "string",
"email": "string",
"role": "Admin",
"status": "Active",
"onboarded": true,
"userImage": "string",
"billing": {
"planId": "starter",
"status": "incomplete",
"billingAccessStatus": "enabled",
"billingGracePeriodEndIso": "2026-04-29T10:00:00.000Z",
"billingInterval": "month",
"trialEndIso": "2026-04-29T10:00:00.000Z",
"currentPeriodEndIso": "2026-04-29T10:00:00.000Z",
"cancelAtPeriodEnd": true,
"publicationLimit": 1,
"monthlyBandwidthLimitBytes": "string",
"bandwidthPeriodStartIso": "2026-04-29T10:00:00.000Z",
"bandwidthPeriodEndIso": "2026-04-29T10:00:00.000Z",
"bandwidthPeriodUsedBytes": "string",
"bandwidthPeriodCalculatedThroughIso": "2026-04-29T10:00:00.000Z",
"bandwidthAccessStatus": "enabled"
}
},
"scopeId": "string"
}
}
}Error Responses
Response 400
The request body or parameters failed validation.
{
"error": "QL_ERROR",
"message": "string",
"context": {
"path": "string",
"method": "string",
"requestId": "string"
},
"details": [
{
"message": "string"
}
]
}Response 401
The request is missing valid authentication credentials.
{
"error": "AUTHENTICATION_ERROR",
"message": "string",
"context": {
"path": "string",
"method": "string",
"requestId": "string"
}
}Response 403
The authenticated user is not allowed to access this resource.
{
"error": "AUTHENTICATION_ERROR",
"message": "string",
"context": {
"path": "string",
"method": "string",
"requestId": "string"
}
}Response 404
The requested API key could not be found.
{
"error": "EMPTY_RESPONSE",
"message": "string",
"context": {
"path": "string",
"method": "string",
"requestId": "string"
}
}Response 405
The request method is not supported.
{
"error": "UNSUPPORTED_METHOD",
"message": "string",
"context": {
"path": "string",
"method": "string",
"requestId": "string"
}
}