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

# Predict performance

> Predict how a video, text post or image post will do before it goes out, with the models behind the dashboard's Predicted performance. Send the content, where it will be posted and, per platform, the account's follower count and past posts with their counts: the prediction ranks it against that account's own posts and scales the counts by what its usual post does. A video (`format: video`) is predicted for Instagram; a text post for X and LinkedIn; an image post for X, LinkedIn and Instagram (where the reel model reads its pictures). It runs in the background: this answers `202` with `status: processing`; poll `GET /v1/predictions/{id}` until it is `succeeded` (usually under a minute for a post, up to six for a video), then read `result.overall_score` (70 is a typical post for the account), the per-platform counts and what drove them. On the API & MCP plan and the Growth Marketing Manager hire each prediction is charged from the prepaid balance once it succeeds, at its estimated model cost plus 20% (`price_cents`, quoted in the response; a failed one is free); on Revenue Engine and Custom it is free; other plans get `403 plan_not_included`. Up to 5 run at once and 200 per day per workspace.



## OpenAPI

````yaml /openapi.json post /v1/predictions
openapi: 3.1.0
info:
  title: LumisReach v1 API
  version: 1.0.0
  description: >-
    Programmatic access to the LumisReach voice platform — calls, numbers,
    caller trust, and brands.
  contact:
    name: LumisReach
    email: founders@lumisreach.com
servers:
  - url: https://api.lumisreach.com/api
security:
  - bearerAuth: []
tags:
  - name: Contacts
  - name: Calls
  - name: Messages
  - name: Emails
  - name: Phone Numbers
  - name: Caller IDs
  - name: Enterprise Registration
  - name: Branded Calling
  - name: Dialer Calls
  - name: SMS
  - name: WebRTC
  - name: Reputation
  - name: Usage
  - name: Account
  - name: Billing
  - name: Documents
  - name: Lincoln AI
  - name: Optimized posts
  - name: Predictions
  - name: Quick Agent Actions
  - name: Sub-entities
  - name: Video schedules
  - name: Videos
