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

# Measure watched account

> Measure a watched account's usual reach and proven hits now. Reads up to 50 recent posts, takes the median of the mature ones and keeps up to 12 that beat it. Charged like the dashboard's Measure now: one watcher scrape at the provider's measured cost when a paid source counted the account (YouTube is free). A measurement under an hour old is returned as is (`measured: false`) and not charged again. A refusal (out of credits, no data key) is stored and read back under `competitor.performance.reason`. Send an empty JSON object.



## OpenAPI

````yaml /openapi.json post /v1/competitors/{competitorId}/measure
openapi: 3.1.0
info:
  title: Sigmora API
  version: 1.0.0
  description: >-
    The priced, versioned public API. Every call authenticates with a workspace
    API key (`Authorization: Bearer sk_live_…`), names the project it files its
    output under, and reports what it cost. `GET /v1/capabilities` answers what
    this deployment can serve right now and at what price; anything it reports
    as unavailable answers 503 `capability_unavailable` rather than 404.
servers:
  - url: https://api.sigmora.org
security:
  - bearerAuth: []
tags:
  - name: Meta
    description: What this deployment serves, what it costs, and what you have spent.
  - name: Projects
    description: The container every capability files its output under.
  - name: Sessions
    description: Durable bindings between an external harness session and one project.
  - name: Assets
    description: 'Project media: direct-to-storage uploads, imports, ingest and transcripts.'
  - name: Jobs
    description: Where every asynchronous capability is collected, whatever produced it.
  - name: Text
    description: Scripts, research, articles, translation and question sets.
  - name: Video
    description: Narrated renders, footage edits, shorts and moment selection.
  - name: UGC
    description: >-
      Creator-led vertical videos: AI creators, their faces and voices, frames
      and clips.
  - name: Editing
    description: >-
      Sigma, the editor: conversational turns, granular transcript edits,
      approvals.
  - name: 3D
    description: Animated 3D renders from a description or a photograph.
  - name: Image
    description: Thumbnails, sized for the platform they are posted to.
  - name: Audio
    description: Generated music and audio engineering in Audiotool projects.
  - name: Publishing
    description: Connected destinations and queued posts.
  - name: Webhooks
    description: Signed, at-least-once delivery of job and publishing events.
  - name: Workflows
    description: Context snapshots, versioned recipes, costed proposals and their runs.
  - name: Agents
    description: Describe an outcome and let a bounded plan of capabilities run.
  - name: Research
    description: >-
      Observed hooks, creator outliers and production briefs from saved
      analyses.
  - name: Themes
    description: The canonical content taxonomy, and the niche profiles built on it.
  - name: Signals
    description: Evidence-backed trends and scored viral content.
  - name: Discovery
    description: Compiled watch plans, their runs, and source freshness.
  - name: Watchlist
    description: 'Accounts you watch: their usual reach and the posts that beat it.'
  - name: Performance
    description: Your own channels' videos against their usual, and fixes to live videos.
  - name: Autopilot
    description: The durable trend-to-distribution workflow and its checkpoints.
  - name: Campaigns
    description: Distribution records shared by the API, the dashboard and autopilot.
  - name: Brands
    description: >-
      Cross-platform identities with their own voice, rules and publishing
      commitments.
  - name: Products
    description: What a campaign promotes.
