accounts.cancelSeat

Schedule a seat's cancellation at the end of the current period.

Prerequisites

  • A Curviate API key, passed as apiKey when you construct the client. Quickstart shows how to create one.

Signature

cancelSeat(seatId: string): Promise<SeatCancelResult>

Example

import { Curviate } from "@curviate/sdk";
 
const curviate = new Curviate({
  apiKey: "cvt_live_...",
  baseUrl: "https://api.curviate.com",
});
 
const { effective_at } = await curviate.accounts.cancelSeat("seat_123");

Parameters

NameTypeRequiredDescription
seatIdstringYesThe seat ID (seat_...) to cancel.

Returns

Resolves to SeatCancelResult. Top-level fields: effective_at, safety_warning.

Error codes

CodeWhat it means, and what to do
UNAUTHORIZEDThe API key is missing, malformed, or revoked. Check the key you passed to the client.
INVALID_REQUESTA parameter failed validation. The message names the offending field; fix the request rather than retrying it.
RATE_LIMIT_ACCOUNTThis account's own quota is exhausted. Wait for the window in the Retry-After header, then retry.
RATE_LIMIT_TENANTThe tenant-wide quota is exhausted across all accounts. Slow the whole workload, not just this call.
PLATFORM_ERRORAn upstream failure, usually transient: retry once with backoff before treating it as a real error. Check the response first, though. When it carries retry_likely_to_succeed: false and retry_hint: {kind: "never"}, retrying cannot help and backing off only delays the real answer.
ACCOUNT_DISPUTEDA payment on this workspace is disputed. Settle it with your bank or card issuer, or contact support; retrying will not help.
ALREADY_CANCELLEDThe seat's cancellation already took effect. Add a new seat instead.
INSUFFICIENT_ROLEYour role in the team does not allow this action. Ask a team Owner to do it or to change your role; retrying will not help.
PAYMENT_REQUIREDThe workspace has no active subscription, or its subscription is past due. Subscribe, or update the payment method, then retry.
SEAT_NOT_FOUNDThe seat id does not exist for this tenant.
SUBSCRIPTION_BUSYAnother change to this subscription was in progress. After a seat add, check the seat count before retrying, since the purchase may have gone through; otherwise retry in a few seconds.
SUBSCRIPTION_NOT_FOUNDNo active subscription exists for this tenant. Buy one first, then retry.
TRIAL_ACTIVE_SEAT_LIMITThe workspace is on a free trial, which cannot add or change seats. Buy a seat to convert to a paid subscription first.

Every code above is a stable CurviateError.code you can branch on. The full list, the response envelope, and retry semantics are in the Error codes reference.

Next steps

  • Quickstart: connect a LinkedIn account. An empty account list means the key works and nothing is connected yet.
  • accounts.list: List the tenant's connected LinkedIn accounts, cursor-paginated.
  • accounts.listSeats: List the workspace's live seats: each seat_id, whether an account occupied it, and that account_id (null when free).
  • SDK Quick Start: installation, the client, account scoping, and pagination.