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

# Create a click-to-WhatsApp ad

> Creates a Meta click-to-WhatsApp ad.



## OpenAPI

````yaml /api/openapi.json post /v1/ads/ctwa
openapi: 3.1.0
info:
  title: Kavenio API
  version: 1.0.0
  license:
    name: Proprietary
    url: https://kavenio.com/terms
  description: Generated OpenAPI document for the stable Kavenio public API.
servers:
  - url: https://api.kavenio.com
security:
  - bearerAuth: []
tags:
  - name: API keys
    description: Manage Kavenio API keys for the authenticated user.
  - name: Integrations
    description: Connect automation clients and manage workflow subscriptions.
  - name: Feature requests
    description: Submit feature requests from authenticated users.
  - name: Posts
    description: Create, schedule, update, and manage post lifecycle actions.
  - name: Queue
    description: Manage reusable post queue schedules and preview slots.
  - name: Media
    description: Upload, presign, and validate media assets.
  - name: Validation
    description: Validate post payloads and platform content length limits.
  - name: Connect
    description: Start and complete account connection flows.
  - name: Accounts
    description: Manage connected social accounts and account health.
  - name: Telegram
    description: Manage Telegram-specific connected account settings.
  - name: Discord
    description: Manage Discord messages, roles, pins, events, and settings.
  - name: Google Business
    description: Manage Google Business locations, reviews, and helpers.
  - name: Ads
    description: Create, read, cancel, and inspect advertising resources.
  - name: Ad audiences
    description: Manage advertising audiences and audience members.
  - name: Ad catalogs
    description: Inspect advertising catalogs and product sets.
  - name: Ad targeting
    description: Search targeting entities and estimate audience reach.
  - name: Ad conversions
    description: Manage conversion destinations and send conversion events.
  - name: Ad leads
    description: Manage lead forms and retrieve advertising leads.
  - name: Tracking tags
    description: Manage Meta tracking tags and tag sharing.
  - name: Platform credentials
    description: Manage organization platform app credentials.
  - name: Analytics
    description: Read provider analytics and operational inbox data.
  - name: WhatsApp conversions
    description: Read and send WhatsApp conversion events.
  - name: Activity
    description: Read operational activity events.
  - name: Webhooks
    description: Manage webhook endpoints and delivery logs.
