Error Response Format
All errors follow the same envelope:{
"result": "ERROR",
"errorCode": "P-001",
"message": "Policy group not found."
}
errorCode field is the stable identifier — pin your integration logic on this value, not on the human-readable message. Messages are localized via the Accept-Language header (en or ko) and may be reworded over time; codes are not.
This page enumerates every code the platform can return, across both the integration API and the console (account, billing, member management). Integration clients will never encounter some sections — Member & Account (M), or the sign-in entries under Auth, for example — but they are documented here so that any code you meet, on any surface, resolves to exactly one meaning.
Code numbers are stable identifiers — once assigned, a code is never reused for a different meaning, even after the original meaning is removed. Gaps in the numbering are therefore expected: they mark codes retired as the engine consolidated onto domain-agnostic action primitives. Every code listed on this page is one the platform can currently return.
Common (C)
| Code | HTTP | Description |
|---|---|---|
C-001 | 400 | Invalid input value |
C-002 | 405 | HTTP method not allowed |
C-003 | 404 | Requested resource not found |
C-004 | 500 | Internal server error. Please try again later |
C-005 | 400 | Invalid data type |
C-006 | 409 | Resource already exists. (Target: {0}) |
C-007 | 429 | Too many requests. Please try again later |
C-008 | 400 | Invalid timezone: {0}. Please use IANA timezone format (e.g., Asia/Seoul, UTC) |
C-009 | 400 | Status change from {0} to {1} is not allowed |
Auth (A)
| Code | HTTP | Description |
|---|---|---|
A-001 | 401 | Authentication failed |
A-002 | 403 | Access denied |
A-003 | 401 | Invalid API Key |
A-004 | 409 | This email is already registered |
A-005 | 409 | Active API keys cannot exceed {0} |
A-006 | 401 | Invalid email or password |
A-009 | 401 | Your Google account email is not verified |
A-010 | 401 | Google authentication failed. Please try signing in again |
A-012 | 400 | This account uses Google Sign-In. Password change is not available |
A-013 | 400 | The new password must be different from the current password |
A-014 | 400 | The password reset link has expired or is invalid |
A-015 | 503 | Failed to send verification email. Please try again shortly |
A-016 | 401 | Your session has expired. Please sign in again |
A-017 | 401 | Invalid session. Please sign in again |
A-018 | 403 | A system account is required for this operation |
A-019 | 403 | System Manager accounts cannot be modified |
A-020 | 401 | Password is incorrect |
A-021 | 429 | Too many failed sign-in attempts. Please try again later |
Policy Engine (P)
| Code | HTTP | Description |
|---|---|---|
P-001 | 404 | Policy group not found |
P-002 | 404 | Policy version not found |
P-003 | 500 | Policy execution failed |
P-005 | 404 | Policy rule not found |
P-006 | 400 | Cannot modify policy version in current status (Only DRAFT allowed) |
P-007 | 400 | Cannot deploy a policy version with no rules |
P-008 | 400 | Operation not allowed in current status. Please check the version status |
P-009 | 403 | Policy group is currently disabled. Execution is not allowed |
P-010 | 400 | Some requested Rule IDs do not exist or do not belong to the current version |
P-011 | 400 | Activation Mode, Strategy, and Execution Limit must be identical within the same activation group: {0} |
P-012 | 400 | Mutex Mode, Strategy, and Mutex Limit must be identical within the same mutex group: {0} |
P-013 | 400 | No previous version available for rollback |
P-014 | 404 | Deployment history not found |
P-015 | 400 | Missing required input facts: [{0}]. Use GET /execution/groups/{groupId}/requirements to check required facts |
P-016 | 400 | The specified version does not belong to the target policy group |
P-017 | 409 | Cannot delete this version. It is currently deployed or used in an active A/B test |
P-018 | 400 | Effective start date must be before or equal to the end date |
P-019 | 400 | No deployed version exists for this policy group. Please deploy a version before executing |
P-020 | 409 | Cannot delete this policy group because it has a live deployment. Please undeploy the current version first |
P-021 | 409 | Cannot delete this policy group because an A/B test is running. Please stop the A/B test first |
P-022 | 400 | Condition field is required for SINGLE conditions. To create a catch-all rule, leave the condition group empty |
P-023 | 400 | Condition operator is required for SINGLE conditions |
P-024 | 400 | Condition tree exceeds maximum depth of {0} |
P-025 | 400 | Duplicate priority detected. Each rule must have a unique priority value within a policy version. Conflicting priority: {0} |
P-027 | 400 | Operator {0} requires value type {1} but got {2} |
P-028 | 400 | Condition valueType is required (must not be null) — silent inference is forbidden |
P-029 | 400 | Condition value is required (must not be null) — null semantics is not yet supported |
P-030 | 404 | Domain template not found: {0} |
P-031 | 400 | Domain template ‘{0}’ is not available yet |
P-032 | 409 | Policy group name ‘{0}’ is already in use |
P-033 | 409 | Failed to auto-resolve a unique policy group name after {0} attempts. Please specify a custom name |
P-034 | 400 | Some requested policy group IDs do not exist or are archived |
P-035 | 400 | Invalid time range. ‘from’ must be earlier than ‘to’ |
P-036 | 400 | This version is already live. There is nothing to deploy |
P-037 | 400 | This version’s effective start date has not arrived yet. Use scheduled deployment (deploy schedule) instead |
P-038 | 409 | A pending scheduled deployment already exists for this policy group. Cancel it before scheduling a new one |
P-039 | 404 | No pending scheduled deployment exists for this policy group |
P-040 | 400 | Versions without an effective start date cannot be scheduled. Publish a version with an effective start date, or deploy immediately |
P-041 | 400 | The effective start date has already passed. Deploy immediately instead |
P-042 | 400 | The test version cannot serve traffic. It must be ACTIVE and its effective window must include the current time |
P-043 | 409 | A pending scheduled deployment references this version. Cancel the schedule before deleting |
P-044 | 400 | No active A/B test on this policy group |
P-045 | 400 | Test version must differ from the current live version |
P-046 | 400 | Invalid condition field name. Use letters, numbers, and underscores only, and do not start with a number |
P-047 | 400 | Condition value does not match the declared value type |
P-048 | 400 | Operator ‘{1}’ cannot be used with fact ‘{0}’ of type {2} |
P-049 | 400 | Logical operator (AND/OR) is required for GROUP conditions |
P-050 | 400 | Fact ‘{0}’ has a numeric value that cannot be represented. NaN and Infinity are not accepted |
P-051 | 400 | Condition value is outside the declared domain of fact ‘{0}’: {1} |
Idempotency (I)
| Code | HTTP | Description |
|---|---|---|
I-001 | 409 | Duplicate request — already processed |
I-002 | 409 | Request is currently being processed. Please try again later |
I-003 | 400 | Idempotency-Key must be {0} characters or fewer |
System / Crypto (S)
| Code | HTTP | Description |
|---|---|---|
S-001 | 500 | System encryption error. Please contact support |
S-002 | 500 | System decryption error. Please contact support |
Billing (B)
| Code | HTTP | Description |
|---|---|---|
B-001 | 404 | Service plan not found |
B-002 | 404 | Subscription not found |
B-003 | 409 | Active subscription already exists |
B-005 | 404 | Invoice not found |
B-006 | 500 | No payment processor available for the requested currency |
B-007 | 502 | Payment processing failed. (Insufficient funds or invalid card details) |
B-008 | 403 | Service quota exceeded. Please upgrade your plan or wait until the next billing cycle |
B-009 | 400 | Free plan cannot be canceled |
B-010 | 400 | No payment method on file. Register a payment method and try again |
B-011 | 400 | No billing profile configured. Set up your billing profile and try again |
B-012 | 400 | This invoice has already been paid |
B-013 | 400 | You are already subscribed to this plan |
B-014 | 400 | Changing plans between different currencies is not supported |
B-015 | 400 | To switch to the Free plan, please cancel your current subscription |
B-016 | 409 | Cannot delete a plan while subscriptions reference it. Referencing subscriptions: {0} |
B-017 | 400 | Currency cannot be changed while subscribed to a paid plan. Please cancel your subscription first |
B-018 | 400 | No scheduled downgrade to cancel |
B-019 | 409 | A public plan with tier {0} already exists for {1}. Only one public plan per tier and currency is allowed |
B-020 | 400 | Invalid currency code |
B-021 | 400 | The payment setup reference is invalid or expired. Please retry the card registration |
B-022 | 400 | Webhook signature verification failed |
Member & Account (M)
| Code | HTTP | Description |
|---|---|---|
M-001 | 404 | Member not found |
M-002 | 403 | Email verification is required. Please check your inbox |
M-003 | 403 | Your account has been suspended. Please contact support |
M-004 | 403 | This account has been withdrawn |
M-005 | 400 | Invalid or expired verification code |
M-007 | 400 | Invitation has expired. Please request a new invitation |
M-009 | 400 | You cannot perform this action on yourself |
M-010 | 400 | Cannot remove or demote the last admin |
M-011 | 409 | This phone number is already registered |
M-012 | 403 | Your account has been suspended: {0} |
M-013 | 400 | The Admin role cannot be assigned via invitation |
M-014 | 409 | Your previous subscription is being finalized. Please try again in a few minutes |
M-015 | 400 | This role cannot be assigned to a member |
Analytics & Simulation (AN)
| Code | HTTP | Description |
|---|---|---|
AN-001 | 500 | Simulation processing failed |
AN-004 | 400 | Dataset contains no records. Please check the date range or source file |
AN-006 | 400 | This dataset source is not supported for the selected type |
AN-008 | 400 | Invalid baseline version. It must belong to the same policy group |
AN-009 | 404 | Simulation not found. Please check the ID |
AN-011 | 400 | Only completed simulations can be exported |
AN-012 | 500 | Failed to generate export file. Please try again later |
AN-013 | 404 | Uploaded dataset file not found in storage |
AN-014 | 400 | Failed to parse dataset file. Check format (JSON array or CSV with header) |
AN-016 | 400 | Required fact missing: ‘{0}’ |
AN-017 | 400 | Type mismatch for ‘{0}’: expected {1}, got {2} |
AN-018 | 400 | Date range (from/to) is required for HISTORICAL datasets |
AN-019 | 400 | File path is required for UPLOADED datasets |
AN-020 | 400 | The selected file is empty. Please choose a valid file |
AN-021 | 400 | File size exceeds the limit of {0}MB. Please reduce the size and try again |
AN-022 | 400 | Unsupported file type. Only CSV and JSON files are allowed |
AN-023 | 400 | Unsupported export format: {0}. Use csv or json |
AN-024 | 404 | Execution history not found for the given trace ID |
AN-025 | 404 | Replay job not found |
AN-026 | 404 | Execution trace not found for the given trace ID |
AN-027 | 400 | Only PII-designated facts can be revealed |
AN-028 | 409 | A version with execution history cannot be deleted. It is permanently retained for decision verifiability |
AN-029 | 500 | Failed to persist the decision record. Please retry |
AN-030 | 400 | Export range is too large. Specify a period of {0} days or less, and narrow it so the result stays under {1} rows |
AN-031 | 400 | Only completed replay jobs can be exported |
AN-032 | 400 | Unsupported export format: {0}. Use csv or json |
AN-033 | 404 | Export job not found |
AN-034 | 400 | Only completed export jobs can be downloaded |
AN-035 | 410 | The export file is no longer available. Files are kept for {0} days. Request the export again |
AN-036 | 400 | Composite executions cannot be replayed against a single policy version |
AN-037 | 400 | The candidate version must belong to the same policy group as the original execution |
Action & Calculation (ACT)
| Code | HTTP | Description |
|---|---|---|
ACT-001 | 400 | Action parameters are empty |
ACT-003 | 400 | Invalid calculation method. Allowed values: PERCENTAGE, AMOUNT |
ACT-005 | 400 | Value parameter is required for AMOUNT method |
ACT-006 | 400 | Invalid action type. (Input: {0}) |
ACT-016 | 400 | targetVar is required for this action |
ACT-017 | 400 | Rounding option must be an object |
ACT-018 | 400 | Rounding scale must be an integer |
ACT-019 | 400 | Rounding scale must be in range [0, {0}] |
ACT-020 | 400 | Invalid rounding mode: {0} |
ACT-021 | 400 | Operator is required for MUTATE_FACT action |
ACT-022 | 400 | Invalid operator: {0} |
ACT-023 | 400 | Invalid operator-method combination: {0} |
ACT-024 | 400 | Division by zero is not allowed |
ACT-025 | 400 | refVar ‘{0}’ not found in input facts |
ACT-026 | 400 | targetVar ‘{0}’ not found in input facts |
ACT-029 | 500 | No executor registered for action type: {0} |
ACT-030 | 400 | An arithmetic operand is required |
ACT-031 | 400 | refVar is not applicable for this operator/method combination: {0} |
Fact Definition (FD)
| Code | HTTP | Description |
|---|---|---|
FD-001 | 409 | Fact definition key already exists |
FD-002 | 404 | Fact definition not found |
FD-003 | 403 | System facts cannot be modified or deleted |
FD-005 | 400 | This key is reserved for system use |
FD-006 | 409 | Cannot delete a fact definition while rules reference it. Referencing rules: {0} |
FD-007 | 409 | Cannot change the type of a fact definition while rules reference it. Referencing rules: {0}. Remove the references first, or create a new fact |
FD-008 | 400 | Unsupported export format: {0}. Use csv or json |
FD-009 | 409 | Fact definitions cannot exceed {0} |
FD-010 | 400 | Value domain does not match fact type {0} |
FD-011 | 400 | Value domain min cannot be greater than max |
FD-012 | 400 | allowedValues cannot be empty or contain null. Omit the field to remove the constraint |
FD-013 | 400 | allowedValues contains a duplicate: {0} |
FD-014 | 400 | allowedValues cannot exceed {0}. Beyond that you are modelling identifiers, not categories |
FD-015 | 400 | allowedValues contains a value outside min/max. Declared together, they would admit nothing |
Failure Log (FL)
| Code | HTTP | Description |
|---|---|---|
FL-001 | 404 | Failure log not found |
FL-002 | 400 | This action cannot be performed on the failure log in its current state |
Webhook Subscription (WH)
| Code | HTTP | Description |
|---|---|---|
WH-001 | 404 | Webhook subscription not found |
WH-002 | 409 | A webhook subscription with this name already exists |
WH-003 | 502 | Webhook test delivery failed. Please check the URL and try again |
WH-004 | 400 | Invalid webhook URL: {0}. Only http and https URLs are allowed |
WH-005 | 400 | This webhook URL is not allowed. The host {0} resolves to a private or internal address |