paths:
  /v1/predictions:
    post:
      tags:
        - Predictions
      summary: Predict performance
      description: >-
        Predict how a video, text post or image post will do before it goes out,
        with the models behind the dashboard's Predicted performance. Send the
        content, where it will be posted and, per platform, the account's
        follower count and past posts with their counts: the prediction ranks it
        against that account's own posts and scales the counts by what its usual
        post does. A video (`format: video`) is predicted for Instagram; a text
        post for X and LinkedIn; an image post for X, LinkedIn and Instagram
        (where the reel model reads its pictures). It runs in the background:
        this answers `202` with `status: processing`; poll `GET
        /v1/predictions/{id}` until it is `succeeded` (usually under a minute
        for a post, up to six for a video), then read `result.overall_score` (70
        is a typical post for the account), the per-platform counts and what
        drove them. On the API & MCP plan and the Growth Marketing Manager hire
        each prediction is charged from the prepaid balance once it succeeds, at
        its estimated model cost plus 20% (`price_cents`, quoted in the
        response; a failed one is free); on Revenue Engine and Custom it is
        free; other plans get `403 plan_not_included`. Up to 5 run at once and
        200 per day per workspace.
      operationId: v1_predictions_post
      parameters:
        - name: Idempotency-Key
          in: header
          required: false
          description: >-
            A UUID. When present, deduplicates repeat submissions. See
            /api-reference/idempotency.
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $schema: http://json-schema.org/draft-07/schema#
              type: object
              properties:
                format:
                  type: string
                  enum:
                    - video
                    - text
                    - image
                  description: >-
                    `video` (a reel), `text` (text alone) or `image` (text with
                    one or more pictures)
                platforms:
                  minItems: 1
                  maxItems: 6
                  type: array
                  items:
                    type: string
                    enum:
                      - tiktok
                      - instagram
                      - facebook
                      - x
                      - linkedin
                      - youtube
                  description: >-
                    Where it will be posted. `video`: `instagram`. `text`: `x`
                    and/or `linkedin`. `image`: any of `x`, `linkedin` and
                    `instagram`.
                text:
                  default: ''
                  description: >-
                    The caption (video) or post text (text, image), hashtags
                    included, as it will be posted
                  type: string
                  maxLength: 10000
                video_url:
                  description: '`video`: a public https URL of the finished MP4'
                  type: string
                  format: uri
                image_urls:
                  description: >-
                    `image`: public https URLs of the pictures, in order. X and
                    LinkedIn read the first four, Instagram the first ten; all
                    are counted.
                  maxItems: 20
                  type: array
                  items:
                    type: string
                    format: uri
                post_at:
                  description: When it will go out (ISO 8601); now when omitted
                  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|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                accounts:
                  default: {}
                  description: >-
                    Per platform: the account's follower count and posting
                    history. Omit for a new account.
                  type: object
                  propertyNames:
                    type: string
                    enum:
                      - tiktok
                      - instagram
                      - facebook
                      - x
                      - linkedin
                      - youtube
                  additionalProperties:
                    type: object
                    properties:
                      followers:
                        description: >-
                          The account's follower count, to size an account with
                          little history
                        type: integer
                        minimum: 0
                        maximum: 9007199254740991
                      history:
                        default: []
                        description: >-
                          The account's own past posts on this platform, any
                          order. Their counts set what a usual post does here
                          (posts from the last 90 days that are at least two
                          days old); for text and image posts the newest 20 are
                          also read for how alike the new one is and how soon
                          after the last it goes out.
                        maxItems: 100
                        type: array
                        items:
                          type: object
                          properties:
                            text:
                              default: ''
                              description: Its caption or post text
                              type: string
                              maxLength: 10000
                            posted_at:
                              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|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
                              description: When it went out (ISO 8601)
                            views:
                              description: Plays, views or impressions
                              type: integer
                              minimum: 0
                              maximum: 9007199254740991
                            likes:
                              type: integer
                              minimum: 0
                              maximum: 9007199254740991
                            comments:
                              type: integer
                              minimum: 0
                              maximum: 9007199254740991
                            reposts:
                              description: Reposts or shares
                              type: integer
                              minimum: 0
                              maximum: 9007199254740991
                            video_url:
                              description: >-
                                `video` only: a public URL of the reel. The
                                newest five with one are watched next to the new
                                video, which ranks it against your own work
                                rather than the training accounts'.
                              type: string
                              format: uri
                          required:
                            - text
                            - posted_at
                          additionalProperties: false
                    required:
                      - history
                    additionalProperties: false
              required:
                - format
                - platforms
                - text
                - accounts
              additionalProperties: false
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $schema: http://json-schema.org/draft-07/schema#
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        format: uuid
                        pattern: >-
                          ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                      status:
                        type: string
                        enum:
                          - processing
                          - succeeded
                          - failed
                        description: >-
                          `processing` until it is done: usually under a minute
                          for a post, up to six for a video
                      format:
                        type: string
                        enum:
                          - video
                          - text
                          - image
                      platforms:
                        type: array
                        items:
                          type: string
                          enum:
                            - tiktok
                            - instagram
                            - facebook
                            - x
                            - linkedin
                            - youtube
                      created_at:
                        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))$
                      completed_at:
                        anyOf:
                          - 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))$
                          - type: 'null'
                      error:
                        description: Why it failed; send it again once that is fixed
                        type:
                          - string
                          - 'null'
                      price_cents:
                        anyOf:
                          - type: integer
                            minimum: -9007199254740991
                            maximum: 9007199254740991
                          - type: 'null'
                        description: >-
                          What it costs, in cents, quoted when it was asked for;
                          null on a plan where predictions are free. Charged
                          from the prepaid balance only once it succeeds.
                      charged:
                        type: boolean
                        description: Whether `price_cents` has been charged
                      result:
                        anyOf:
                          - type: object
                            properties:
                              overall_score:
                                type: integer
                                minimum: -9007199254740991
                                maximum: 9007199254740991
                                description: >-
                                  One 0-100 grade for how it is likely to do,
                                  read like a school grade: 70 is a typical post
                                  for the account, 85 a clearly better one, 55 a
                                  weaker one.
                              overall_score_parts:
                                type: array
                                items:
                                  type: object
                                  properties:
                                    label:
                                      type: string
                                    chance:
                                      type: number
                                      description: >-
                                        The chance this input gives it of
                                        beating the usual post (0.5 is even)
                                    weight:
                                      type: number
                                      description: How much of it counts, 0 to 1
                                  required:
                                    - label
                                    - chance
                                    - weight
                                  additionalProperties: false
                                description: What the overall score is made of
                              basis:
                                type: string
                                enum:
                                  - history
                                  - followers
                                  - benchmark
                                description: >-
                                  What sets the usual post the counts scale: the
                                  account's `history`, its `followers`, or a
                                  `benchmark` for a new account
                              quality:
                                anyOf:
                                  - type: object
                                    properties:
                                      overall:
                                        type: number
                                      hook:
                                        type: object
                                        properties:
                                          score:
                                            type: number
                                          reason:
                                            type: string
                                        required:
                                          - score
                                          - reason
                                        additionalProperties: false
                                      script:
                                        type: object
                                        properties:
                                          score:
                                            type: number
                                          reason:
                                            type: string
                                        required:
                                          - score
                                          - reason
                                        additionalProperties: false
                                      video:
                                        type: object
                                        properties:
                                          score:
                                            type: number
                                          reason:
                                            type: string
                                        required:
                                          - score
                                          - reason
                                        additionalProperties: false
                                      source:
                                        type: string
                                        enum:
                                          - watch
                                          - review
                                        description: >-
                                          `watch`: an AI watched the video, or
                                          looked through an Instagram post's
                                          pictures; `review`: an AI read the post
                                    required:
                                      - overall
                                      - hook
                                      - script
                                      - video
                                      - source
                                    additionalProperties: false
                                  - type: 'null'
                                description: >-
                                  0-100 quality scores, 50 a routine post; null
                                  when the AI critique failed
                              platforms:
                                type: array
                                items:
                                  type: object
                                  properties:
                                    platform:
                                      type: string
                                      enum:
                                        - tiktok
                                        - instagram
                                        - facebook
                                        - x
                                        - linkedin
                                        - youtube
                                    model_version:
                                      type: string
                                    percentile:
                                      type: number
                                      description: >-
                                        The share of the account's own posts
                                        this one should beat, 0 to 1 (0.5 is a
                                        typical post). A soft estimate: picking
                                        the better of two of an account's posts,
                                        the models are right about 6 times in
                                        10.
                                    relative:
                                      type: object
                                      properties:
                                        engagement:
                                          type: object
                                          properties:
                                            low:
                                              type: number
                                            expected:
                                              type: number
                                            high:
                                              type: number
                                          required:
                                            - low
                                            - expected
                                            - high
                                          additionalProperties: false
                                        likes:
                                          type: object
                                          properties:
                                            low:
                                              type: number
                                            expected:
                                              type: number
                                            high:
                                              type: number
                                          required:
                                            - low
                                            - expected
                                            - high
                                          additionalProperties: false
                                        comments:
                                          type: object
                                          properties:
                                            low:
                                              type: number
                                            expected:
                                              type: number
                                            high:
                                              type: number
                                          required:
                                            - low
                                            - expected
                                            - high
                                          additionalProperties: false
                                        views:
                                          type: object
                                          properties:
                                            low:
                                              type: number
                                            expected:
                                              type: number
                                            high:
                                              type: number
                                          required:
                                            - low
                                            - expected
                                            - high
                                          additionalProperties: false
                                        reposts:
                                          type: object
                                          properties:
                                            low:
                                              type: number
                                            expected:
                                              type: number
                                            high:
                                              type: number
                                          required:
                                            - low
                                            - expected
                                            - high
                                          additionalProperties: false
                                        conversion:
                                          description: >-
                                            `instagram`: engagement and
                                            buying-intent comments, the reel model's
                                            headline
                                          type: object
                                          properties:
                                            low:
                                              type: number
                                            expected:
                                              type: number
                                            high:
                                              type: number
                                          required:
                                            - low
                                            - expected
                                            - high
                                          additionalProperties: false
                                      required:
                                        - likes
                                        - comments
                                      additionalProperties: false
                                      description: >-
                                        Multiples of the account's usual post (1
                                        is typical): p10, p50 and p90
                                    predicted:
                                      type: object
                                      properties:
                                        views:
                                          type: object
                                          properties:
                                            low:
                                              type: number
                                            expected:
                                              type: number
                                            high:
                                              type: number
                                          required:
                                            - low
                                            - expected
                                            - high
                                          additionalProperties: false
                                        likes:
                                          type: object
                                          properties:
                                            low:
                                              type: number
                                            expected:
                                              type: number
                                            high:
                                              type: number
                                          required:
                                            - low
                                            - expected
                                            - high
                                          additionalProperties: false
                                        comments:
                                          type: object
                                          properties:
                                            low:
                                              type: number
                                            expected:
                                              type: number
                                            high:
                                              type: number
                                          required:
                                            - low
                                            - expected
                                            - high
                                          additionalProperties: false
                                        engagement:
                                          type: object
                                          properties:
                                            low:
                                              type: number
                                            expected:
                                              type: number
                                            high:
                                              type: number
                                          required:
                                            - low
                                            - expected
                                            - high
                                          additionalProperties: false
                                        buying_intent_comments:
                                          type: object
                                          properties:
                                            low:
                                              type: number
                                            expected:
                                              type: number
                                            high:
                                              type: number
                                          required:
                                            - low
                                            - expected
                                            - high
                                          additionalProperties: false
                                      required:
                                        - views
                                        - likes
                                        - comments
                                      additionalProperties: false
                                      description: >-
                                        Counts, from `relative` and what a usual
                                        post does (see `basis`)
                                    drivers:
                                      type: array
                                      items:
                                        type: object
                                        properties:
                                          label:
                                            type: string
                                          impact:
                                            type: number
                                            description: >-
                                              How much it moved expected engagement:
                                              0.25 is +25%
                                          detail:
                                            description: >-
                                              What the post has for it, e.g. "2
                                              hashtags"
                                            type:
                                              - string
                                              - 'null'
                                        required:
                                          - label
                                          - impact
                                          - detail
                                        additionalProperties: false
                                      description: >-
                                        What in the content moved the
                                        prediction, largest first
                                    history_posts:
                                      type: integer
                                      minimum: -9007199254740991
                                      maximum: 9007199254740991
                                      description: >-
                                        How many of the account's past posts
                                        here were read
                                  required:
                                    - platform
                                    - model_version
                                    - percentile
                                    - relative
                                    - predicted
                                    - drivers
                                    - history_posts
                                  additionalProperties: false
                              total:
                                type: object
                                properties:
                                  views:
                                    type: object
                                    properties:
                                      low:
                                        type: number
                                      expected:
                                        type: number
                                      high:
                                        type: number
                                    required:
                                      - low
                                      - expected
                                      - high
                                    additionalProperties: false
                                  likes:
                                    type: object
                                    properties:
                                      low:
                                        type: number
                                      expected:
                                        type: number
                                      high:
                                        type: number
                                    required:
                                      - low
                                      - expected
                                      - high
                                    additionalProperties: false
                                  comments:
                                    type: object
                                    properties:
                                      low:
                                        type: number
                                      expected:
                                        type: number
                                      high:
                                        type: number
                                    required:
                                      - low
                                      - expected
                                      - high
                                    additionalProperties: false
                                  engagement:
                                    type: object
                                    properties:
                                      low:
                                        type: number
                                      expected:
                                        type: number
                                      high:
                                        type: number
                                    required:
                                      - low
                                      - expected
                                      - high
                                    additionalProperties: false
                                required:
                                  - views
                                  - likes
                                  - comments
                                additionalProperties: false
                              likely_comments:
                                type: array
                                items:
                                  type: object
                                  properties:
                                    author:
                                      type: string
                                    text:
                                      type: string
                                    tone:
                                      type: string
                                      enum:
                                        - positive
                                        - question
                                        - neutral
                                        - critical
                                  required:
                                    - author
                                    - text
                                    - tone
                                  additionalProperties: false
                                description: >-
                                  Simulated: the comments viewers are likely to
                                  leave
                              tips:
                                type: array
                                items:
                                  type: string
                                description: Concrete changes that would raise reach
                            required:
                              - overall_score
                              - overall_score_parts
                              - basis
                              - quality
                              - platforms
                              - total
                              - likely_comments
                              - tips
                            additionalProperties: false
                          - type: 'null'
                        description: Set once `status` is `succeeded`
                    required:
                      - id
                      - status
                      - format
                      - platforms
                      - created_at
                      - completed_at
                      - error
                      - price_cents
                      - charged
                      - result
                    additionalProperties: false
                required:
                  - data
                additionalProperties: false
        '400':
          description: Validation error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '409':
          description: Conflict (incl. idempotency conflicts)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '429':
          description: Rate limited
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
components:
  schemas:
    ErrorEnvelope:
      type: object
      properties:
        error:
          type: object
          required:
            - code
            - message
          properties:
            code:
              type: string
            message:
              type: string
            fields:
              type: object
              additionalProperties:
                type: string
            doc_url:
              type: string
              format: uri
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.