Reader Users

2
GET/v1/reader-usersList reader users

Request Body Fields

NameTypeOptionsRequired
limit
numberAnyNo
nextToken
stringAnyNo
curl -X GET "https://api.cirrusreader.com/v1/reader-users" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"

Response Body Fields

NameTypeOptionsRequired
items
object[]AnyYes
nextToken
stringAnyNo
context
objectAnyYes

Response 200

application/json

{
  "items": [
    {
      "id": "string",
      "deviceId": "string",
      "userId": "string",
      "lastOrigin": "string",
      "lastSessionStartedAt": "2026-04-29T10:00:00.000Z",
      "numberOfBooksRead": 1,
      "currentPublicationId": "string"
    }
  ],
  "nextToken": "string",
  "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 405

The request method is not supported.

{
  "error": "UNSUPPORTED_METHOD",
  "message": "string",
  "context": {
    "path": "string",
    "method": "string",
    "requestId": "string"
  }
}
GET/v1/reader-users/{id}Get reader user by id

Parameters

NameTypeDescriptionRequired
idstringPath parameter.Yes
curl -X GET "https://api.cirrusreader.com/v1/reader-users/ID" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"

Response Body Fields

NameTypeOptionsRequired
item
objectAnyYes
context
objectAnyYes

Response 200

application/json

{
  "item": {
    "id": "string",
    "deviceId": "string",
    "userId": "string",
    "lastOrigin": "string",
    "lastSessionStartedAt": "2026-04-29T10:00:00.000Z",
    "numberOfBooksRead": 1,
    "currentPublicationId": "string",
    "origins": [
      "string"
    ],
    "currentPublication": {
      "title": "string",
      "author": [
        "string"
      ],
      "type": "EPUB",
      "isReflowable": true,
      "status": "draft",
      "uploadStatus": "upload_pending",
      "currentEditionId": "string",
      "publicationId": "string",
      "cover": "string"
    },
    "readingHistory": [
      {
        "title": "string",
        "author": [
          "string"
        ],
        "type": "EPUB",
        "isReflowable": true,
        "status": "draft",
        "uploadStatus": "upload_pending",
        "currentEditionId": "string",
        "publicationId": "string",
        "cover": "string",
        "firstReadAtIso": "2026-04-29T10:00:00.000Z",
        "lastReadAtIso": "2026-04-29T10:00:00.000Z",
        "sessionCount": 1,
        "bookmarkCount": 1,
        "highlightCount": 1,
        "progression": 1,
        "chapterTitle": "string",
        "pageLabel": "string",
        "pageIndex": 1,
        "progressUpdatedAtIso": "2026-04-29T10:00:00.000Z"
      }
    ],
    "currentReadingState": {
      "sessionId": "string",
      "bookmarkCount": 1,
      "highlightCount": 1,
      "progression": 1,
      "chapterTitle": "string",
      "pageLabel": "string",
      "pageIndex": 1,
      "updatedAtIso": "2026-04-29T10:00:00.000Z"
    }
  },
  "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"
  }
}