Pause, resume or hand over a customer
PATCHhttps://app.booksbyinstant.com/api/integrator/v1/customers/{id}
status pauses or resumes the customer; the answer is the customer. While it is paused, Instant answers every message with a fixed sentence that the customer is paused, and runs no scheduled, background or event work; reads, decisions, uploads, connections and member changes work, and nothing is deleted. customer.paused or customer.resumed is posted to the webhook. ownerMemberId hands the ownership to that member and answers the customer with its members.
updateCustomer · This page as markdown
Example request
cURL
curl -X PATCH 'https://app.booksbyinstant.com/api/integrator/v1/customers/01900000-0000-7000-8000-000000000000' \
-H "Authorization: Bearer $INTEGRATOR_CREDENTIAL" \
-H "Content-Type: application/json" \
-d '{
"status": "active"
}'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", {
method: "PATCH",
headers: {
Authorization: `Bearer ${process.env.INTEGRATOR_CREDENTIAL}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"status": "active"
}),
});
const data = await res.json();Python
import os
import requests
res = requests.patch(
"https://app.booksbyinstant.com/api/integrator/v1/customers/01900000-0000-7000-8000-000000000000",
headers={
"Authorization": f"Bearer {os.environ['INTEGRATOR_CREDENTIAL']}",
},
json={
"status": "active",
},
)
data = res.json()Authorization
Bearer token live_<100 hex>
Authorization: Bearer <secret>. A 401 answers WWW-Authenticate: Bearer realm="instant-integrator-api".
Path parameters
-
idstring · uuid requiredThe customer's id.
Request body
At most 4096 bytes.
Body application/json, required
object
Exactly one of status or ownerMemberId; both, or neither, is refused. status pauses or resumes the customer, and the same status again changes nothing. ownerMemberId hands the ownership to one of the customer's members, who must be an active admin.
send exactly 1 field · no other fields
-
statusstringOne of
activepaused -
ownerMemberIdstring · uuidThe id of one of the customer's members, an active admin, who becomes its owner.
Example, built from the schema
{
"status": "active"
}Responses
200
The customer; with its members after a handover.
Body application/json
object
-
customerobject requiredA customer: a company in Instant that the integrator created.
-
idstring · uuid requiredThe customer's id.
-
referencestring requiredThe integrator's own reference for the customer.
-
statusstring requiredpaused while the integrator has paused the customer.
One of
activepaused -
countrystring or null requiredThe customer's ISO 3166-1 alpha-2 country code, in capitals, or null when none is recorded.
-
createdAtstring · date-time requiredWhen the customer was created. ISO 8601 in UTC with milliseconds, such as 2026-11-06T10:00:00.000Z.
-
pausedAtstring · date-time or null requiredWhen the customer was paused, or null while it is active. ISO 8601 in UTC with milliseconds, such as 2026-11-06T10:00:00.000Z.
-
-
membersarray of objectOnly after an ownerMemberId handover.
Each item
-
idstring · uuid requiredThe member's id.
-
referencestring requiredThe integrator's own reference for the member, unique across all its customers.
-
namestring requiredThe member's name.
-
rolestring requiredadmin manages the company and sees every entity, user works within their entities, auditor reads.
One of
adminuserauditor -
ownerboolean requiredTrue for the one member who owns the customer.
-
languagestring or null requiredThe member's language: one of the language values the requests take, or null when none is set.
-
timezonestring or null requiredThe member's IANA time zone, or null when none is set.
-
activeboolean requiredFalse while the member is deactivated.
-
joinedAtstring · date-time requiredWhen the member joined the customer. ISO 8601 in UTC with milliseconds, such as 2026-11-06T10:00:00.000Z.
-
deactivatedAtstring · date-time or null requiredWhen the member was deactivated, or null while active. ISO 8601 in UTC with milliseconds, such as 2026-11-06T10:00:00.000Z.
-
entityAccessone of 2 shapes requiredWhich of the customer's entities the member works in: all of them, or a selection. An admin always has all. A deactivated member shows the selection that reactivating them restores.
Either object
-
modestring requiredalways
all
-
Or object
-
modestring requiredalways
selected -
entityIdsarray of string · uuid requiredThe entity ids of the selection, sorted.
-
-
tokensobject required-
activeinteger requiredHow many of the member's tokens are active and unexpired, at most 20.
at least
0
-
-
Example, built from the schema
{
"customer": {
"id": "01900000-0000-7000-8000-000000000000",
"reference": "string",
"status": "active",
"country": "string",
"createdAt": "2026-01-15T09:30:00.000Z",
"pausedAt": "2026-01-15T09:30:00.000Z"
},
"members": [
{
"id": "01900000-0000-7000-8000-000000000000",
"reference": "string",
"name": "string",
"role": "admin",
"owner": true,
"language": "string",
"timezone": "string",
"active": true,
"joinedAt": "2026-01-15T09:30:00.000Z",
"deactivatedAt": "2026-01-15T09:30:00.000Z",
"entityAccess": {
"mode": "all"
},
"tokens": {
"active": 0
}
}
]
}400
The body is not one JSON object, or a field is invalid; error says which. Also when the body has both status and ownerMemberId, or neither.
Body application/json
object Error
Every answer that is not a success.
-
errorstring requiredInstant's sentence for people. A 4xx keeps the refusal's own sentence; a 5xx always says "Instant is temporarily unavailable. Please try again shortly."
-
codestring requiredStable, 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.
-
retryAfterintegerSeconds to wait before retrying, also sent as the
Retry-Afterheader. Present only when there is a wait, as on a 429.at least
1 -
existingIdstring · uuidOn 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"
}401
The credential is missing, malformed, unknown, revoked or rotated, or its integrator is disabled. All of these answer the same way.
Headers
-
WWW-AuthenticatestringBearer realm="instant-integrator-api"
Body application/json
The Error object, as in 400.
404
id names nothing this caller can see. Also when ownerMemberId names no member of the customer.
Body application/json
The Error object, as in 400.
409
The new owner is not an active admin, or the company changed meanwhile: read it again.
Body application/json
The Error object, as in 400.
5XX
Instant is temporarily unavailable. Retry later, with backoff.
Body application/json
The Error object, as in 400.