paths:
  /v1/competitors/{competitorId}/measure:
    post:
      tags:
        - Watchlist
      summary: Measure watched account
      description: >-
        Measure a watched account's usual reach and proven hits now. Reads up to
        50 recent posts, takes the median of the mature ones and keeps up to 12
        that beat it. Charged like the dashboard's Measure now: one watcher
        scrape at the provider's measured cost when a paid source counted the
        account (YouTube is free). A measurement under an hour old is returned
        as is (`measured: false`) and not charged again. A refusal (out of
        credits, no data key) is stored and read back under
        `competitor.performance.reason`. Send an empty JSON object.
      operationId: competitors.measure
      parameters:
        - name: competitorId
          in: path
          required: true
          description: '`id` from GET /v1/competitors.'
          schema:
            type: string
            minLength: 1
            maxLength: 200
            description: '`id` from GET /v1/competitors.'
        - name: idempotency-key
          in: header
          required: true
          description: >-
            Required stable id for this request; reuse it after a timeout to
            receive the same answer.
          schema:
            type: string
            minLength: 1
            maxLength: 255
            description: >-
              Required stable id for this request; reuse it after a timeout to
              receive the same answer.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties: {}
              additionalProperties: false
            example: {}
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    const: true
                  competitor:
                    type: object
                    properties:
                      id:
                        type: string
                      channelIds:
                        type: array
                        items:
                          type: string
                      handle:
                        type: string
                      platform:
                        type: string
                      performance:
                        anyOf:
                          - type: object
                            properties:
                              status:
                                type: string
                                enum:
                                  - measured
                                  - insufficient-history
                                  - unavailable
                                  - failed
                              metric:
                                anyOf:
                                  - type: string
                                    enum:
                                      - views
                                      - likes
                                  - type: 'null'
                              median:
                                type:
                                  - number
                                  - 'null'
                              sampleSize:
                                type: number
                              postsRead:
                                type: number
                              refreshedAt:
                                type: string
                              reason:
                                type:
                                  - string
                                  - 'null'
                              hits:
                                type: array
                                items:
                                  type: object
                                  properties:
                                    externalUploadId:
                                      type: string
                                    url:
                                      type: string
                                    title:
                                      type: string
                                    outlierRatio:
                                      type: number
                                      description: >-
                                        Views (or likes) divided by the account
                                        median.
                                  required:
                                    - externalUploadId
                                    - url
                                    - title
                                    - outlierRatio
                                  additionalProperties: {}
                            required:
                              - status
                              - metric
                              - median
                              - sampleSize
                              - postsRead
                              - refreshedAt
                              - reason
                              - hits
                            additionalProperties: {}
                          - type: 'null'
                        description: >-
                          The account's usual reach and up to 12 proven hits;
                          null until it is first measured.
                    required:
                      - id
                      - channelIds
                      - handle
                      - platform
                    additionalProperties: {}
                  measured:
                    type: boolean
                    description: >-
                      False when a measurement under an hour old was returned
                      without measuring again.
                required:
                  - success
                  - competitor
                  - measured
                additionalProperties: {}
        '400':
          description: 'Failure. `code` is one of: invalid_request.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: 'Failure. `code` is one of: unauthorized.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '402':
          description: 'Failure. `code` is one of: insufficient_credits, budget_capped.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: 'Failure. `code` is one of: forbidden, origin_not_allowed.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: 'Failure. `code` is one of: not_found.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: 'Failure. `code` is one of: conflict.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: 'Failure. `code` is one of: rate_limited.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: 'Failure. `code` is one of: upstream_error, internal_error.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '503':
          description: >-
            Failure. `code` is one of: capability_unavailable,
            upstream_unavailable.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    Error:
      type: object
      required:
        - success
        - error
        - code
      properties:
        success:
          const: false
        error:
          type: string
          description: >-
            Human-readable. Copy may change between releases — do not match on
            it.
        code:
          type: string
          enum:
            - invalid_request
            - unauthorized
            - forbidden
            - origin_not_allowed
            - not_found
            - conflict
            - payload_too_large
            - insufficient_credits
            - budget_capped
            - content_not_cleared
            - rate_limited
            - capability_unavailable
            - upstream_unavailable
            - upstream_error
            - internal_error
          description: Stable machine-readable cause. Branch on this.
        details:
          description: Optional structured context, e.g. the credits shortfall.
        requestId:
          type: string
          description: >-
            Identifies this request in our logs. Include it when you contact
            support.
        timestamp:
          type: string
          format: date-time
          description: When the failure was produced.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: A workspace API key.

````

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