Voznest Forge

Workspace

WorkspaceProjects

Development

DocsAPI ReferenceSDKsEmbed StudioChangelog
  1. Forge
  2. /Docs

Start here

Getting StartedQuickstartPlatform ConceptsEnvironments

Build

ProjectsIdentityAgentsGatewayCapabilitiesPermissions ReferenceInstallationsLive activity

Commands & interactions

CommandsContext-menu CommandsInteractionsComponentsModals (Forms)Activities (Embedded Apps)

Acting in hubs

MessagesEmbedsEmbeds v2 (Blocks)Embeds v3Incoming WebhooksHub Management APIEvent StreamDelivery

Sign in with Voznest

AccessOpenID Connect

API

APIAuthenticationErrorsRate LimitsSecurity

Publish & operate

App Market & ListingTemplates & SandboxObservability & Team Tools

Tools

SDKsExamplesFAQ & TroubleshootingReference

API

Errors

Every error code the API returns, its status and what to do.

Failures always have the same shape. Switch on error.code, not on the message (messages are for humans and may change).

{ "success": false, "error": { "code": "PERMISSION_DENIED", "message": "…", "details": { … } } }
CodeStatusMeaning
VALIDATION_ERROR400The body, query or params didn't match the schema; details lists each field.
BAD_REQUEST400The request is well-formed but not allowed in this state (the message explains why).
CONFIRMATION_REQUIRED400A destructive portal action needs a typed confirmation.
UNAUTHORIZED401Missing or invalid credential.
TOKEN_EXPIRED401The access token expired — refresh it.
SESSION_REVOKED401The session or token was revoked (rotation, sign-out).
INVALID_CREDENTIALS401Wrong password (portal sign-in, ownership transfer).
PERMISSION_DENIED403Authenticated but not allowed: hub permission, project role, OAuth scope or API-key scope.
ROLE_HIERARCHY403The target role/member is at or above the agent's highest role.
TIMED_OUT403The acting account is suspended in that hub.
BANNED403Banned from that hub.
AUTOMOD_BLOCKED403The hub's Guardian blocked the content.
RULES_NOT_ACCEPTED403The hub requires members to accept its rules before chatting (agents are exempt).
APPLICATION_REQUIRED403The hub is private: joining needs an approved application.
FEATURE_DISABLED403The feature is turned off for this account, hub or the platform.
SERVER_SUSPENDED / SERVER_LOCKED403Trust & Safety suspended or locked the hub.
CLIENT_NOT_ALLOWED403That credential can't be used from this client (e.g. a browser session on the gateway).
NOT_FOUND404Doesn't exist — or you aren't allowed to know it does.
CONFLICT409Already exists, or the state changed (e.g. an interaction already answered).
NOT_IN_VOICE409A voice action from someone who isn't in a voice room.
INVITE_INVALID410The invite expired, was used up or revoked.
INTERACTION_EXPIRED410More than 15 minutes since the interaction, or a form already submitted.
PAYLOAD_TOO_LARGE413Body or file too large.
UNSUPPORTED_MEDIA_TYPE415File type not allowed for that upload purpose.
RATE_LIMITED429Slow down; honor Retry-After.
SLOWMODE429Channel slowmode; details.retryAfter seconds.
SPAM_BLOCKED / RAID_PROTECTION429Abuse protection paused this account's actions for a while.
NOT_CONFIGURED501The platform doesn't have that integration configured.
APP_OFFLINE503No agent of the handling environment is connected (shown to the member).
MAINTENANCE503Platform maintenance; retry later (details.endsAt).
INTERNAL_ERROR500Unexpected error — safe to retry with backoff; it's logged on our side.

OAuth endpoints

/oauth/token and /oauth/revoke follow RFC 6749: { "error": "invalid_grant" | "invalid_client" | "invalid_request" | "unsupported_grant_type" | "invalid_scope", "error_description": "…" }.

Handling

  • Retry only 429, 500, 503 — with exponential backoff and jitter; for 429 wait Retry-After.
  • Never retry 4xx validation or permission errors unchanged; they will fail again.
  • Treat 404 as "not visible to you": the API doesn't reveal whether something you can't access exists.
PreviousAuthenticationNext Rate Limits