paths:
  /v1/ads/ctwa:
    post:
      tags:
        - Ads
      summary: Create a click-to-WhatsApp ad
      description: Creates a Meta click-to-WhatsApp ad.
      operationId: createCtwaAd
      requestBody:
        required: true
        content:
          application/json:
            example:
              accountId: bbbbbbbbbbbbbbbb
              adAccountId: ad_account_example
              name: WhatsApp leads
              headline: Message us
              body: Chat with our team.
              imageUrl: https://cdn.example.com/ad.png
              budgetAmount: 25
              budgetType: daily
            schema:
              type: object
              properties:
                accountId:
                  type: string
                  minLength: 16
                  maxLength: 16
                  pattern: ^[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]{16}$
                adAccountId:
                  type: string
                  minLength: 1
                name:
                  type: string
                  minLength: 1
                  maxLength: 255
                headline:
                  type: string
                  minLength: 1
                  maxLength: 255
                body:
                  type: string
                  minLength: 1
                imageUrl:
                  type: string
                  format: uri
                video:
                  type: object
                  properties:
                    url:
                      type: string
                      format: uri
                    thumbnailUrl:
                      type: string
                      format: uri
                  required:
                    - url
                  additionalProperties: false
                creatives:
                  minItems: 1
                  type: array
                  items:
                    type: object
                    properties:
                      name:
                        type: string
                        minLength: 1
                        maxLength: 255
                      headline:
                        type: string
                        minLength: 1
                        maxLength: 255
                      body:
                        type: string
                        minLength: 1
                      imageUrl:
                        type: string
                        format: uri
                      video:
                        type: object
                        properties:
                          url:
                            type: string
                            format: uri
                          thumbnailUrl:
                            type: string
                            format: uri
                        required:
                          - url
                        additionalProperties: false
                    required:
                      - headline
                      - body
                    additionalProperties: false
                budgetAmount:
                  type: number
                  exclusiveMinimum: 0
                budgetType:
                  type: string
                  enum:
                    - daily
                    - lifetime
                currency:
                  type: string
                  minLength: 3
                  maxLength: 3
                endDate:
                  type: string
                  format: date-time
                  pattern: >-
                    ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
                countries:
                  type: array
                  items:
                    type: string
                    minLength: 2
                cities:
                  type: array
                  items:
                    type: object
                    properties:
                      key:
                        type: string
                        minLength: 1
                      radius:
                        type: number
                        exclusiveMinimum: 0
                      distance_unit:
                        type: string
                        enum:
                          - mile
                          - kilometer
                    required:
                      - key
                    additionalProperties: false
                regions:
                  type: array
                  items:
                    type: object
                    properties:
                      key:
                        type: string
                        minLength: 1
                    required:
                      - key
                    additionalProperties: false
                zips:
                  type: array
                  items:
                    type: object
                    properties:
                      key:
                        type: string
                        minLength: 1
                    required:
                      - key
                    additionalProperties: false
                metros:
                  type: array
                  items:
                    type: object
                    properties:
                      key:
                        type: string
                        minLength: 1
                    required:
                      - key
                    additionalProperties: false
                customLocations:
                  type: array
                  items:
                    type: object
                    properties:
                      latitude:
                        type: number
                      longitude:
                        type: number
                      radius:
                        type: number
                        exclusiveMinimum: 0
                      distanceUnit:
                        type: string
                        enum:
                          - mile
                          - kilometer
                    required:
                      - latitude
                      - longitude
                      - radius
                      - distanceUnit
                    additionalProperties: false
                ageMin:
                  type: integer
                  minimum: 13
                  maximum: 65
                ageMax:
                  type: integer
                  minimum: 13
                  maximum: 65
                interests:
                  type: array
                  items:
                    type: object
                    propertyNames:
                      type: string
                    additionalProperties: {}
                audienceId:
                  type: string
                  minLength: 1
                advantageAudience:
                  anyOf:
                    - type: number
                      const: 0
                    - type: number
                      const: 1
                objective:
                  type: string
                  enum:
                    - OUTCOME_ENGAGEMENT
                    - OUTCOME_SALES
                    - OUTCOME_LEADS
                bidStrategy:
                  type: string
                  enum:
                    - LOWEST_COST_WITHOUT_CAP
                    - LOWEST_COST_WITH_BID_CAP
                    - COST_CAP
                    - LOWEST_COST_WITH_MIN_ROAS
                bidAmount:
                  type: number
                  exclusiveMinimum: 0
                roasAverageFloor:
                  type: number
                  exclusiveMinimum: 0
                dsaBeneficiary:
                  type: string
                  maxLength: 100
                dsaPayor:
                  type: string
                  maxLength: 100
              required:
                - accountId
                - adAccountId
                - name
                - budgetAmount
                - budgetType
              additionalProperties: false
      responses:
        '201':
          description: Create a click-to-WhatsApp ad completed.
          content:
            application/json:
              schema:
                anyOf:
                  - type: object
                    properties:
                      ok:
                        type: boolean
                        x-kavenio-const: true
                      data:
                        anyOf:
                          - type: object
                            properties:
                              ad:
                                type: object
                                properties:
                                  _id:
                                    type: string
                                    minLength: 1
                                  name:
                                    type: string
                                    minLength: 1
                                  platform:
                                    type: string
                                    enum:
                                      - facebook
                                      - instagram
                                      - tiktok
                                      - linkedin
                                      - pinterest
                                      - google
                                      - twitter
                                  status:
                                    type: string
                                    enum:
                                      - active
                                      - paused
                                      - pending_review
                                      - rejected
                                      - completed
                                      - cancelled
                                      - error
                                  adType:
                                    type: string
                                    minLength: 1
                                  goal:
                                    type: string
                                    minLength: 1
                                  isExternal:
                                    type: boolean
                                  budget:
                                    type: object
                                    properties:
                                      amount:
                                        type: number
                                      type:
                                        type: string
                                        minLength: 1
                                    required:
                                      - amount
                                      - type
                                    additionalProperties: false
                                  metrics:
                                    type: object
                                    properties:
                                      spend:
                                        type: number
                                      impressions:
                                        type: number
                                      reach:
                                        type: number
                                      clicks:
                                        type: number
                                      ctr:
                                        type: number
                                      cpc:
                                        type: number
                                      cpm:
                                        type: number
                                      engagement:
                                        type: number
                                      conversions:
                                        type: number
                                      costPerConversion:
                                        type: number
                                      actions:
                                        type: object
                                        propertyNames:
                                          type: string
                                        additionalProperties:
                                          type: number
                                      actionValues:
                                        type: object
                                        propertyNames:
                                          type: string
                                        additionalProperties:
                                          type: number
                                      purchaseValue:
                                        type: number
                                      roas:
                                        type: number
                                      lastSyncedAt:
                                        type: string
                                        minLength: 1
                                    required:
                                      - spend
                                      - impressions
                                      - reach
                                      - clicks
                                      - ctr
                                      - cpc
                                      - cpm
                                      - engagement
                                      - conversions
                                      - costPerConversion
                                      - actions
                                      - actionValues
                                      - purchaseValue
                                      - roas
                                    additionalProperties: false
                                  platformAdId:
                                    type: string
                                    minLength: 1
                                  platformAdAccountId:
                                    type: string
                                    minLength: 1
                                  platformCampaignId:
                                    type: string
                                    minLength: 1
                                  platformAdSetId:
                                    type: string
                                    minLength: 1
                                  campaignName:
                                    type: string
                                    minLength: 1
                                  adSetName:
                                    type: string
                                    minLength: 1
                                  platformObjective:
                                    type: string
                                    minLength: 1
                                  optimizationGoal:
                                    type: string
                                    minLength: 1
                                  platformAdAccountName:
                                    type: string
                                    minLength: 1
                                  platformCreatedAt:
                                    type: string
                                    minLength: 1
                                  bidStrategy:
                                    type: string
                                    minLength: 1
                                  bidAmount:
                                    type: number
                                  roasAverageFloor:
                                    type: number
                                  promotedObject:
                                    type: object
                                    propertyNames:
                                      type: string
                                    additionalProperties: {}
                                  creative:
                                    type: object
                                    properties:
                                      thumbnailUrl:
                                        type: string
                                      imageUrl:
                                        type: string
                                      videoId:
                                        type: string
                                      videoUrl:
                                        type: string
                                      objectType:
                                        type: string
                                      objectStoryId:
                                        type: string
                                      effectiveObjectStoryId:
                                        type: string
                                      effectiveInstagramMediaId:
                                        type: string
                                      instagramUserId:
                                        type: string
                                      instagramPermalinkUrl:
                                        type: string
                                      mediaUrls:
                                        type: array
                                        items:
                                          type: string
                                      body:
                                        type: string
                                      googleHeadline:
                                        type: string
                                      googleDescription:
                                        type: string
                                      linkUrl:
                                        type: string
                                      pinterestImageUrl:
                                        type: string
                                      pinterestTitle:
                                        type: string
                                      pinterestDescription:
                                        type: string
                                    additionalProperties: {}
                                  targeting:
                                    type: object
                                    propertyNames:
                                      type: string
                                    additionalProperties: {}
                                  schedule:
                                    type: object
                                    properties:
                                      startDate:
                                        type: string
                                        minLength: 1
                                      endDate:
                                        type: string
                                        minLength: 1
                                    additionalProperties: false
                                  rejectionReason:
                                    type: string
                                    minLength: 1
                                  createdAt:
                                    type: string
                                    minLength: 1
                                  updatedAt:
                                    type: string
                                    minLength: 1
                                required:
                                  - _id
                                  - name
                                  - platform
                                  - status
                                  - adType
                                  - goal
                                  - isExternal
                                  - budget
                                  - metrics
                                  - promotedObject
                                  - creative
                                  - targeting
                                  - schedule
                                  - createdAt
                                  - updatedAt
                                additionalProperties: false
                            required:
                              - ad
                            additionalProperties: false
                          - type: object
                            properties:
                              ads:
                                minItems: 1
                                type: array
                                items:
                                  type: object
                                  properties:
                                    _id:
                                      type: string
                                      minLength: 1
                                    name:
                                      type: string
                                      minLength: 1
                                    platform:
                                      type: string
                                      enum:
                                        - facebook
                                        - instagram
                                        - tiktok
                                        - linkedin
                                        - pinterest
                                        - google
                                        - twitter
                                    status:
                                      type: string
                                      enum:
                                        - active
                                        - paused
                                        - pending_review
                                        - rejected
                                        - completed
                                        - cancelled
                                        - error
                                    adType:
                                      type: string
                                      minLength: 1
                                    goal:
                                      type: string
                                      minLength: 1
                                    isExternal:
                                      type: boolean
                                    budget:
                                      type: object
                                      properties:
                                        amount:
                                          type: number
                                        type:
                                          type: string
                                          minLength: 1
                                      required:
                                        - amount
                                        - type
                                      additionalProperties: false
                                    metrics:
                                      type: object
                                      properties:
                                        spend:
                                          type: number
                                        impressions:
                                          type: number
                                        reach:
                                          type: number
                                        clicks:
                                          type: number
                                        ctr:
                                          type: number
                                        cpc:
                                          type: number
                                        cpm:
                                          type: number
                                        engagement:
                                          type: number
                                        conversions:
                                          type: number
                                        costPerConversion:
                                          type: number
                                        actions:
                                          type: object
                                          propertyNames:
                                            type: string
                                          additionalProperties:
                                            type: number
                                        actionValues:
                                          type: object
                                          propertyNames:
                                            type: string
                                          additionalProperties:
                                            type: number
                                        purchaseValue:
                                          type: number
                                        roas:
                                          type: number
                                        lastSyncedAt:
                                          type: string
                                          minLength: 1
                                      required:
                                        - spend
                                        - impressions
                                        - reach
                                        - clicks
                                        - ctr
                                        - cpc
                                        - cpm
                                        - engagement
                                        - conversions
                                        - costPerConversion
                                        - actions
                                        - actionValues
                                        - purchaseValue
                                        - roas
                                      additionalProperties: false
                                    platformAdId:
                                      type: string
                                      minLength: 1
                                    platformAdAccountId:
                                      type: string
                                      minLength: 1
                                    platformCampaignId:
                                      type: string
                                      minLength: 1
                                    platformAdSetId:
                                      type: string
                                      minLength: 1
                                    campaignName:
                                      type: string
                                      minLength: 1
                                    adSetName:
                                      type: string
                                      minLength: 1
                                    platformObjective:
                                      type: string
                                      minLength: 1
                                    optimizationGoal:
                                      type: string
                                      minLength: 1
                                    platformAdAccountName:
                                      type: string
                                      minLength: 1
                                    platformCreatedAt:
                                      type: string
                                      minLength: 1
                                    bidStrategy:
                                      type: string
                                      minLength: 1
                                    bidAmount:
                                      type: number
                                    roasAverageFloor:
                                      type: number
                                    promotedObject:
                                      type: object
                                      propertyNames:
                                        type: string
                                      additionalProperties: {}
                                    creative:
                                      type: object
                                      properties:
                                        thumbnailUrl:
                                          type: string
                                        imageUrl:
                                          type: string
                                        videoId:
                                          type: string
                                        videoUrl:
                                          type: string
                                        objectType:
                                          type: string
                                        objectStoryId:
                                          type: string
                                        effectiveObjectStoryId:
                                          type: string
                                        effectiveInstagramMediaId:
                                          type: string
                                        instagramUserId:
                                          type: string
                                        instagramPermalinkUrl:
                                          type: string
                                        mediaUrls:
                                          type: array
                                          items:
                                            type: string
                                        body:
                                          type: string
                                        googleHeadline:
                                          type: string
                                        googleDescription:
                                          type: string
                                        linkUrl:
                                          type: string
                                        pinterestImageUrl:
                                          type: string
                                        pinterestTitle:
                                          type: string
                                        pinterestDescription:
                                          type: string
                                      additionalProperties: {}
                                    targeting:
                                      type: object
                                      propertyNames:
                                        type: string
                                      additionalProperties: {}
                                    schedule:
                                      type: object
                                      properties:
                                        startDate:
                                          type: string
                                          minLength: 1
                                        endDate:
                                          type: string
                                          minLength: 1
                                      additionalProperties: false
                                    rejectionReason:
                                      type: string
                                      minLength: 1
                                    createdAt:
                                      type: string
                                      minLength: 1
                                    updatedAt:
                                      type: string
                                      minLength: 1
                                  required:
                                    - _id
                                    - name
                                    - platform
                                    - status
                                    - adType
                                    - goal
                                    - isExternal
                                    - budget
                                    - metrics
                                    - promotedObject
                                    - creative
                                    - targeting
                                    - schedule
                                    - createdAt
                                    - updatedAt
                                  additionalProperties: false
                              platformCampaignId:
                                type: string
                                minLength: 1
                              platformAdSetId:
                                type: string
                                minLength: 1
                              message:
                                type: string
                                minLength: 1
                            required:
                              - ads
                              - platformCampaignId
                              - platformAdSetId
                            additionalProperties: false
                    required:
                      - ok
                      - data
                    additionalProperties: false
                  - type: object
                    properties:
                      ok:
                        type: boolean
                        x-kavenio-const: false
                      error:
                        type: object
                        properties:
                          code:
                            type: string
                            minLength: 1
                          message:
                            type: string
                            minLength: 1
                          details: {}
                        required:
                          - code
                          - message
                        additionalProperties: false
                    required:
                      - ok
                      - error
                    additionalProperties: false
        '401':
          description: Authentication failed.
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                    x-kavenio-const: false
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                        minLength: 1
                      message:
                        type: string
                        minLength: 1
                      details: {}
                    required:
                      - code
                      - message
                    additionalProperties: false
                required:
                  - ok
                  - error
                additionalProperties: false
        '422':
          description: Request validation failed.
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                    x-kavenio-const: false
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                        minLength: 1
                      message:
                        type: string
                        minLength: 1
                      details: {}
                    required:
                      - code
                      - message
                    additionalProperties: false
                required:
                  - ok
                  - error
                additionalProperties: false
        '500':
          description: Request failed.
          content:
            application/json:
              schema:
                type: object
                properties:
                  ok:
                    type: boolean
                    x-kavenio-const: false
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                        minLength: 1
                      message:
                        type: string
                        minLength: 1
                      details: {}
                    required:
                      - code
                      - message
                    additionalProperties: false
                required:
                  - ok
                  - error
                additionalProperties: false
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: Clerk session or OAuth token

````