notiflowsDocs
Topics

Subscribe users to topic (bulk)

Subscribe multiple users to a topic in a single request.

  • Topics are created automatically if they don't exist.
  • If a user is already subscribed, they are included in the successful response.
  • Returns 207 Multi-Status if some subscriptions failed.
POST
/topics/{topic_id}/subscriptions

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

topic_id*string

Topic name

Request Body

application/json

User IDs to subscribe

user_external_ids*array<>

List of user external IDs to subscribe/unsubscribe

Items1 <= items

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://api.notiflows.com/admin/topics/order-updates/subscriptions" \  -H "Content-Type: application/json" \  -d '{    "user_external_ids": [      "user_12345",      "user_67890",      "user_11111"    ]  }'
{
  "failed": [
    {
      "external_id": "nonexistent_user",
      "reason": "User not found"
    }
  ],
  "successful": [
    {
      "created_at": "2024-01-15T10:30:00Z",
      "id": "01HQ...",
      "topic_name": "order-updates",
      "user_id": "01HQ..."
    }
  ]
}
{
  "failed": [
    {
      "external_id": "nonexistent_user",
      "reason": "User not found"
    }
  ],
  "successful": [
    {
      "created_at": "2024-01-15T10:30:00Z",
      "id": "01HQ...",
      "topic_name": "order-updates",
      "user_id": "01HQ..."
    }
  ]
}
{
  "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"
  }
}