code field for programmatic error handling. The error message may change between API versions, but code values are stable.
Authentication Errors
Errors related to API keys, bootstrap keys, certificates, and credentials.UNAUTHORIZED
UNAUTHORIZED
FORBIDDEN
FORBIDDEN
HTTP Status:
403Description: The credentials are valid but do not have permission to perform the requested operation.Common Causes:- API key does not have access to the requested instance
- Attempting to access another client’s resources
- Attempting an admin operation with a read-only key
- Verify the API key has the correct permissions in the Dashboard
- Check that the instance belongs to the same client as the API key
- Use an admin-level API key for management operations
BOOTSTRAP_KEY_INVALID
BOOTSTRAP_KEY_INVALID
HTTP Status:
401Description: The provided bootstrap key is not valid. It may have been revoked, does not exist, or does not match the stored hash.Common Causes:- Typographical error in the bootstrap key
- Key was revoked via the Dashboard or API
- Key was generated for a different instance
- Generate a new bootstrap key from the Dashboard
- Ensure the key matches the target instance
- Check that the key has not been revoked in the webhook logs
BOOTSTRAP_KEY_EXPIRED
BOOTSTRAP_KEY_EXPIRED
HTTP Status:
401Description: The bootstrap key has expired. Bootstrap keys are valid for 24 hours after generation.Common Causes:- Key was generated more than 24 hours ago
- Clock skew between the client and Synap servers
- Generate a new bootstrap key
- Use the key promptly after generation
BOOTSTRAP_KEY_CONSUMED
BOOTSTRAP_KEY_CONSUMED
HTTP Status:
401Description: The bootstrap key has already been used. Bootstrap keys are single-use.Common Causes:- The SDK already bootstrapped successfully with this key
- Another process or deployment used the key first
- If the original bootstrap succeeded, no action is needed — the SDK has its certificate
- If the original bootstrap failed, generate a new bootstrap key
CERTIFICATE_EXPIRED
CERTIFICATE_EXPIRED
HTTP Status:
401Description: The mTLS client certificate has expired. Certificates are valid for 7 days with a 48-hour grace period.Common Causes:- The SDK was offline for more than 7 days and missed automatic rotation
- Certificate rotation was disabled or failed silently
- Restart the SDK to trigger automatic certificate renewal
- If within the 48-hour grace period, the SDK will renew automatically
- If beyond the grace period, a new bootstrap key is required
CREDENTIAL_INVALID
CREDENTIAL_INVALID
HTTP Status:
401Description: The provided credential (API key or certificate) is structurally valid but does not match any known credential in the system.Common Causes:- API key was rotated and the old key is being used
- Certificate was issued by an untrusted CA
- Credential binding mismatch (certificate bound to a different instance)
- Check for recent credential rotation events in the audit log
- Verify the SDK is using the correct certificate for the target instance
- Contact support with the correlation ID if the issue persists
Input Validation Errors
Errors caused by invalid request parameters, missing required fields, or malformed data.INVALID_INPUT
INVALID_INPUT
HTTP Status:
400Description: One or more request parameters are invalid, missing, or malformed.Common Causes:- Missing required field in the request body
- Field value is the wrong type (e.g., string instead of integer)
- Field value is out of the allowed range
- Invalid enum value
- Check the
detailsfield for specific information about which fields are invalid - Refer to the endpoint documentation for required fields and valid values
RATE_LIMITED
RATE_LIMITED
HTTP Status:
429Description: The API key has exceeded its rate limit for the current window.Common Causes:- High-volume ingestion without batching
- Polling loops without backoff
- Multiple processes sharing the same API key
- Implement exponential backoff with jitter
- Use the
Retry-Afterheader to determine when to retry - Use batch endpoints for high-volume operations
- Contact support to increase your rate limit
Resource Not Found Errors
Errors returned when a requested resource does not exist.INSTANCE_NOT_FOUND
INSTANCE_NOT_FOUND
HTTP Status:
404Description: The specified instance does not exist or is not accessible with the current credentials.Common Causes:- Typographical error in the instance ID
- Instance was archived or deleted
- Instance belongs to a different client
- Verify the instance ID format:
inst_<hex16> - List instances via
GET /dashboard/instancesto find valid IDs - Check the Dashboard for archived instances
CONVERSATION_NOT_FOUND
CONVERSATION_NOT_FOUND
HTTP Status:
404Description: The specified conversation does not exist for this instance.Common Causes:- Conversation ID is incorrect
- Conversation was started on a different instance
- Conversation data has been purged due to retention policies
- Verify the conversation ID
- Check that the conversation belongs to the correct instance
- Review retention policies if the conversation may have expired
CONFIG_NOT_FOUND
CONFIG_NOT_FOUND
HTTP Status:
404Description: The specified configuration version does not exist.Common Causes:- Typographical error in the config ID
- Configuration was from a different instance
- Configuration version was superseded and purged
- List configuration versions via
GET /instances/{id}/memory-architecture/versions - Verify the config ID matches the target instance
Configuration Errors
Errors specific to the MACA configuration workflow.CONFIG_CONFLICT
CONFIG_CONFLICT
HTTP Status:
409Description: The requested configuration operation conflicts with the current state.Common Causes:- Attempting to apply a configuration that has not been approved
- Attempting to review a configuration that has already been reviewed
- Concurrent configuration updates creating a race condition
- Check the configuration status before performing operations
- Ensure the configuration has been approved before applying
- Retry with the latest version if a race condition occurred
CONFIG_VALIDATION_ERROR
CONFIG_VALIDATION_ERROR
HTTP Status:
400Description: The submitted configuration failed schema or business validation.Common Causes:- Invalid YAML syntax in the configuration
- Field values outside allowed ranges (e.g., negative embedding dimension)
- Incompatible configuration combinations (e.g., graph queries enabled but graph store disabled)
- Review the
details.validation_errorsarray for specific issues - Refer to the Configuration Schema for valid values
CONFIG_ALREADY_ACTIVE
CONFIG_ALREADY_ACTIVE
HTTP Status:
409Description: The configuration version is already the active configuration for this instance.Common Causes:- Attempting to apply a configuration that is already active
- Race condition where two apply operations executed simultaneously
- Check the current active configuration before applying
- No action needed if the desired config is already active
System Errors
Errors caused by internal system issues or temporary unavailability.INTERNAL_ERROR
INTERNAL_ERROR
HTTP Status:
500Description: An unexpected error occurred on Synap’s side. This is not caused by the request and should be reported if it persists.Common Causes:- Unhandled exception in the processing pipeline
- Database connectivity issue
- Upstream service failure
- Retry the request with exponential backoff
- If the error persists, contact support with the
X-Correlation-Idheader value - Check the status page for known incidents
SERVICE_UNAVAILABLE
SERVICE_UNAVAILABLE
Error Handling Best Practices
Use the code field
Always use the
code field for programmatic error handling, not the error message. Error messages may be localized or reworded.Implement retries
Retry
429, 500, and 503 errors with exponential backoff and jitter. Never retry 400, 401, 403, or 404 errors without changing the request.Log correlation IDs
Log the
X-Correlation-Id from every error response. Include it when contacting support to expedite troubleshooting.Validate locally first
Validate inputs on the client side before sending requests. This reduces unnecessary API calls and provides faster feedback to users.