Problem types (RFC 9457)¶
Every error response uses the RFC 9457 problem details format with
Content-Type: application/problem+json:
| Member | Meaning |
|---|---|
type |
Canonical URI of the problem type. Resolves to the anchor on this page. |
title |
Stable short human-readable name of the type. |
status |
HTTP status code; always identical to the response's real status. |
detail |
Occurrence-specific explanation, intended for the client. |
code |
Short machine-readable slug; identical to the fragment (after #) of type. |
details |
Optional extension with additional structured data (e.g. validation errors). |
Clients should dispatch on code (or the type URI); detail is for
humans and must not be parsed.
Invalid Proof-of-Work response¶
type:https://curious-r.github.io/cumments/problems/#invalid-powcode:invalid-powstatus:403
The challenge_response did not satisfy the current PoW challenge. Fetch a
fresh challenge from /api/v1/challenge, solve it, and resubmit. A failed
PoW does not consume an Idempotency-Key.
Invalid author signature¶
type:https://curious-r.github.io/cumments/problems/#invalid-signaturecode:invalid-signaturestatus:403
The Ed25519 author_signature does not verify over the canonical message.
Sign the exact message documented for the operation and retry with the same
Idempotency-Key if this was a retry.
Input validation failed¶
type:https://curious-r.github.io/cumments/problems/#validation-errorcode:validation-errorstatus:400
One or more request fields failed validation. The details member carries
the per-field errors; correct them and resubmit.
Resource not found¶
type:https://curious-r.github.io/cumments/problems/#not-foundcode:not-foundstatus:404
The route does not exist or the referenced resource (site, page, comment, verification) is not visible to this request.
Unauthorized¶
type:https://curious-r.github.io/cumments/problems/#unauthorizedcode:unauthorizedstatus:403
The presented author public key is not allowed to perform the operation (e.g. editing or deleting a comment owned by another key).
Comment not manageable¶
type:https://curious-r.github.io/cumments/problems/#not-manageablecode:not-manageablestatus:403
The target comment was posted by a Matrix user; manage it from a Matrix client instead of the HTTP API.
Method not allowed¶
type:https://curious-r.github.io/cumments/problems/#method-not-allowedcode:method-not-allowedstatus:405
The HTTP method is not supported on this route. Comment reads use QUERY,
writes use POST/PUT/PATCH/DELETE.
Bad request¶
type:https://curious-r.github.io/cumments/problems/#bad-requestcode:bad-requeststatus:400
The request is malformed or semantically invalid (bad JSON, missing
required field, invalid origin, etc.). The detail member explains the
specific problem.
Conflict¶
type:https://curious-r.github.io/cumments/problems/#conflictcode:conflictstatus:409
The request conflicts with the current state of the resource.
Rate limit exceeded¶
type:https://curious-r.github.io/cumments/problems/#rate-limitedcode:rate-limitedstatus:429
The per-client budget for this operation is exhausted. Wait and retry later;
do not keep retrying with the same Idempotency-Key expecting acceptance.
The response carries a Retry-After header set to the endpoint's fixed
window (3600 seconds for hourly limits, 60 seconds for the Operator API).
Idempotency-Key required¶
type:https://curious-r.github.io/cumments/problems/#idempotency-key-requiredcode:idempotency-key-requiredstatus:400
The Idempotency-Key header is mandatory on POST, PUT, PATCH, DELETE
and visitor media upload write submissions.
Invalid Idempotency-Key¶
type:https://curious-r.github.io/cumments/problems/#invalid-idempotency-keycode:invalid-idempotency-keystatus:400
The Idempotency-Key value must be 8-255 printable ASCII characters.
Idempotency-Key reused¶
type:https://curious-r.github.io/cumments/problems/#idempotency-key-reusedcode:idempotency-key-reusedstatus:409
The Idempotency-Key was already bound to a different request fingerprint
(METHOD\npath\nsha256(body)). Use a fresh key for a different request, or
replay the exact original request.
Site verification required¶
type:https://curious-r.github.io/cumments/problems/#site-verification-requiredcode:site-verification-requiredstatus:403
The site is not verified and the global policy requires verification before accepting writes. Complete the verification flow for the site first.
Site not registered¶
type:https://curious-r.github.io/cumments/problems/#site-not-registeredcode:site-not-registeredstatus:404
The site_id does not exist in the registry: it is neither registered
through the site API/CLI nor declared in the [sites] configuration.
Register it first with POST /api/v1/sites (or cumments sites register);
unregistered sites can never create a Matrix Space, regardless of the
verification policy.
Site retired¶
type:https://curious-r.github.io/cumments/problems/#site-retiredcode:site-retiredstatus:410
The site is being retired and no longer accepts writes. A background pass is retiring its Matrix Space and rooms and clearing the local projections; reads keep working until the local data is gone.
Site origin denied¶
type:https://curious-r.github.io/cumments/problems/#site-origin-deniedcode:site-origin-deniedstatus:403
The request Origin is not allowed for this site (opaque null origins are
rejected outside disabled mode). Serve the page from an allowed origin or
use the site backend signature flow.
Site signature invalid¶
type:https://curious-r.github.io/cumments/problems/#site-signature-invalidcode:site-signature-invalidstatus:403
The X-Cumments-Timestamp/X-Cumments-Signature HMAC proof is missing,
stale, or does not match the request.
Internal server error¶
type:https://curious-r.github.io/cumments/problems/#internal-errorcode:internal-errorstatus:500
The server failed unexpectedly. The detail is intentionally generic; check server logs for the real cause.