> ## 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.

# Create a draft campaign from a journey template

> Clone a built-in journey template into a new draft campaign in your tenant so you get a working flow without building it from scratch. The template's node/edge graph is copied verbatim into a fresh campaign, then returned in `draft` status — open it in the journey builder to tweak the steps and send when ready. Every body field is optional: the campaign name, description, and default channel fall back to the template's own values and the audience defaults to everyone, so the smallest possible call is an empty POST. Any overrides you pass only set the campaign's list/reporting metadata; the per-step channels inside the journey graph are left untouched. Use this to launch from the template picker instead of authoring a journey by hand.



## OpenAPI

````yaml /openapi.yaml post /api/v1/campaigns/templates/{templateId}/instantiate
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/templates/{templateId}/instantiate:
    post:
      tags:
        - Campaigns
      summary: Create a draft campaign from a journey template
      description: >-
        Clone a built-in journey template into a new draft campaign in your
        tenant so you get a working flow without building it from scratch. The
        template's node/edge graph is copied verbatim into a fresh campaign,
        then returned in `draft` status — open it in the journey builder to
        tweak the steps and send when ready. Every body field is optional: the
        campaign name, description, and default channel fall back to the
        template's own values and the audience defaults to everyone, so the
        smallest possible call is an empty POST. Any overrides you pass only set
        the campaign's list/reporting metadata; the per-step channels inside the
        journey graph are left untouched. Use this to launch from the template
        picker instead of authoring a journey by hand.
      parameters:
        - schema:
            type: string
            minLength: 1
            maxLength: 64
          in: path
          name: templateId
          required: true
          description: >-
            Identifier of the journey template to clone (e.g. `welcome-series`),
            as returned by GET /api/v1/campaigns/templates.
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  minLength: 1
                  maxLength: 200
                  description: >-
                    Display name for the new campaign. Defaults to the
                    template's name.
                description:
                  type: string
                  maxLength: 1000
                  description: >-
                    Optional description on the campaign row. Defaults to the
                    template's description.
                channel:
                  type: string
                  enum:
                    - sms
                    - mms
                    - whatsapp
                    - email
                    - rcs
                    - viber
                    - voice
                    - push
                    - instagram
                    - messenger
                    - line
                    - telegram
                    - fax
                  description: >-
                    Override the campaign's default channel (used for list
                    filtering and billing reporting only). Defaults to the
                    channel inferred from the template. Per-step channels in the
                    journey graph are not changed.
                audience_type:
                  type: string
                  enum:
                    - all
                    - list
                    - segment
                    - csv
                    - manual
                  description: How the audience is selected. Defaults to `all` (everyone).
                audience_id:
                  type: string
                  minLength: 1
                  maxLength: 128
                  description: >-
                    Identifier of the list, segment, or CSV import to target.
                    Required when audience_type is anything other than `all`.
            example:
              name: Q3 Welcome Series
              channel: email
              audience_type: segment
              audience_id: seg_newsignups
      responses:
        '201':
          description: Draft campaign created from the template
          content:
            application/json:
              schema:
                type: object
                description: Draft campaign created from the template
                properties:
                  data:
                    type: object
                    additionalProperties: true
                    properties:
                      id:
                        type: string
                      name:
                        type: string
                      status:
                        type: string
                        enum:
                          - draft
                      type:
                        type: string
                        enum:
                          - journey
                      channel:
                        type: string
                      audience_type:
                        type: string
                      audience_id:
                        type:
                          - 'null'
                          - string
                      message_template:
                        type:
                          - 'null'
                          - string
                        description: >-
                          Serialized journey graph ({nodes, edges}) cloned from
                          the template.
                      created_at:
                        type: string
                        format: date-time
                      updated_at:
                        type:
                          - 'null'
                          - string
                        format: date-time
                  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:
                  id: cmp_8f2a1c9d4e
                  name: Q3 Welcome Series
                  status: draft
                  type: journey
                  channel: email
                  audience_type: segment
                  audience_id: seg_newsignups
                  message_template: '{"nodes":[],"edges":[]}'
                  created_at: '2026-08-02T14:23:11.000Z'
                  updated_at: null
                meta:
                  request_id: req_7c1e9a2b3f
                  timestamp: '2026-08-02T14:23:11.000Z'
        '404':
          description: No journey template exists with the given templateId
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_*)

````