Update a flow
PATCH/v1/flows/:flow_id
Changes the flow's settings: name, description, confirmation message, visibility and notify contacts. Omitted keys keep their value. Ownership, status and versions are never writable here, and the record action has its own endpoint. Making a private flow public claims its keywords across Hop; 409 code_conflict when one is already taken. It also opens the flow to anyone: a public flow accepts a submission from any phone number that texts its keyword and creates the contact on first use, where a private flow accepts only contacts your organisation already has. Requires the flows:write scope.
Request
Responses
- 200
- 400
- 401
- 403
- 404
- 409
- 415
- 422
- 429
The flow, as GET /v1/flows/{flow_id} now serves it.
A malformed flow_id (code: invalid_parameter), or an unrecognised query parameter (code: unknown_parameter).
Missing, malformed, unknown, revoked, or expired key — one body for all of them (code: unauthorized), with WWW-Authenticate: Bearer realm="hop".
The key lacks the scope (code: insufficient_scope), named in WWW-Authenticate: Bearer error="insufficient_scope", scope="…".
No such flow — nonexistent, or another organisation's.
code: code_conflict — making this flow public would claim a keyword another organisation already holds publicly. Nothing in the request was applied.
code: unsupported_media_type — the body was not application/json.
code: validation_failed — an unknown key, a name another flow in your organisation already has, or a notify contact that is not yours.
Over a bucket. Obey Retry-After (seconds); RateLimit-* fields are informational.
Response Headers
Requests allowed in the current window. Informational.
Requests left in the current window. Informational.
Seconds until the window resets. Informational.
Seconds to wait before retrying. The binding contract.