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

# Score draft campaign content for deliverability (pre-flight)

> Score a draft campaign before you send it. Pass the draft message content and channel in the request body (no saved campaign needed) and get back the content issues that could hurt deliverability — spam-trigger words and risky links — plus a predicted delivery rate for each destination carrier, based on your own historical delivery results. This check is read-only: it never sends your campaign, charges your wallet, or changes anything in your account.



## OpenAPI

````yaml /openapi.yaml post /api/v1/campaigns/deliverability-lab
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
paths:
  /api/v1/campaigns/deliverability-lab:
    post:
      tags:
        - Campaigns
      summary: Score draft campaign content for deliverability (pre-flight)
      description: >-
        Score a draft campaign before you send it. Pass the draft message
        content and channel in the request body (no saved campaign needed) and
        get back the content issues that could hurt deliverability —
        spam-trigger words and risky links — plus a predicted delivery rate for
        each destination carrier, based on your own historical delivery results.
        This check is read-only: it never sends your campaign, charges your
        wallet, or changes anything in your account.
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              required:
                - channel
              properties:
                channel:
                  type: string
                  enum:
                    - sms
                    - mms
                    - whatsapp
                    - email
                    - rcs
                    - viber
                    - telegram
                    - line
                    - messenger
                    - instagram
                    - push
                    - voice
                    - fax
                  description: Campaign channel the draft content targets.
                body:
                  type: string
                  maxLength: 10000
                  description: Draft message body to score. Defaults to empty string.
                subject:
                  type: string
                  maxLength: 500
                  description: Email-only subject line.
                window:
                  type: string
                  enum:
                    - 7d
                    - 30d
                    - 90d
                  description: >-
                    Historical lookback window for the carrier delivery
                    baseline. Defaults to 30d.
      responses:
        '200':
          description: Deliverability pre-flight report
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      channel:
                        type: string
                      window:
                        type: string
                        enum:
                          - 7d
                          - 30d
                          - 90d
                      content_risk:
                        type: object
                        description: >-
                          Content filtering-risk lint (keyword spam score +
                          URL/link heuristics).
                        properties:
                          applicable:
                            type: boolean
                          score:
                            type: number
                          risk_level:
                            type: string
                            enum:
                              - low
                              - medium
                              - high
                              - critical
                          verdict:
                            type: string
                            enum:
                              - pass
                              - warn
                              - block
                          spam_score:
                            type: number
                          spam_hits:
                            type: array
                            items:
                              type: object
                              additionalProperties: true
                          url_analysis:
                            type: object
                            properties:
                              url_count:
                                type: integer
                              shortener_hosts:
                                type: array
                                items:
                                  type: string
                              has_raw_ip_url:
                                type: boolean
                              has_insecure_url:
                                type: boolean
                          findings:
                            type: array
                            items:
                              type: object
                              properties:
                                id:
                                  type: string
                                label:
                                  type: string
                                severity:
                                  type: string
                                  enum:
                                    - block
                                    - warn
                                matched:
                                  type: array
                                  items:
                                    type: string
                                suggestion:
                                  type: string
                                weight:
                                  type: number
                      predicted_delivery:
                        type: object
                        description: >-
                          Predicted per-destination-carrier delivery rate based
                          on your own historical delivery results.
                        properties:
                          has_history:
                            type: boolean
                          overall_predicted_rate:
                            type:
                              - number
                              - 'null'
                          overall_historical_rate:
                            type:
                              - number
                              - 'null'
                          total_sample:
                            type: integer
                          carriers:
                            type: array
                            items:
                              type: object
                              properties:
                                mccmnc:
                                  type:
                                    - string
                                    - 'null'
                                carrier_name:
                                  type:
                                    - string
                                    - 'null'
                                country:
                                  type:
                                    - string
                                    - 'null'
                                terminal:
                                  type: integer
                                delivered:
                                  type: integer
                                historical_delivery_rate:
                                  type: number
                                content_penalty_points:
                                  type: number
                                predicted_delivery_rate:
                                  type: number
                                confidence:
                                  type: string
                                  enum:
                                    - high
                                    - medium
                                    - low
                      blocking_warnings:
                        type: array
                        items:
                          type: string
                      advisories:
                        type: array
                        items:
                          type: string
                      ready_to_send:
                        type: boolean
                      evaluated_at:
                        type: string
                        format: date-time
                  meta:
                    type: object
                    properties:
                      request_id:
                        type: string
                      timestamp:
                        type: string
                        format: date-time
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_*)

````