notiflowsDocs
Notiflows

Trigger a notiflow

Execute a notiflow to send notifications to one or more recipients.

You must provide either recipients (direct targeting) or topic (pub/sub targeting), but not both.

Direct targeting (recipients): Specify exactly which users should receive the notification. Users are identified by their external_id. If a user doesn't exist, they will be created automatically with the provided attributes.

Topic targeting (topic): Send to all users subscribed to the specified topic. Useful for broadcast scenarios.

Template variables: The data object is passed to notification templates. Access variables using Liquid syntax: {{ data.variable_name }}

POST
/notiflows/{notiflow_id}/run

Authorization

ApiKeyAuth SecretKeyAuth
x-notiflows-api-key<token>

Your project's public API key. Found in Project Settings. Starts with pk_.

In: header

x-notiflows-secret-key<token>

Your project's secret key. Found in Project Settings. Starts with sk_. Keep this secret!

In: header

Path Parameters

notiflow_id*string

Notiflow ID (UUID)

Request Body

application/json

Notiflow execution parameters

actor?

The user performing the action (optional). Accessible in templates as actor.*.

data?object

Template variables. Accessible in notification templates as data.*.

recipients?array<>

List of recipients. Each recipient must have an external_id. Users are auto-created if they don't exist.

topic?string

Topic name for pub/sub targeting. Cannot be used with recipients.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://api.notiflows.com/admin/notiflows/01HQXYZ123456789ABCDEFGHIJ/run" \  -H "Content-Type: application/json" \  -d '{    "actor": {      "external_id": "admin_001",      "first_name": "Admin"    },    "data": {      "order_id": "ORD-12345",      "total": "$99.99"    },    "recipients": [      {        "email": "jane@example.com",        "external_id": "user_12345",        "first_name": "Jane"      }    ]  }'
{
  "notiflow_run_id": "01HQXYZ123456789ABCDEFGHIJ"
}
{
  "error": {
    "code": "not_found",
    "details": {
      "allowed_statuses": [
        "string"
      ],
      "allowed_transitions": [
        "string"
      ],
      "auth": "api_key",
      "current_status": "string",
      "fields": [
        {
          "field": "email",
          "message": "can't be blank",
          "reason": "required"
        }
      ],
      "id": "string",
      "idempotency_key": "string",
      "limit": 0,
      "param": "string",
      "reason": "string",
      "required_scope": "string",
      "resource": "string",
      "retry_after": 0,
      "window": "string"
    },
    "message": "User not found",
    "request_id": "req_abc123",
    "status": 404,
    "type": "https://docs.notiflows.com/errors/not_found"
  }
}
{
  "error": {
    "code": "not_found",
    "details": {
      "allowed_statuses": [
        "string"
      ],
      "allowed_transitions": [
        "string"
      ],
      "auth": "api_key",
      "current_status": "string",
      "fields": [
        {
          "field": "email",
          "message": "can't be blank",
          "reason": "required"
        }
      ],
      "id": "string",
      "idempotency_key": "string",
      "limit": 0,
      "param": "string",
      "reason": "string",
      "required_scope": "string",
      "resource": "string",
      "retry_after": 0,
      "window": "string"
    },
    "message": "User not found",
    "request_id": "req_abc123",
    "status": 404,
    "type": "https://docs.notiflows.com/errors/not_found"
  }
}
{
  "error": {
    "code": "not_found",
    "details": {
      "allowed_statuses": [
        "string"
      ],
      "allowed_transitions": [
        "string"
      ],
      "auth": "api_key",
      "current_status": "string",
      "fields": [
        {
          "field": "email",
          "message": "can't be blank",
          "reason": "required"
        }
      ],
      "id": "string",
      "idempotency_key": "string",
      "limit": 0,
      "param": "string",
      "reason": "string",
      "required_scope": "string",
      "resource": "string",
      "retry_after": 0,
      "window": "string"
    },
    "message": "User not found",
    "request_id": "req_abc123",
    "status": 404,
    "type": "https://docs.notiflows.com/errors/not_found"
  }
}
{
  "error": {
    "code": "not_found",
    "details": {
      "allowed_statuses": [
        "string"
      ],
      "allowed_transitions": [
        "string"
      ],
      "auth": "api_key",
      "current_status": "string",
      "fields": [
        {
          "field": "email",
          "message": "can't be blank",
          "reason": "required"
        }
      ],
      "id": "string",
      "idempotency_key": "string",
      "limit": 0,
      "param": "string",
      "reason": "string",
      "required_scope": "string",
      "resource": "string",
      "retry_after": 0,
      "window": "string"
    },
    "message": "User not found",
    "request_id": "req_abc123",
    "status": 404,
    "type": "https://docs.notiflows.com/errors/not_found"
  }
}
{
  "error": {
    "code": "not_found",
    "details": {
      "allowed_statuses": [
        "string"
      ],
      "allowed_transitions": [
        "string"
      ],
      "auth": "api_key",
      "current_status": "string",
      "fields": [
        {
          "field": "email",
          "message": "can't be blank",
          "reason": "required"
        }
      ],
      "id": "string",
      "idempotency_key": "string",
      "limit": 0,
      "param": "string",
      "reason": "string",
      "required_scope": "string",
      "resource": "string",
      "retry_after": 0,
      "window": "string"
    },
    "message": "User not found",
    "request_id": "req_abc123",
    "status": 404,
    "type": "https://docs.notiflows.com/errors/not_found"
  }
}
{
  "error": {
    "code": "not_found",
    "details": {
      "allowed_statuses": [
        "string"
      ],
      "allowed_transitions": [
        "string"
      ],
      "auth": "api_key",
      "current_status": "string",
      "fields": [
        {
          "field": "email",
          "message": "can't be blank",
          "reason": "required"
        }
      ],
      "id": "string",
      "idempotency_key": "string",
      "limit": 0,
      "param": "string",
      "reason": "string",
      "required_scope": "string",
      "resource": "string",
      "retry_after": 0,
      "window": "string"
    },
    "message": "User not found",
    "request_id": "req_abc123",
    "status": 404,
    "type": "https://docs.notiflows.com/errors/not_found"
  }
}
{
  "error": {
    "code": "not_found",
    "details": {
      "allowed_statuses": [
        "string"
      ],
      "allowed_transitions": [
        "string"
      ],
      "auth": "api_key",
      "current_status": "string",
      "fields": [
        {
          "field": "email",
          "message": "can't be blank",
          "reason": "required"
        }
      ],
      "id": "string",
      "idempotency_key": "string",
      "limit": 0,
      "param": "string",
      "reason": "string",
      "required_scope": "string",
      "resource": "string",
      "retry_after": 0,
      "window": "string"
    },
    "message": "User not found",
    "request_id": "req_abc123",
    "status": 404,
    "type": "https://docs.notiflows.com/errors/not_found"
  }
}