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

# Generate a multi-channel campaign draft from a brief

> Turn a plain-English campaign brief into a structured, multi-channel draft — per-channel copy, a recommended send time, and a fallback chain — that the composer renders as editable fields. Nothing is persisted; the operator reviews the draft and commits it via POST /api/v1/campaigns. Pass the tenant's connected channels, brand tone, sender region, and workspace timezone so relative send times and compliance hints resolve correctly. Returns 503 when no AI provider is configured and 422 when the model output can't be parsed.



## OpenAPI

````yaml /openapi.yaml post /api/v1/campaigns/from-brief
openapi: 3.1.0
info:
  title: Devotel CPaaS API
  description: Orbit by Devotel — Communications Platform as a Service API
  version: 1.0.0
  contact:
    name: Devotel
    url: https://devotel.io
    email: support@devotel.io
  license:
    name: Proprietary
servers:
  - url: https://api.orbit.devotel.io
    description: Production
security:
  - Bearer: []
  - ApiKey: []
tags:
  - name: Messages
    description: >-
      Send and manage messages across all channels (SMS, WhatsApp, RCS, Email,
      Viber, etc.)
  - name: Fax
    description: >-
      List and track fax (MMS/T.38) transmissions on Telnyx-backed fax numbers
      (sending flows through the Messaging API)
  - name: Agents
    description: AI agent creation, configuration, and execution
  - name: Voice
    description: Voice calls, IVR, conferencing, and SIP trunking
  - name: OnCall
    description: On-call rotations and escalation policy planning for incident alerting
  - name: Webhooks
    description: Webhook endpoint management and delivery logs
  - name: Numbers
    description: Phone number search, provisioning, and configuration
  - name: Brand Identity
    description: >-
      Unified cross-channel brand trust posture (10DLC, toll-free, WhatsApp,
      RCS, branded calling, number KYC)
  - name: Contacts
    description: Contact management, segmentation, and lifecycle tracking
  - name: Campaigns
    description: Marketing campaign orchestration and analytics
  - name: Flows
    description: Automation flow builder and execution engine
  - name: Templates
    description: Message template management and approval workflows
  - name: Settings
    description: Organization, channel, and user preference settings
  - name: Verify
    description: OTP generation and verification across channels
  - name: Push
    description: Push notification delivery via FCM and APNs
  - name: Integrations
    description: Third-party service connections and OAuth management
  - name: CDP
    description: >-
      Customer Data Platform — activation surface (CRM object sync, streaming
      destinations, ad-audience activation)
  - name: Files
    description: >-
      Server-to-server media upload, listing, retrieval, and deletion
      (signed-URL backed)
  - name: Commerce
    description: >-
      Omnichannel conversational-commerce — persistent cart + checkout state
      machine, channel-agnostic hosted pay-by-link, native WhatsApp checkout,
      and AP2-style agent payment mandates.
  - name: Sync
    description: >-
      Real-time shared-state primitive (Twilio Sync parity) — Documents, Maps,
      Lists, and ephemeral Streams, with change events relayed over the
      /api/v1/ws/sync WebSocket gateway
  - name: Risk
    description: >-
      Unified cross-channel Trust & Fraud risk scoring — fuses SMS-pumping,
      URL-reputation, Verify Fraud Guard, and Voice Biometrics signals into one
      composite verdict queryable before a send or a call.
  - name: Orby
    description: >-
      In-dashboard Orby operator assistant: streamed assistant turns,
      conversation threads, product knowledge-base search, and the tool-action
      approval gate. Available to signed-in operators only (dashboard session
      auth — API-key requests are rejected).
paths:
  /api/v1/campaigns/from-brief:
    post:
      tags:
        - Campaigns
      summary: Generate a multi-channel campaign draft from a brief
      description: >-
        Turn a plain-English campaign brief into a structured, multi-channel
        draft — per-channel copy, a recommended send time, and a fallback chain
        — that the composer renders as editable fields. Nothing is persisted;
        the operator reviews the draft and commits it via POST
        /api/v1/campaigns. Pass the tenant's connected channels, brand tone,
        sender region, and workspace timezone so relative send times and
        compliance hints resolve correctly. Returns 503 when no AI provider is
        configured and 422 when the model output can't be parsed.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - brief
              properties:
                brief:
                  type: string
                  minLength: 8
                  maxLength: 4000
                  description: Natural-language description of the campaign to generate.
                available_channels:
                  type: array
                  items:
                    type: string
                    enum:
                      - sms
                      - rcs
                      - whatsapp
                      - email
                      - push
                  description: >-
                    Channels the tenant has connected. The model only drafts
                    content for these; omit to allow all five.
                tone:
                  type: string
                  maxLength: 120
                  description: Brand voice hint, e.g. `friendly`, `formal`, `playful`.
                region:
                  type: string
                  minLength: 2
                  maxLength: 2
                  description: >-
                    Two-letter sender region for compliance hints (e.g. `US`,
                    `EU`, `IN`).
                inside_journey:
                  type: boolean
                  description: >-
                    When true, emit a single-channel draft (a journey already
                    orchestrates fallback) instead of a fallback chain.
                timezone:
                  type: string
                  minLength: 1
                  maxLength: 64
                  description: >-
                    Operator's IANA workspace timezone (e.g. `America/New_York`)
                    so relative send times resolve on their local clock.
                    Defaults to UTC.
            example:
              brief: >-
                Send a 3-step welcome flow to new signups — WhatsApp first, then
                email, friendly tone.
              available_channels:
                - whatsapp
                - email
                - sms
              tone: friendly
              region: US
      responses:
        '200':
          description: Generated campaign draft (not persisted)
          content:
            application/json:
              schema:
                type: object
                description: Generated campaign draft (not persisted)
                properties:
                  data:
                    type: object
                    properties:
                      draft:
                        type: object
                        additionalProperties: true
                        description: >-
                          Structured multi-channel draft the composer renders
                          into editable fields.
                      model:
                        type: string
                        description: Identifier of the model that produced the draft.
                      usage:
                        type: object
                        properties:
                          promptTokens:
                            type: integer
                          completionTokens:
                            type: integer
                          totalTokens:
                            type: integer
                          cacheReadTokens:
                            type: integer
                          cacheCreationTokens:
                            type: integer
                  meta:
                    type: object
                    properties:
                      request_id:
                        type: string
                        description: >-
                          Unique request identifier (also returned in
                          X-Request-Id header)
                      timestamp:
                        type: string
                        format: date-time
                        description: ISO 8601 UTC timestamp of the response
              example:
                data:
                  draft:
                    name: New Signup Welcome
                    description: A friendly 3-step welcome flow for new signups.
                    goal: activation
                    recommended_send_time: optimal_per_recipient
                    fallback_chain:
                      - whatsapp
                      - email
                      - sms
                  model: claude-sonnet
                  usage:
                    promptTokens: 812
                    completionTokens: 431
                    totalTokens: 1243
                    cacheReadTokens: 0
                    cacheCreationTokens: 0
                meta:
                  request_id: req_7c1e9a2b3f
                  timestamp: '2026-08-02T14:23:11.000Z'
components:
  securitySchemes:
    Bearer:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: Dashboard JWT token from Clerk
    ApiKey:
      type: apiKey
      name: X-API-Key
      in: header
      description: Server-to-server API key (dv_live_sk_*)

````