Skip to main content
Every error from /v1 has the same shape:
A call that answers an error charges nothing. After outcome_unknown, send the same request with the same Idempotency-Key to see whether a job started.

Codes

invalid_input

The request does not match the model’s input. param names the field, such as input.duration, and message says what it takes. Read the model’s inputSchema with GET /v1/models/{id}. A missing Idempotency-Key header on POST /v1/jobs also answers this, and so does an expired quoteId (param is quoteId): estimate again.

moved

The name you sent was replaced. message names the new one.

not_signed_in

No token, or the token expired or its app was revoked. A token lasts one hour: get a new one with summer token and send the request again. With no sign-in on this computer, or after the person revoked the app, run summer login first.

no_credits

The account’s paid credits cannot cover this job, next to the jobs it already holds a price for. Nothing ran and nothing was charged. fix_url opens the page where the person adds credits; show them message. Check what this app can spend with GET /v1/balance. A refused batch also has details: fits, jobs, totalUsd and shortUsd.

over_limit

The app reached the spend limit the person set for it. Nothing ran and nothing was charged. Show the person message: fix_url opens Settings > Connected agents & apps, where they raise it. Or wait until resets_at from GET /v1/key. Do not ask for a top-up: the balance is not the problem. A refused batch also has details, as for no_credits.

forbidden

This app or account may not do this.

limit_raise_needs_person

PATCH /v1/key asked for a higher limit, no limit, or a reset that comes sooner. An app may only lower its own limit. The person raises it in Settings > Connected agents & apps.

not_found

No such model, job or route. Model ids come from GET /v1/models. Job ids are sent as they are, colon included.

conflict

The price went up since your quoteId. Nothing was charged. Ask POST /v1/estimate again and start the job with the new quote.

idempotency_conflict

This Idempotency-Key was already used for a different request. Use a new key for a new job.

in_progress

A request with this Idempotency-Key is still running. Wait a moment and send the same request again: you get its answer.

unsupported

This job does not support that action, such as cancelling a Summer API job: it runs to the end.

rate_limited

Paid Summer API work has no rate limits: a job past your running slots answers 202 queued instead. If a call ever answers 429, wait the seconds in the Retry-After header, then send the same request with the same Idempotency-Key.

internal

Something broke on Summer’s side. Retry once with the same Idempotency-Key. If it fails again, send request_id to Summer support.

outcome_unknown

Summer could not tell whether the work started. Do not start a new job: send the same request with the same Idempotency-Key, which returns the first job if there was one.

unavailable

A model or a Summer service is down for a moment. Nothing was charged. Retry with backoff, or pick another model for the same job from the models page.