Skip to content

Credit conflict

FieldValue
Type URIhttps://echo.labstack.com/pro/problems/credit-conflict
Codecredit_conflict
HTTP status409
HTTP statusEnglish title
409Credit ID was already used with a different amount

A credit was submitted with a credit ID that was already used with a different amount. Quota checks the ID atomically before it changes the balance, so this request applied nothing.

To retry the original credit, resend it with the same ID and the original amount. Use a new ID for a new credit.

If your application installs a custom handler, the body may differ.

HTTP/1.1 409 Conflict
Content-Type: application/problem+json
Cache-Control: no-store
{
"code": "credit_conflict",
"status": 409,
"title": "Credit ID was already used with a different amount",
"type": "https://echo.labstack.com/pro/problems/credit-conflict",
"violated-policies": [
"requests"
]
}

Check the original credit operation’s ID and amount. If its outcome is unknown, do not retry under a new ID.

  • code (string, always): The stable code above.
  • type (string, always): The exact type URI above.
  • title (string, always): English title. Quota administration routes use their own titles for some codes.
  • status (integer, always): The HTTP status of the response.
  • detail (string, optional): Human-readable explanation, omitted when empty. Its wording is not a stable format.
  • violated-policies (array, always): IDs of the limits involved: [] when there are none, never null.

Headers:

  • Cache-Control (always): no-store on every administration response.

Notes:

  • Returned by POST /credits.
  • code (string, always): The stable code above.
  • detail (string, always): The console always sends detail. It is often empty and never contains the underlying error.
  • status (integer, always): The HTTP status of the response.
  • title (string, always): The HTTP status text, such as Conflict, unless the panel supplies its own title.
  • type (string, always): The exact type URI above.

Headers:

  • Cache-Control (always): no-store. The console sends it on every problem response, along with its usual security headers.

Notes:

  • Fields are written in alphabetical order.
  • The console rewrites every 404 response to admin_not_found with an empty detail.
  • The console renders this problem in its own format when a panel returns it as an admin.ProblemError outside an action commit. Its title is Conflict unless the panel supplies one.
  • When a credit action conflicts at commit, the console does not return a problem. It returns an application/json action result with audit.code set to credit_conflict and outcome refused.

See quota for plans, credit adjustments and usage.