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

# Create Rules

Creates one or more rules for a campaign. All active rules must pass for a payment to trigger the campaign (AND logic).

Visit the [conditional operators reference](/reference/communications-campaigns#conditional-operators-reference) for more information on how to use them.


## OpenAPI

````yaml openapi/communications-campaigns/create-rules.json POST /campaigns/{campaign_id}/rules
openapi: 3.0.0
info:
  version: 1.0.0
  title: Communications Campaigns
servers:
  - url: https://api-sandbox.y.uno/v1
security:
  - public-api-key: []
    private-secret-key: []
paths:
  /campaigns/{campaign_id}/rules:
    post:
      operationId: post_campaigns-campaign-id-rules
      parameters:
        - in: path
          name: campaign_id
          schema:
            type: string
          required: true
          description: The campaign identifier (UUID).
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                rules:
                  type: array
                  items:
                    type: object
                    properties:
                      rule_type:
                        type: string
                        description: >-
                          Type of rule (see [Rule Types
                          Reference](/reference/communications-campaigns#rule-types-reference))
                      values:
                        type: array
                        items:
                          type: string
                        description: >-
                          Array of string values for comparison. Not required
                          for `UNIQUE_BY_USER`.
                      conditional:
                        type: string
                        description: >-
                          Comparison operator. Not required for
                          `USER_COMMS_PER_DAY` or `UNIQUE_BY_USER`. See
                          [Conditional Operators
                          Reference](/reference/communications-campaigns#conditional-operators-reference).
                      metadata_key:
                        type: string
                        description: >-
                          Required when `rule_type` is `METADATA`. The metadata
                          field name to evaluate.
                    required:
                      - rule_type
                  description: Array of rule objects
              required:
                - rules
            examples:
              Basic declined payment recovery:
                summary: Basic declined payment recovery
                value:
                  rules:
                    - rule_type: PAYMENT_STATUS
                      values:
                        - DECLINED
                      conditional: EQUAL
                    - rule_type: PAYMENT_METHOD
                      values:
                        - CARD
                      conditional: EQUAL
              High-value transaction recovery via phone call:
                summary: High-value transaction recovery via phone call
                value:
                  rules:
                    - rule_type: PAYMENT_STATUS
                      values:
                        - DECLINED
                      conditional: EQUAL
                    - rule_type: AMOUNT_AND_CURRENCY
                      values:
                        - '500'
                        - USD
                      conditional: GREATER_THAN
                    - rule_type: USER_COMMS_PER_DAY
                      values:
                        - '1'
              Provider-specific recovery with amount range:
                summary: Provider-specific recovery with amount range
                value:
                  rules:
                    - rule_type: PAYMENT_STATUS
                      values:
                        - DECLINED
                      conditional: EQUAL
                    - rule_type: PROVIDER
                      values:
                        - stripe
                        - adyen
                      conditional: ONE_OF
                    - rule_type: AMOUNT
                      values:
                        - '10000'
                        - '500000'
                      conditional: BETWEEN
                    - rule_type: CURRENCY
                      values:
                        - COP
                      conditional: EQUAL
              Metadata-based segmentation:
                summary: Metadata-based segmentation
                value:
                  rules:
                    - rule_type: PAYMENT_STATUS
                      values:
                        - DECLINED
                      conditional: EQUAL
                    - rule_type: METADATA
                      metadata_key: vertical
                      values:
                        - restaurant
                        - grocery
                      conditional: ONE_OF
                    - rule_type: METADATA
                      metadata_key: customer_tier
                      values:
                        - premium
                        - gold
                      conditional: ONE_OF
                    - rule_type: UNIQUE_BY_USER
              Exclude specific response codes:
                summary: Exclude specific response codes
                value:
                  rules:
                    - rule_type: PAYMENT_STATUS
                      values:
                        - DECLINED
                      conditional: EQUAL
                    - rule_type: ISO_RESPONSE_CODE
                      values:
                        - '14'
                        - '43'
                        - '59'
                      conditional: NOT_ONE_OF
      responses:
        '201':
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          example: f1e2d3c4-b5a6-7890-abcd-ef1234567890
                        rule_type:
                          type: string
                          example: PAYMENT_STATUS
                        values:
                          type: array
                          items:
                            type: string
                          example:
                            - DECLINED
                        conditional:
                          type: string
                          example: EQUAL
                        metadata_key:
                          type: string
                          nullable: true
                          example: null
                        status:
                          type: string
                          example: ACTIVE
                        created_at:
                          type: string
                          example: '2025-07-01T12:05:00Z'
                        updated_at:
                          type: string
                          example: '2025-07-01T12:05:00Z'
              examples:
                Created:
                  summary: Created
                  value:
                    data:
                      - id: f1e2d3c4-b5a6-7890-abcd-ef1234567890
                        rule_type: PAYMENT_STATUS
                        values:
                          - DECLINED
                        conditional: EQUAL
                        metadata_key: null
                        status: ACTIVE
                        created_at: '2025-07-01T12:05:00Z'
                        updated_at: '2025-07-01T12:05:00Z'
                      - id: a9b8c7d6-e5f4-3210-abcd-ef1234567890
                        rule_type: CURRENCY
                        values:
                          - COP
                        conditional: EQUAL
                        metadata_key: null
                        status: ACTIVE
                        created_at: '2025-07-01T12:05:00Z'
                        updated_at: '2025-07-01T12:05:00Z'
                      - id: 11223344-5566-7788-99aa-bbccddeeff00
                        rule_type: AMOUNT
                        values:
                          - '50000'
                        conditional: GREATER_THAN
                        metadata_key: null
                        status: ACTIVE
                        created_at: '2025-07-01T12:05:00Z'
                        updated_at: '2025-07-01T12:05:00Z'
          description: Created
components:
  securitySchemes:
    public-api-key:
      type: apiKey
      in: header
      name: public-api-key
    private-secret-key:
      type: apiKey
      in: header
      name: private-secret-key

````