API
View as Markdown

Error codes

HTTPCodeMeaning
400validation_errorMalformed input. error.details may include field-level info.
401unauthorizedMissing or invalid key, or the user account is disabled / suspended.
401key_revokedKey was revoked.
401key_expiredKey passed its expiry date.
401token_expired(Auto-sync) The broker token cannot be renewed. User must reconnect via the settings UI.
403forbidden_scopeAuthentication OK but the key lacks the required scope.
404not_foundThe resource does not exist or does not belong to you. Returned identically for both cases to prevent ID enumeration.
405method_not_allowedWrong HTTP method. error.details.allowed lists what is accepted.
409idempotency_conflictSame Idempotency-Key reused with a different request body.
409duplicate_nameTag, tag category, account, strategy, copy group: name already exists.
409category_has_tagsCannot delete a tag category that still has tags.
409conflictResource-specific conflict (e.g. copy group member already in another group).
413request_too_largeRequest body exceeds the size cap (1 MB JSON, 10 MB screenshot).
413limit_reachedStorage quota exceeded on a screenshot upload.
429rate_limitedRate limit hit. Retry after Retry-After seconds. X-RateLimit-Scope indicates which window: key, user, key-daily, or ip-preauth (unauthenticated abuse).
429limit_reachedSubscription cap hit (e.g. account count, strategy count, Pro-only feature without a Pro plan).
500internal_errorUnexpected server-side problem. Include the request_id from meta when reporting.
502broker_api_error(Auto-sync) Upstream broker API returned an error. Retry later.
503deadlock_retryTwo concurrent writes deadlocked. Retry after Retry-After (1 second).