Docs
Dashboard
API reference / CredentialsBeta

Update a credential

Changes what is sent and keeps the rest; type cannot change. A change of origins that adds a site (or, for a secret, removes the limit), and a scope/shell that makes an AI-only credential readable by shells, needs the sensitive values in the same request (a secret's value; a password's password, and totpSecret when it has 2FA), and so does a change of codeSource or codeUrl (the password), and applies only if the sites, scope, shell, codeSource and codeUrl did not change meanwhile (409 conflict). A new codeUrl answers with a new codeUrlSecret once, and so does rotateCodeUrlSecret: true (any time; the old one stops at once). Sessions that export the credential get the new values on their next machine (resume or recovery); runs already working keep the ones they started with.

PATCH/v1/credentials/{name}

Request

Method and pathPATCH/v1/credentials/{name}
Base URLhttps://api.boxline.dev
AuthenticationYour API key in the x-api-key header (or Authorization: Bearer). The examples read it from BOXLINE_API_KEY.
Rate limitYes. See Rate limits for the numbers and headers.

Path parameters

NameTypeDefaultAllowed valuesDescription
namerequiredstring––Up to 64 characters. Pattern: ^[A-Z_][A-Z0-9_]*$.

Body

JSON with content-type: application/json. Required.

NameTypeDefaultAllowed valuesDescription
originsstring[] | null––null (any site) for a secret only. 1 to 20 items.
usernamestring––1 to 320 characters.
passwordstring––1 to 1024 characters.
totpSecretstring | null––A new 2FA setup key or otpauth://totp/ link; null removes 2FA.
codeSourcestring | null–totp, push, url, nullChanging it needs the password again.
codeUrlstring––Changing it needs the password again; answers with a new codeUrlSecret. Up to 2048 characters.
codeTimeoutSecondsinteger––From 5 to 900.
valuestring––1 to 8000 characters.
descriptionstring | null––Up to 500 characters.
shellboolean––
scopestringagentagent, shell, allagent: only the AI, as placeholders (agent runs, steps, scripts' step(), the type action); shell: only as environment variables in session shells and commands; all: both.
rotateCodeUrlSecretboolean––A new codeUrl signing secret
curl -X PATCH https://api.boxline.dev/v1/credentials/$CREDENTIAL_NAME \  -H "x-api-key: $BOXLINE_API_KEY" \  -H "content-type: application/json" \  -d '{"password": "'"$NEW_PASSWORD"'"}'

Responses

200 OK

The credential.

Fields

NameTypeDefaultAllowed valuesDescription
namestring––
typestring–password, secret
descriptionstring | null––
originsstring[] | null––Sites where the AI may type it (null = any site; always set for a password).
usernamestring––A password's user name.
hasTotpboolean––A password has a 2FA key (codeSource totp).
codeSourcestring | null–totp, push, url, nullWhere a password's 2FA codes come from (%NAME.otp%, boxline-otp NAME); null: no 2FA.
codeUrlstring | null––The endpoint the platform asks for codes (codeSource url).
codeTimeoutSecondsinteger––How long a wait for a pushed or asked code lasts. From 5 to 900.
previewstring | null––A secret's last 4 characters, for values of 24 characters or more; null for shorter values and for secrets with origins.
shellboolean––The AI may use it in bash commands; this also allows exporting it into shells.
scopestringagentagent, shell, allagent: only the AI, as placeholders (agent runs, steps, scripts' step(), the type action); shell: only as environment variables in session shells and commands; all: both.
createdAtstring––Format: date-time.
updatedAtstring––Format: date-time.
lastUsedAtstring | null––Format: date-time.
codeUrlSecretstring––Signs the platform's requests to codeUrl (Boxline-Signature
Response 200
{  "name": "SHOP",  "type": "password",  "description": "…",  "origins": [    "…"  ],  "username": "…",  "hasTotp": false,  "codeSource": "totp",  "codeUrl": "…",  "codeTimeoutSeconds": 5,  "preview": "••••1a2b",  "shell": false,  "scope": "agent",  "createdAt": "2026-09-29T10:00:00.000Z",  "updatedAt": "2026-09-29T10:00:00.000Z",  "lastUsedAt": "2026-09-29T10:00:00.000Z",  "codeUrlSecret": "whsec_…"}

Errors

Errors have a matching HTTP status and the same body. code is stable, so check it in your code; message is for people. See Errors and request ids.

StatusCodesWhen
400 Bad Requestinvalid_request, invalid_json, invalid_cursor, invalid_idempotency_key, invalid_extension, variables_with_extensions, terms_not_accepted, invalid_reset_token, invalid_confirmation_code, wrong_password, no_password, invalid_next, invalid_oauth_tokenThe request is not valid.
401 UnauthorizedunauthorizedMissing or invalid API key.
402 Payment Requiredfeature_not_in_plan, spend_limit, out_of_credit, plan_limit, spend_limit, out_of_credit, organization, project, plan, creditThe plan does not include this, a monthly allowance or spending limit is used up, the organization has no credit left, or the plan allows no more of this. spend_limit and out_of_credit carry error.details.limit: organization, project, plan or credit.
404 Not Foundnot_found, invite_not_found, provider_unavailableNo such thing in this project (or organization), or no such route.
409 Conflictsession_not_running, shell_disabled, browser_disabled, nothing_saved, not_resumable, invalid_state, conflict, email_taken, identity_in_use, provider_already_linked, last_sign_in_method, not_impersonating, machine_too_old, too_many_credential_values, limit_reached, terms_version_mismatch, no_project, last_owner, organization_not_empty, project_has_sessions, already_member, invite_pending, idempotency_in_progressThe current state does not allow it, or a request with this Idempotency-Key is still being answered.
429 Too Many Requestsrate_limited, concurrency_limitToo many requests, or the organization's concurrent sessions (its plan's) or the project's concurrencyCap are in use.
Error body
{  "error": {    "code": "not_found",    "message": "session not found",    "requestId": "req_4fJx0aQm2Lk9Pz7N"  }}

Learn more

These docs describe a beta API. Endpoints, fields and SDK methods may change before general availability; breaking changes will be listed in the changelog.