accounts.update
Update an account's configuration.
Prerequisites
- A Curviate API key, passed as
apiKeywhen you construct the client. Quickstart shows how to create one.
Signature
update(accountId: string, body: AccountUpdateBody): Promise<AccountUpdateResult>Example
import { Curviate } from "@curviate/sdk";
const curviate = new Curviate({
apiKey: "cvt_live_...",
baseUrl: "https://api.curviate.com",
});
const account = await curviate.accounts.update("acc_123", { country: "DE" });
console.log(account.connection_location?.country); // "DE"Parameters
| Name | Type | Required | Description |
|---|---|---|---|
accountId | string | Yes | The account ID (acc_...) of the account to update. |
metadata | object | No | Your own flat string map for this account (up to 16 keys, key 40 chars, value 500). Replaces the stored map whole; null clears it. |
external_id | string | No | Your own id for this account's end user (1-255 chars), or null to clear it. Omit to leave it unchanged. |
proxy | object | No | Your own proxy, or null to stop using it and return to a managed location (null requires country in the same request). Omit to leave it unchanged. |
country | string | No | Move this account's connection location to this supported ISO 3166-1 alpha-2 country (e.g. US, DE). LinkedIn sees a new IP in that country and may ask the owner to verify, so change it only when the current location is wrong. Strict unless allow_country_fallback is true. On an account using your own proxy, send proxy: null with it. |
allow_country_fallback | boolean | No | Optional. false (the default with country or ip): only ever connect from that country; a connect fails when no connection is free there. true: a connection from another country may be used when none is free in the chosen one. Not accepted with proxy. |
Returns
Resolves to AccountUpdateResult. Top-level fields: object, account_id, status, auth_method, full_name, headline, connected_at, last_checked_at, seat_id, requested_products, external_id, owner_user_id, team_access, metadata, connection_location, substrate_created_at, account_states, activity_window, safety_warning.
Error codes
| Code | What it means, and what to do |
|---|---|
UNAUTHORIZED | The API key is missing, malformed, or revoked. Check the key you passed to the client. |
INVALID_REQUEST | A parameter failed validation. The message names the offending field; fix the request rather than retrying it. |
RATE_LIMIT_ACCOUNT | This account's own quota is exhausted. Wait for the window in the Retry-After header, then retry. |
RATE_LIMIT_TENANT | The tenant-wide quota is exhausted across all accounts. Slow the whole workload, not just this call. |
PLATFORM_RATE_LIMIT | LinkedIn is throttling this account. Back off well beyond the hinted delay; sustained pressure risks the account. |
PLATFORM_ERROR | An 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_NOT_FOUND | No connected account with that id belongs to this tenant. List your accounts to get a current id. |
CONNECTION_LOCATION_UNAVAILABLE | No connection is free in that country right now, or the change landed elsewhere. Try a nearby country or allow fallback; read connectionLocation for where the account connects from now. |
INTERNAL | An unexpected server error. Retry once; if it persists, it is ours, not yours. |
PAYLOAD_TOO_LARGE | Three limits can trigger this. The platform's own ceiling on total request size is the lowest and the one you are most likely to hit: it starts rejecting at roughly 1 MB, so a handful of photo-sized images is refused even though it clears everything below. Above that, this API caps one attachment at 5 MiB of file content and the whole request body at 9 MiB. Attachments travel base64-encoded, which inflates them by about a third, so a 5 MiB file costs roughly 6.7 MiB of the body budget. Send fewer or smaller attachments; retrying unchanged will not help. |
PLATFORM_NOT_IMPLEMENTED | The requested configuration is not supported for this account. Retrying will not help. |
RESOURCE_NOT_FOUND | The id in the path does not exist, or is not visible to this account. Re-read it from the list endpoint that produced it. |
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.