Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.kaireonai.com/llms.txt

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

Flow routes define which decision flow should be executed for a given channel and placement combination. When a Recommend API call is made, the platform uses flow routes to determine the appropriate decision flow based on the request’s channel and placement context.
See the Decision Flows feature page for details on how flow routes integrate with the decisioning pipeline.

Base path

/api/v1/flow-routes

List flow routes

GET /api/v1/flow-routes
Returns all flow routes for the current tenant, ordered by priority (highest first), then creation date (newest first). Each route is enriched with the associated decision flow’s name and key.

Response 200

[
  {
    "id": "fr_001",
    "tenantId": "t_001",
    "channelId": "ch_email",
    "placementId": null,
    "decisionFlowId": "df_001",
    "priority": 10,
    "createdAt": "2026-03-10T12:00:00.000Z",
    "updatedAt": "2026-03-12T09:30:00.000Z",
    "decisionFlow": {
      "id": "df_001",
      "name": "Email NBA Pipeline",
      "key": "email-nba"
    }
  }
]

Create a flow route

POST /api/v1/flow-routes
Creates or updates a flow route (upsert). The unique key is the combination of tenantId, channelId, and placementId. If a route with the same channel/placement pair exists, it is updated.

Request body

FieldRequiredTypeDescription
decisionFlowIdYesstringThe decision flow to route to.
channelIdNostring | nullChannel ID to match. null matches any channel. Default null.
placementIdNostring | nullPlacement ID to match. null matches any placement. Default null.
priorityNointeger (>= 0)Route priority (higher = evaluated first). Default 0.
Setting both channelId and placementId to null creates a catch-all route that matches any request without a more specific route.

Example request

{
  "decisionFlowId": "df_001",
  "channelId": "ch_email",
  "placementId": null,
  "priority": 10
}

Response 201

Returns the created or updated flow route object.

Error codes

CodeReason
400Validation error (missing decisionFlowId).
415Content-Type is not application/json.

Update a flow route

PUT /api/v1/flow-routes
Updates an existing flow route by ID. Only provided fields are changed.

Request body

FieldRequiredTypeDescription
idYesstringThe flow route ID to update.
decisionFlowIdNostringUpdated decision flow ID.
priorityNointeger (>= 0)Updated priority.

Response 200

Returns the updated flow route object.

Error codes

CodeReason
400Validation error.

Delete a flow route

DELETE /api/v1/flow-routes?id={routeId}
Deletes a flow route by ID.

Query parameters

ParameterRequiredTypeDescription
idYesstringFlow route ID to delete.

Response 200

{
  "success": true,
  "cascaded": 0
}
FieldTypeDescription
successbooleanAlways true on success
cascadedintegerNumber of related entities soft-deleted via cascade
This endpoint uses soft-delete. The record is marked as deleted but retained in the database.

Error codes

CodeReason
400Missing id query parameter, or soft-delete failed.

Role requirements

MethodMinimum role
GETviewer
POSTeditor
PUTeditor
DELETEadmin