neosourceDocs
Search docs

Report a failed render or purge

POST/api/prerender/fail

failPrerenderSnapshot

Releases the lease immediately, records `error` on the row, and gates the retry behind exponential backoff (30 s doubling to a 1 h ceiling). The path stays queued — a failure says nothing about whether it is still dirty. Like `complete`, this is conditional on `dirty_seq`: a report from an expired lease is ignored rather than allowed to back off a row it no longer owns. Authenticates with the prerender worker token.

Requires authentication using a bearer token — see tokens and scopes.

curl

curl -X POST 'https://neosource.dev/api/prerender/fail' \
  -H 'Authorization: Bearer $NEOSOURCE_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{"snapshot_path":"string","dirty_seq":0,"error":"string"}'

fetch

fetch("https://neosource.dev/api/prerender/fail", {
  method: "POST",
  headers: {
    Authorization: "Bearer $NEOSOURCE_TOKEN",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({"snapshot_path":"string","dirty_seq":0,"error":"string"}),
});

Request bodyrequired

application/json

FailSnapshotRequest

object

Report a render/purge attempt that failed. Releases the lease immediately and gates the retry behind exponential backoff.

dirty_seqrequired

integerint64

Carried for symmetry with `complete` and for server-side logging. The failure path is deliberately NOT conditional on it: a failed attempt says nothing about whether the path is still dirty — it is, by definition, still dirty.

errorrequired

string

Human-readable failure, stored on the row as `last_error`.

snapshot_pathrequired

string

Responses

204Failure recorded

Standard errors

Bodies documented once for the whole API — see standard errors.

  • 400Bad Request — one of: invalid_input
  • 401Authentication required
  • 429Rate limited — retry after the `Retry-After` header
  • 500Internal server error
  • 503Service temporarily unavailable / at capacity — retry after the `Retry-After` header
  • 504Gateway timeout — the request exceeded the server's handling budget