> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nudgen.net/llms.txt
> Use this file to discover all available pages before exploring further.

# Trigger a lifetime campaign

> Requires a team API key with campaigns:trigger scope. The key must belong to the campaign workspace. eventId is an idempotency key within this campaign: a duplicate returns the existing execution with HTTP 200. New executions return HTTP 201; suppressed contacts can produce a skipped execution. Limit: 600 requests per window per key, 64 KiB request body, 32 KiB data object, and JSON nesting depth 8.



## OpenAPI

````yaml /openapi.json post /api/v1/campaigns/{id}/triggers
openapi: 3.1.0
info:
  title: Nudgen Developer API
  version: 1.0.0
  description: >-
    REST API for contacts, campaigns, Lifetime triggers, sending domains, brand
    settings, and AI drafts. Most endpoints use a Personal Access Token;
    Lifetime triggers require a scoped team API key.
servers:
  - url: https://app.nudgen.net
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Identity
  - name: Contacts
  - name: Campaigns
  - name: Brand settings
  - name: AI
  - name: Team API keys
  - name: Sending domains
paths:
  /api/v1/campaigns/{id}/triggers:
    post:
      tags:
        - Campaigns
      summary: Trigger a lifetime campaign
      description: >-
        Requires a team API key with campaigns:trigger scope. The key must
        belong to the campaign workspace. eventId is an idempotency key within
        this campaign: a duplicate returns the existing execution with HTTP 200.
        New executions return HTTP 201; suppressed contacts can produce a
        skipped execution. Limit: 600 requests per window per key, 64 KiB
        request body, 32 KiB data object, and JSON nesting depth 8.
      operationId: triggerLifetimeCampaign
      parameters:
        - $ref: '#/components/parameters/Id'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LifetimeTriggerRequest'
      responses:
        '200':
          description: Duplicate event; existing execution returned
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LifetimeTriggerResponse'
        '201':
          description: New execution created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LifetimeTriggerResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          description: Campaign inactive or sender configuration unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '413':
          $ref: '#/components/responses/BadRequest'
        '415':
          $ref: '#/components/responses/BadRequest'
        '422':
          description: Trigger data does not match the campaign variable manifest
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/ErrorResponse'
                  - type: object
                    properties:
                      details:
                        type: array
                        items:
                          type: object
                          properties:
                            path:
                              type: string
                            code:
                              type: string
                              enum:
                                - required
                                - type
        '429':
          $ref: '#/components/responses/RateLimited'
        '503':
          description: Unable to enqueue execution
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - teamApiKey: []
components:
  parameters:
    Id:
      name: id
      in: path
      required: true
      schema:
        type: string
  schemas:
    LifetimeTriggerRequest:
      type: object
      required:
        - eventId
        - contact
        - data
      additionalProperties: false
      properties:
        eventId:
          type: string
          minLength: 1
          maxLength: 128
        eventName:
          type: string
          maxLength: 100
        occurredAt:
          type: string
          format: date-time
        contact:
          type: object
          required:
            - email
          properties:
            email:
              type: string
              format: email
            externalId:
              type: string
              maxLength: 200
            name:
              type: string
              maxLength: 200
            phone:
              type: string
              maxLength: 50
            metadata:
              type: object
              additionalProperties: true
        data:
          type: object
          additionalProperties: true
          description: Must satisfy the campaign variable manifest; 32 KiB maximum.
    LifetimeTriggerResponse:
      type: object
      properties:
        execution:
          type: object
          properties:
            id:
              type: string
            status:
              type: string
        duplicate:
          type: boolean
    ErrorResponse:
      type: object
      properties:
        error:
          type: string
  responses:
    BadRequest:
      description: Validation error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Unauthorized:
      description: Missing, invalid, revoked, or expired token
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Forbidden:
      description: The workspace cannot perform this write action
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    NotFound:
      description: Resource not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    RateLimited:
      description: Rate limit exceeded
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: PAT
      description: Personal Access Token created from Settings -> API Keys.
    teamApiKey:
      type: http
      scheme: bearer
      description: >-
        Scoped team API key created by an owner or admin. Required scope:
        campaigns:trigger. Personal Access Tokens do not authorize this
        endpoint.

````