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

# Get analytics

> Read measured owner-scoped operation and campaign aggregates.

Use `analytics:read`. Supply `agentId`, an optional `operationId`, and optional ISO `from` and `to` timestamps. The window is `[from, to)`, defaults to the last 30 days, and may span at most 90 days.

The response reports activity by event type, campaigns created in the window by current state, canonical deal-linked execution attempts by status, and settled transaction amounts grouped by currency. Retries count as separate execution attempts. Amounts are decimal currency-unit strings, not integer cents; budgets are not revenue.

`coverage` states what is measured. Discovery impressions, latency, and ad delivery are currently `null`: these datasets are not aggregated here. Do not render an unavailable metric as zero or infer completed outcomes from accepted requests.


## OpenAPI

````yaml openapi-publish.json GET /v3/operate/analytics
openapi: 3.1.0
info:
  title: Publish
  version: 3.0.0
  description: >-
    Owner-authorized agent and operation publishing, operating decisions and
    analytics, and durable campaign management. Publishing records does not
    bypass independent execution verification. Campaign submission requests
    review; it does not activate delivery or authorize spending.
servers:
  - url: https://api.darwin.so/api
security: []
paths:
  /v3/operate/analytics:
    get:
      tags:
        - Operate
      summary: Get analytics
      description: >-
        Read real owner-scoped aggregates for a half-open [from,to) window of at
        most 90 days (default 30 days). Includes activity, campaigns, canonical
        deal-linked execution attempts, and settled amounts grouped by currency.
        Retries count as separate attempts. Metrics not collected are null in
        coverage, never invented as zero.
      operationId: get_publish_analytics
      parameters:
        - name: agentId
          in: query
          required: true
          schema:
            type: string
            minLength: 1
            maxLength: 200
        - name: operationId
          in: query
          required: false
          schema:
            type: string
            minLength: 1
            maxLength: 200
        - name: from
          in: query
          required: false
          schema:
            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)))$
        - name: to
          in: query
          required: false
          schema:
            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)))$
      responses:
        '200':
          description: >-
            Current owner-scoped result. A mutation retry returns its saved
            response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  analytics:
                    type: object
                    properties:
                      agentId:
                        type: string
                      operationId:
                        anyOf:
                          - type: string
                          - type: 'null'
                      from:
                        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))$
                      to:
                        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))$
                      generatedAt:
                        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))$
                      activities:
                        type: array
                        items:
                          type: object
                          properties:
                            eventType:
                              type: string
                            count:
                              type: integer
                              minimum: -9007199254740991
                              maximum: 9007199254740991
                          required:
                            - eventType
                            - count
                          additionalProperties: false
                      campaigns:
                        type: array
                        items:
                          type: object
                          properties:
                            status:
                              type: string
                            count:
                              type: integer
                              minimum: -9007199254740991
                              maximum: 9007199254740991
                          required:
                            - status
                            - count
                          additionalProperties: false
                      executionAttempts:
                        type: array
                        items:
                          type: object
                          properties:
                            status:
                              type: string
                            count:
                              type: integer
                              minimum: -9007199254740991
                              maximum: 9007199254740991
                          required:
                            - status
                            - count
                          additionalProperties: false
                      settledTransactions:
                        type: array
                        items:
                          type: object
                          properties:
                            currency:
                              type: string
                            count:
                              type: integer
                              minimum: -9007199254740991
                              maximum: 9007199254740991
                            providerSubtotal:
                              type: string
                            applicationFees:
                              type: string
                            networkFees:
                              type: string
                          required:
                            - currency
                            - count
                            - providerSubtotal
                            - applicationFees
                            - networkFees
                          additionalProperties: false
                      coverage:
                        type: object
                        properties:
                          execution:
                            type: string
                          revenue:
                            type: string
                          discoveryImpressions:
                            type: 'null'
                          latency:
                            type: 'null'
                          advertisingDelivery:
                            type: 'null'
                        required:
                          - execution
                          - revenue
                          - discoveryImpressions
                          - latency
                          - advertisingDelivery
                        additionalProperties: false
                    required:
                      - agentId
                      - operationId
                      - from
                      - to
                      - generatedAt
                      - activities
                      - campaigns
                      - executionAttempts
                      - settledTransactions
                      - coverage
                    additionalProperties: false
                required:
                  - analytics
                additionalProperties: false
        '400':
          description: Invalid request.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type:
                      - string
                      - array
                  code:
                    type: string
        '401':
          description: Missing or invalid credentials.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type:
                      - string
                      - array
                  code:
                    type: string
        '403':
          description: Insufficient scope or user authority.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type:
                      - string
                      - array
                  code:
                    type: string
        '404':
          description: Resource is absent or not owned by this caller.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type:
                      - string
                      - array
                  code:
                    type: string
        '409':
          description: Revision, handle, idempotency, or decision conflict.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type:
                      - string
                      - array
                  code:
                    type: string
        '503':
          description: Canonical product storage or migration is unavailable.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type:
                      - string
                      - array
                  code:
                    type: string
      security:
        - apiKey: []
        - apiKeyBearer: []
components:
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: x-api-key
    apiKeyBearer:
      type: http
      scheme: bearer
      description: A Darwin API key supplied as an Authorization Bearer token.

````

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