API docs

Reference / Member tokens

List a member's tokens

GEThttps://app.booksbyinstant.com/api/integrator/v1/customers/{id}/members/{memberId}/tokens

Revoked and expired tokens included; never a secret.

Example request

cURL

curl -X GET 'https://app.booksbyinstant.com/api/integrator/v1/customers/01900000-0000-7000-8000-000000000000/members/01900000-0000-7000-8000-000000000000/tokens' \
  -H "Authorization: Bearer $INTEGRATOR_CREDENTIAL"

JavaScript

// Node 18 or later, in an ES module (.mjs), which allows the top-level await.
const res = await fetch("https://app.booksbyinstant.com/api/integrator/v1/customers/01900000-0000-7000-8000-000000000000/members/01900000-0000-7000-8000-000000000000/tokens", {
  method: "GET",
  headers: {
    Authorization: `Bearer ${process.env.INTEGRATOR_CREDENTIAL}`,
  },
});
const data = await res.json();

Python

import os
import requests

res = requests.get(
    "https://app.booksbyinstant.com/api/integrator/v1/customers/01900000-0000-7000-8000-000000000000/members/01900000-0000-7000-8000-000000000000/tokens",
    headers={
        "Authorization": f"Bearer {os.environ['INTEGRATOR_CREDENTIAL']}",
    },
)
data = res.json()

Authorization

Bearer token live_<100 hex>

Authorization: Bearer <secret>. A 401 answers WWW-Authenticate: Bearer realm="instant-integrator-api".

Path parameters

  • id string · uuid required

    The customer's id.

  • memberId string · uuid required

    The member's id.

Responses

200

The tokens, newest first.

Body application/json

object

  • tokens array of object required

    Each item

    • id string · uuid required

      The token's id.

    • hint string required

      The secret's prefix, … and its last four hex characters, to tell tokens apart.

      matches ^[a-z]+_m_…[0-9a-f]{4}$

    • status string required

      active until the token expires or is revoked; neither one works again.

      One of active expired revoked

    • createdAt string · date-time required

      When the token was issued. ISO 8601 in UTC with milliseconds, such as 2026-11-06T10:00:00.000Z.

    • expiresAt string · date-time or null required

      When the token stops working, or null when it works until it is revoked. ISO 8601 in UTC with milliseconds, such as 2026-11-06T10:00:00.000Z.

    • revokedAt string · date-time or null required

      When the token was revoked, or null. ISO 8601 in UTC with milliseconds, such as 2026-11-06T10:00:00.000Z.

    • revokedReason string or null required

      Why it was revoked: integrator through this API, deactivated when the member was deactivated, operator by the people running Instant. Null unless revoked.

      One of integrator deactivated operator

    • lastUsedAt string · date-time or null required

      When the token was last used, accurate to 5 minutes, or null when it never was. ISO 8601 in UTC with milliseconds, such as 2026-11-06T10:00:00.000Z.

Example, built from the schema

{
  "tokens": [
    {
      "id": "01900000-0000-7000-8000-000000000000",
      "hint": "string",
      "status": "active",
      "createdAt": "2026-01-15T09:30:00.000Z",
      "expiresAt": "2026-01-15T09:30:00.000Z",
      "revokedAt": "2026-01-15T09:30:00.000Z",
      "revokedReason": "integrator",
      "lastUsedAt": "2026-01-15T09:30:00.000Z"
    }
  ]
}

401

The credential is missing, malformed, unknown, revoked or rotated, or its integrator is disabled. All of these answer the same way.

Headers

  • WWW-Authenticate string

    Bearer realm="instant-integrator-api"

Body application/json

object Error

Every answer that is not a success.

  • error string required

    Instant's sentence for people. A 4xx keeps the refusal's own sentence; a 5xx always says "Instant is temporarily unavailable. Please try again shortly."

  • code string required

    Stable, and what a caller branches on: VALIDATION_ERROR (400), UNAUTHENTICATED (401), FORBIDDEN (403), NOT_FOUND (404), CONFLICT (409), LIMIT_EXCEEDED (413), UNSUPPORTED_MEDIA_TYPE (415), UNREADABLE_FILE (422), RATE_LIMITED (429) and UNAVAILABLE (5xx). More codes may be added; treat one you do not know by its status.

  • retryAfter integer

    Seconds to wait before retrying, also sent as the Retry-After header. Present only when there is a wait, as on a 429.

    at least 1

  • existingId string · uuid

    On a 409 that names the object already there, such as a customer with that reference: its id.

Example, built from the schema

{
  "error": "string",
  "code": "VALIDATION_ERROR",
  "retryAfter": 1,
  "existingId": "01900000-0000-7000-8000-000000000000"
}

404

id or memberId name nothing this caller can see.

Body application/json

The Error object, as in 401.

5XX

Instant is temporarily unavailable. Retry later, with backoff.

Body application/json

The Error object, as in 401.