Troubleshooting

Use this page for high-frequency integrator mistakes. Prefer fixing the request shape over guessing from message text.

Wrong environment or key prefix#

SymptomFix
403 with an API-key errorStaging → https://api-stg.vudy.app + vudy_sandbox_…; production → https://api.vudy.app + vudy_production_…
Key starts with vudy_stg_ / vudy_prod_Replace it with a dashboard-issued vudy_sandbox_… / vudy_production_… key

Missing session vs missing headers#

SymptomFix
401 on a session-only routeAdd a valid Authorization: Bearer <session> from OTP verification
401 on a conditional route without a sessionSend both context headers if that route supports them, or use a team-scoped key
403 saying session/profile context is requiredConfirm the route’s supported auth mode and provide that context
Context headers appear to be ignoredA valid session takes precedence; verify OTP again to change its profile

Insufficient permissions#

SymptomFix
403 names a required permissionUse a key granted that permission; do not try to work around the route restriction
403 on OTC provider APIsUse a production key with OTC_PROVIDER and see Partner OTC

Maintenance or OTP gates#

SymptomFix
503 on send-otp / verify-otpCheck GET /v1/maintenance; retry after status is no longer maintenance
503 on POST /channels/executeThe KYC gate is closed; retry after maintenance status returns ok

Channel quote / execute failures#

SymptomFix
400 validation / signatureRefresh discovery/validation data and send parameters exactly as the capability describes
403 capability / onboardingConfirm onboarding requirements and that the capability is enabled for your application
400 request bodyCheck that capabilityId is a UUID, amount is positive, and params is an object

Rate limits#

On 429, read Retry-After as seconds and do not retry before it elapses. SERVER_VALIDATION_API_AUTH_12 is the hourly limit; SERVER_VALIDATION_API_AUTH_19 is the burst limit. Retry mutations only when the endpoint documents that repeating them is safe.

Getting help#

Include the following when contacting support:

  • x-trace-id from the response headers
  • UTC timestamp, environment, HTTP method, and request path
  • HTTP status, error.code, and the sanitized error body
  • Reproduction steps and a sanitized request body when relevant

Never send a complete API key, session token, OTP, webhook secret, or other credential. If you include an API key identifier, provide only a short non-secret prefix.

See also Responses and errors and Rate limits and maintenance.