Skip to content

Error Codes

This page lists all error and reason codes the SDK may return, organized by category.

Returned in decision.reason_codes[] to explain why a placement was or wasn’t shown.

CodeMeaningFix
cap_limit_exceededImpression cap reached (session/day/week/month/lifetime)Increase cap in dashboard or wait for period reset
suppressedUser recently dismissed, snoozed, or completed CTAWait for cooldown to expire
plan_mismatchUser’s plan doesn’t match placement targetingVerify targeting rules or user context
segment_mismatchUser doesn’t match the required segmentCheck segment definitions
config_not_loadedExportedConfig not yet availableEnsure provider initialized before rendering slots
api_errorAPI returned non-200 responseCheck endpoint URL, API key, and network connectivity
network_errorNetwork timeout or unreachable endpointVerify endpoint is accessible from client
fallback_contentUsing fallback placeholder contentProvider failure — check API connectivity
no_matching_templateSlot’s surfaceTemplateIds don’t match any available templateVerify template IDs match dashboard config
no_matching_placementNo placement rules match the current userExpected — slot renders nothing for this user

Returned in result.reason to explain the entitlement check outcome.

CodeMeaningFix
entitlement_service_unavailableAPI unreachable — defaulted to allowedCheck network connectivity; this is fail-open by design
entitlement_check_errorParse or exception error — defaulted to allowedCheck entitlement handle spelling and context format
local_runtime_default_allowLocal mode with no matching entitlement dataAdd entitlement to ExportedConfig fixture
denied_feature_gateFeature not included in user’s planUpgrade plan or adjust entitlement config
denied_usage_limitUsage limit exceededReport accurate usage via updateUsage()
denied_tier_mismatchUser’s plan tier insufficientresult.tier indicates minimum tier
ErrorSourceMeaning
provider_chain_exhaustedAll providers failedCheck API keys, endpoints, and network
config_fetch_failedExportedConfig could not be loadedVerify configProvider or API endpoint
invalid_api_keyAPI returned 401Check apiKey value and key status
tenant_not_foundAPI returned 404Verify tenantId value
ErrorContextMeaning
interaction_tracking_failedtrackTreatmentInteraction()Event delivery failed — silently dropped
event_delivery_failedtrackEvent()Custom event could not be sent — buffered for retry
ErrorContextMeaning
storage_unavailablelocalStorage/sessionStorageBrowser storage not accessible — using in-memory fallback
storage_quota_exceededsetItem() failedClear old entries or use custom storage provider

Enable verbose logging to see all reason codes and errors:

localStorage.setItem('revturbine:debug', 'true');

Errors and reason codes are also available programmatically:

const { decision, error } = usePlacement({ ... });
// Hook-level error (string)
console.log(error);
// Decision-level reason codes
console.log(decision?.reason_codes);