How Eterial works
Request dispositions
Reading the outcome of a request in the usage log — what each disposition means and whether it was billed.
Every request ends with one disposition and one reason, and both appear against it in the usage log. Together they answer the two questions you arrive with: what happened, and was I charged for it.
Dispositions
| Disposition | What happened | Billed |
|---|---|---|
succeeded | The request completed normally. | Yes |
partial | A stream started and then ended early. | For what arrived |
failed | No backend could serve it. | No |
hold_rejected | Your balance could not cover the request. | No |
aborted | You disconnected before the request had been charged for. | No |
Reasons
| Reason | What it means |
|---|---|
ok | Nothing went wrong — this is what a succeeded request carries. |
rate_limited | A backend refused on quota grounds. Retry. |
provider_unavailable | Backends were down, timing out, or unreachable. Retry. |
model_unavailable | Nothing could serve this model right now. |
insufficient_balance | Top up. |
request_rejected | The request itself was refused — change it before resending. |
canceled | You went away. |
internal_error | Our fault. Quote the request id when you tell us. |
The success rate in your dashboard
failed and hold_rejected count against it. aborted does not — you ended
that request yourself — and neither does partial, since something was
delivered.
Finding one request
Each row carries a request id. It is the fastest thing to give us when something looks wrong, and it is what ties a charge on your balance to the request that produced it. See the usage log.