model_not_in_plan
The message text is shown in the example below.
⚠️
Preview — this feature is being built; the design below is the spec. In the public error catalog on develop; not returned in production yet.
| HTTP status | 403 |
type | permission_error |
| Retry? | No, not unchanged |
| Status | Not live / provisional |
| Extra fields | upgrade_url |
When it happens
The model exists but the organization’s plan level is below the model’s minimum. Not live yet; production still answers with the default model and an x-syntic-model-downgraded header.
Example
{
"error": {
"type": "permission_error",
"code": "model_not_in_plan",
"message": "Your plan does not include this model. List the models your key can use with GET /v1/models.",
"param": null,
"request_id": "req_6f1c2a9e0b7d4c3a8e5f1b2d",
"upgrade_url": "https://syntic.ai/pricing"
}
}How to fix it
- Pick a model that
GET /v1/modelsreturns for your key. - Or upgrade to a plan that includes it.
Detect it in code
err = resp.json().get("error", {})
if resp.status_code == 403 and err.get("code") == "model_not_in_plan":
log.warning("%s (%s)", err["message"], err["request_id"]) # fix the request; do not retry unchangedRelated
Was this page helpful?