Reference

flow_invalid

A conversation flow failed validation and was not saved.

422HTTP 422 · Flow Invalid

What it means

A conversation flow failed validation and was not saved.

Do not retry

The identical request will fail the same way every time. Change it first.

What causes it

  • A node references a step that does not exist.
  • The graph has a cycle, or an unreachable branch.
  • A required field on a node is absent.

How to fix it

  • Read `details` — every problem is reported at once, not one per save. A fifteen-node flow would otherwise be fifteen round trips.
  • Fix them together and resubmit.

The details object

This code carries a details object with more than the message can say:

`{ problems: [...] }` — every validation failure in the flow, as sentences.

What the response looks like

422 application/problem+json
{
  "error": {
    "code": "flow_invalid",
    "message": "A conversation flow failed validation and was not saved",
    "details": { ... },
    "request_id": "7cb7f7862a82425d8e4c3fb8a497dfe6"
  },
  "type": "https://integrable.cloud/docs/errors/flow_invalid",
  "title": "Flow Invalid",
  "status": 422,
  "detail": "A conversation flow failed validation and was not saved",
  "instance": "/api/bots/01a0652b-3713-7ea1-a6c9-2e895389ec34"
}

Branch on error.code, not on the message — the code is stable, the sentence is not. Log request_id either way.

Still stuck

Quote the request_id from the response — hello@integrable.cloud. It is what lets us find the exact request. The full list of codes is at Error codes, and the conventions every endpoint shares are in Retries, versioning and limits.

Something here wrong or missing? Tell us — the documentation and the API are maintained by the same person, so a correction is a fix rather than a ticket.

Building on it? Start on the free plan — no card — and call the same API the dashboard uses.

Start free