validation_error | 400 / 422 | A check the API runs itself rejected the request — pack validation, or an unsupported billing tier. Schema-level failures return the detail shape above instead. |
invalid_yaml | 422 | The pack YAML could not be parsed, or parsed to something that is not a mapping. |
too_many_metrics | 422 | The pack declares more than 7 metrics, which is the ceiling for a single pack. |
unknown_entity_type | 422 | No pack has ever been published for that entity_type, so there is nothing to extract against. |
no_active_pack_for_type | 422 | A pack exists for that entity type but none is currently active. |
missing_required_fields | 422 | The entity is missing a field the pack declares under required_fields. |
invalid_api_key | 401 | The key is missing, malformed, revoked, or expired. Also returned when the Authorization header is absent. |
insufficient_scopes | 403 | The key is valid but lacks the scope this endpoint requires. Also returned when creating a key that asks for scopes the creating key does not itself hold. |
entity_archived | 403 | The entity is archived and no longer accepts signals. |
entity_type_locked | 403 | The entity already exists with a different entity_type. An entity’s type cannot be changed after creation. |
cannot_delete_self | 403 | A key cannot revoke itself. Create a replacement, then revoke with the new key. |
tier_limit_exceeded | 402 | The free-tier ceiling for signals, entities, or packs is full. Upgrade to continue. Uses the flat shape shown above, not the envelope. |
entity_not_found | 404 | No entity with that ID in your tenant. Create it before sending signals. |
signal_not_found | 404 | No signal with that ID. |
pack_not_found | 404 | No pack with that key. |
metric_not_found | 404 | The entity has no value recorded for that metric key — or has one you are not allowed to read. See the note below the table. |
api_key_not_found | 404 | No key with that id on your account. |
pack_already_exists | 409 | A pack with that key already exists. Use PUT to update it. |
entity_type_already_active | 409 | Another pack is already active for that entity type. Update it instead of creating a second. |
rate_limit_exceeded | 429 | Too many requests this minute. Retry-After tells you how long to wait. |
internal_error | 500 | Something failed on our side. Safe to retry. |
byo_key_unavailable | 501 | This deployment has bring-your-own-key storage disabled, so tenant provider keys cannot be read or written. |
llm_auth_failed | 502 | The configured model provider rejected our credentials. Check the provider key on your account. |
llm_quota_exhausted | 502 | The configured model provider reports the account is out of credit or quota. |
llm_unavailable | 502 | The configured model provider returned an error we cannot classify. Safe to retry. |
llm_rate_limited | 503 | The configured model provider is rate limiting us. Retry with backoff. |
ai_service_unavailable | 503 | The pack wizard could not reach a model provider. Retry shortly. |
service_unavailable | 503 | The API could not reach its own database while authenticating the request. Retry shortly. |