Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.letmepost.dev/llms.txt

Use this file to discover all available pages before exploring further.

The request was syntactically valid but failed a platform-specific rule we check locally before the upstream call. This is the canonical “we caught it before the platform did” error.

What triggers it

Anything in the preflight rule catalog. A few high-frequency examples:

Response shape

preflight_failed.json
{
  "error": {
    "code": "preflight_failed",
    "message": "Post text is 312 graphemes; Bluesky allows at most 300.",
    "rule": "bluesky.text.max_graphemes",
    "platform": "bluesky",
    "remediation": "Shorten the post to 300 graphemes or fewer.",
    "requestId": "req_..."
  }
}
rule is always set on preflight_failed. Look it up at /docs/preflight/<rule-with-dashes>/ for the full explainer + the upstream platform doc the constraint derives from.

Why preflight matters

Without preflight you’d see this same constraint failure as an opaque platform response — a generic IG code 100, a LinkedIn 422 with no field path, a Threads HTTP 200 carrying a status code in the body. Preflight surfaces the rule id directly, with a remediation, before the upstream call ever happens.

Remediation

Open the rule’s page and follow the remediation. Every preflight rule has one.
  • Preflight — the full rule catalog.
  • platform_rejected — preflight passed but the platform still rejected. We treat this as a preflight gap and add a rule.