Meet the new Scripe, live on October 7.Register

API v1 · 4xx

unprocessable

HTTPWhen
422The request was syntactically valid JSON but semantically rejected.

400 invalid_request and 422 unprocessable carve up the validation space:

  • invalid_request — the request shape is wrong (missing required fields, malformed JSON, wrong types).
  • unprocessable — the request shape is fine but the values don't satisfy a business rule (an enum is out of range, a referenced row doesn't exist for this workspace, a date is in the past, etc.).

You'll see this error for things like:

  • POST /v1/posts with scheduledFor set to a timestamp in the past.
  • POST /v1/sources with type !== "text" (until file ingest ships).
  • contentType set to a string outside the supported enum.

Recovery

  1. Read the error message — for unprocessable we surface the human reason (which field failed, what the constraint is).
  2. Fix the value client-side and retry. The same Idempotency-Key can be reused only if the fixed body still hashes the same — which it almost never does, so generate a fresh key.

There is no general retry policy that helps here. The server will return the same error every time the underlying value violates the rule.