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

# Get revenue breakdown

> Where your revenue comes from and how it develops over any date range you choose.

## Filters
| Parameter | Type | Example | Description |
|-----------|------|---------|-------------|
| `startDate` | ISO 8601 date | `2026-01-01` | Start of the range (inclusive). Defaults to 365 days ago |
| `endDate` | ISO 8601 date | `2026-10-11` | End of the range (inclusive). Defaults to today |

`endDate` must be after `startDate`; the range may span at most 3 years. Without parameters the endpoint returns the last 365 days, unchanged from previous behaviour.

## Shape
| Field | Description |
|-------|-------------|
| `range` | The resolved date range: `from`, `to`, `bucketUnit` (hour, day, week or month), and `bucketLabels` (one label per bucket) |
| `daily` | One entry per bucket for the requested range (UTC): revenue, accounts sold and amount paid out |
| `plans` | `months` lists the months or other buckets (oldest first); each `series` entry has a plan's revenue and accounts sold per bucket, highest revenue first |
| `planSeries` | Top 12 plans with revenue per bucket |
| `countryMonths` | Revenue and accounts sold per country for each bucket in `plans.months`, highest revenue first |
| `countrySeries` | Top 12 countries with revenue per bucket |
| `countries` | Revenue, accounts sold and previous-period revenue per country (ISO 3166-1 alpha-2) over the requested range; `country` is null when the trader has not set one |
| `regions` | The same per US state (`CA`, `TX`) and Canadian province (`CA-ON`), with its name |
| `unmappedRegionRevenue` | Revenue in the United States and Canada whose region could not be recognised |

`countries` and `regions` cover the requested range; `previousRevenue` covers an equal-length period just before it. The bucket unit depends on range length: hourly up to 2 days, daily up to 62 days, weekly up to 183 days, monthly beyond (all UTC).

Revenue is the amount paid for each account, or the plan's list price when no price was recorded. Location is the trader's profile country and region. Results refresh at most every 15 minutes.

## Error codes
| HTTP | Code | When |
|------|------|------|
| 400 | `VALIDATION_ERROR` | Invalid date format, end before start, or range exceeds 3 years |
| 401 | `UNAUTHORIZED` | Missing or invalid API key |
| 403 | `FORBIDDEN` | Credentials do not belong to any organization |
| 500 | `REVENUE_BREAKDOWN_ERROR` | Internal error |

## Example

```bash
curl -X GET "https://api.hyperprop.com/platform/v1/organization/analytics/revenue?startDate=2026-07-01&endDate=2026-10-11" \
  -H "X-API-Key: hp_live_your_key_here"
```


**Authentication:** send your organization API key in the `X-API-Key` header.



## OpenAPI

````yaml /api-reference/openapi.json get /v1/organization/analytics/revenue
openapi: 3.0.0
info:
  title: Hyperprop Platform API
  version: 1.0.0
  description: >-
    REST API for the Hyperprop Trading Platform — provision evaluation and
    funded trading accounts, manage traders and plans, react to account
    lifecycle events via signed webhooks, and reconcile billing. Built for prop
    firms integrating from their own backend.


    Authentication, quick start, error handling, idempotency, pagination, custom
    metadata, webhooks, and the MCP connector are documented at
    https://docs.hyperprop.com.
  x-logo:
    url: https://app.hyperprop.com/logo-icon.svg
    altText: Hyperprop
    href: https://hyperprop.com
servers:
  - url: https://api.hyperprop.com/platform
    description: Production
security: []
tags:
  - name: Trading accounts
    description: Create, update, and inspect trading accounts.
  - name: Traders
    description: Look up and update the traders in your organization.
  - name: Trading plans
    description: Define the plans you sell.
  - name: Trading rules
    description: Define how accounts are evaluated.
  - name: Lockouts
    description: Pause and resume trading on an account.
  - name: Payouts
    description: Check payout eligibility and record payouts.
  - name: Purchases
    description: Purchases recorded for your organization.
  - name: Time Machine
    description: Restore accounts to an earlier trading day or instant.
  - name: Webhooks
    description: Register webhook endpoints and inspect deliveries.
  - name: Events
    description: Your organization's event history and real-time event stream.
  - name: Reconciliation
    description: Balances, end-of-day snapshots, and fills for reconciliation.
  - name: Analytics
    description: Organization performance and plan economics.
  - name: Billing
    description: 'Your Hyperprop bill: activity, billing cycles, and forecasts.'
  - name: Team and roles
    description: Manage dashboard access for your staff.
  - name: API keys
    description: Manage your organization's API key.
  - name: Logs and health
    description: API request logs, the audit log, and integration health.
  - name: Organization profile
    description: Your organization's profile and logo.
  - name: Support
    description: Open and follow up on support tickets.
  - name: Partner access
    description: >-
      Read a trader's journal as an approved partner app, with the trader's own
      key.
paths:
  /v1/organization/analytics/revenue:
    get:
      tags:
        - Analytics
      summary: Get revenue breakdown
      description: >-
        Where your revenue comes from and how it develops over any date range
        you choose.


        ## Filters

        | Parameter | Type | Example | Description |

        |-----------|------|---------|-------------|

        | `startDate` | ISO 8601 date | `2026-01-01` | Start of the range
        (inclusive). Defaults to 365 days ago |

        | `endDate` | ISO 8601 date | `2026-10-11` | End of the range
        (inclusive). Defaults to today |


        `endDate` must be after `startDate`; the range may span at most 3 years.
        Without parameters the endpoint returns the last 365 days, unchanged
        from previous behaviour.


        ## Shape

        | Field | Description |

        |-------|-------------|

        | `range` | The resolved date range: `from`, `to`, `bucketUnit` (hour,
        day, week or month), and `bucketLabels` (one label per bucket) |

        | `daily` | One entry per bucket for the requested range (UTC): revenue,
        accounts sold and amount paid out |

        | `plans` | `months` lists the months or other buckets (oldest first);
        each `series` entry has a plan's revenue and accounts sold per bucket,
        highest revenue first |

        | `planSeries` | Top 12 plans with revenue per bucket |

        | `countryMonths` | Revenue and accounts sold per country for each
        bucket in `plans.months`, highest revenue first |

        | `countrySeries` | Top 12 countries with revenue per bucket |

        | `countries` | Revenue, accounts sold and previous-period revenue per
        country (ISO 3166-1 alpha-2) over the requested range; `country` is null
        when the trader has not set one |

        | `regions` | The same per US state (`CA`, `TX`) and Canadian province
        (`CA-ON`), with its name |

        | `unmappedRegionRevenue` | Revenue in the United States and Canada
        whose region could not be recognised |


        `countries` and `regions` cover the requested range; `previousRevenue`
        covers an equal-length period just before it. The bucket unit depends on
        range length: hourly up to 2 days, daily up to 62 days, weekly up to 183
        days, monthly beyond (all UTC).


        Revenue is the amount paid for each account, or the plan's list price
        when no price was recorded. Location is the trader's profile country and
        region. Results refresh at most every 15 minutes.


        ## Error codes

        | HTTP | Code | When |

        |------|------|------|

        | 400 | `VALIDATION_ERROR` | Invalid date format, end before start, or
        range exceeds 3 years |

        | 401 | `UNAUTHORIZED` | Missing or invalid API key |

        | 403 | `FORBIDDEN` | Credentials do not belong to any organization |

        | 500 | `REVENUE_BREAKDOWN_ERROR` | Internal error |


        ## Example


        ```bash

        curl -X GET
        "https://api.hyperprop.com/platform/v1/organization/analytics/revenue?startDate=2026-07-01&endDate=2026-10-11"
        \
          -H "X-API-Key: hp_live_your_key_here"
        ```



        **Authentication:** send your organization API key in the `X-API-Key`
        header.
      operationId: getV1OrganizationAnalyticsRevenue
      parameters:
        - description: >-
            Start of the date range (ISO 8601, inclusive). Defaults to 365 days
            ago.
          name: startDate
          in: query
          schema:
            type: string
            format: date
            example: '2026-01-01'
        - description: End of the date range (ISO 8601, inclusive). Defaults to today.
          name: endDate
          in: query
          schema:
            type: string
            format: date
            example: '2026-10-11'
      responses:
        '200':
          description: Success — the revenue breakdown
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/RevenueBreakdownResponse'
        '400':
          description: >-
            Validation error — invalid date format, end before start, or range
            exceeds 3 years
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/RevenueBreakdownValidationError'
        '401':
          description: Unauthorized — missing or invalid API key
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/Model244'
        '403':
          description: >-
            Forbidden — authenticated user is not associated with any
            organization
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/Model245'
        '500':
          description: Internal error
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/Model246'
      security:
        - X-API-Key: []
components:
  schemas:
    RevenueBreakdownResponse:
      type: object
      properties:
        success:
          type: boolean
          example: true
        data:
          $ref: '#/components/schemas/Model243'
    RevenueBreakdownValidationError:
      type: object
      properties:
        statusCode:
          type: number
          example: 400
        error:
          type: string
          example: Bad Request
        message:
          type: string
          example: endDate must be after startDate
        code:
          type: string
          example: VALIDATION_ERROR
    Model244:
      type: object
      properties:
        statusCode:
          type: number
          example: 401
        error:
          type: string
          example: Unauthorized
        message:
          type: string
          example: Invalid or expired token
        code:
          type: string
          example: UNAUTHORIZED
    Model245:
      type: object
      properties:
        statusCode:
          type: number
          example: 403
        error:
          type: string
          example: Forbidden
        message:
          type: string
          example: You do not belong to any organization
        code:
          type: string
          example: FORBIDDEN
    Model246:
      type: object
      properties:
        statusCode:
          type: number
          example: 500
        error:
          type: string
          example: Internal Server Error
        message:
          type: string
          example: An error occurred fetching the revenue breakdown
        code:
          type: string
          example: REVENUE_BREAKDOWN_ERROR
    Model243:
      type: object
      properties:
        organizationId:
          type: string
          example: a6fcc0ce-eb28-4f43-b256-96a3144b0d34
        organizationName:
          type: string
          example: Acme Trading
        generatedAt:
          type: string
          example: '2026-10-11T10:30:00.000Z'
          x-format:
            isoDate: true
        range:
          $ref: '#/components/schemas/RevenueRange'
        daily:
          $ref: '#/components/schemas/daily'
        plans:
          $ref: '#/components/schemas/Model240'
        planSeries:
          $ref: '#/components/schemas/RevenuePlanBucketSeries'
        countries:
          $ref: '#/components/schemas/countries'
        countryMonths:
          $ref: '#/components/schemas/countryMonths'
        countrySeries:
          $ref: '#/components/schemas/RevenueCountrySeries'
        regions:
          $ref: '#/components/schemas/regions'
        unmappedRegionRevenue:
          $ref: '#/components/schemas/unmappedRegionRevenue'
    RevenueRange:
      type: object
      description: The resolved date range and bucket configuration
      properties:
        from:
          type: string
          format: date
          example: '2026-01-01'
          description: Start of the range (inclusive)
        to:
          type: string
          format: date
          example: '2026-10-11'
          description: End of the range (inclusive)
        bucketUnit:
          type: string
          enum:
            - hour
            - day
            - week
            - month
          example: day
          description: >-
            Time unit for each bucket: hour (up to 2 days), day (up to 62 days),
            week (up to 183 days), or month (beyond)
        bucketLabels:
          type: array
          items:
            type: string
          example:
            - '2026-01-01'
            - '2026-01-02'
            - '2026-01-03'
          description: >-
            One label per bucket (ISO date for day/week/month, ISO datetime for
            hour)
    daily:
      type: array
      description: Last 730 days, oldest first (UTC)
      items:
        $ref: '#/components/schemas/RevenueDay'
    Model240:
      type: object
      description: Revenue per plan for each of the last 12 months
      properties:
        months:
          $ref: '#/components/schemas/months'
        series:
          $ref: '#/components/schemas/series'
    RevenuePlanBucketSeries:
      type: array
      description: Top 12 plans with revenue per bucket
      items:
        $ref: '#/components/schemas/RevenuePlanBucketEntry'
    countries:
      type: array
      description: Last 365 days per country, highest revenue first
      items:
        $ref: '#/components/schemas/RevenueCountry'
    countryMonths:
      type: array
      description: Per country, revenue and accounts sold for each of the last 12 months
      items:
        $ref: '#/components/schemas/RevenueCountryMonths'
    RevenueCountrySeries:
      type: array
      description: Top 12 countries with revenue per bucket
      items:
        $ref: '#/components/schemas/RevenueCountrySeriesEntry'
    regions:
      type: array
      description: Last 365 days per US state and Canadian province
      items:
        $ref: '#/components/schemas/RevenueRegion'
    unmappedRegionRevenue:
      type: object
      properties:
        US:
          type: number
          example: 1240
        CA:
          type: number
          example: 0
    RevenueDay:
      type: object
      properties:
        date:
          type: string
          example: '2026-10-10'
        revenue:
          type: number
          example: 12840
        accountsSold:
          type: integer
          example: 96
        paidOut:
          type: number
          example: 4100
    months:
      type: array
      example:
        - 2025-11
        - 2025-12
      items:
        type: string
    series:
      type: array
      items:
        $ref: '#/components/schemas/RevenuePlanSeries'
    RevenuePlanBucketEntry:
      type: object
      properties:
        planId:
          type: string
          example: 7cc40c27-aa09-4f6a-a52d-de7d7beaa15b
        planName:
          type: string
          example: 50K Evaluation
        values:
          type: array
          items:
            type: number
          example:
            - 12500
            - 14200
            - 11800
          description: Revenue per bucket, matching bucketLabels order
    RevenueCountry:
      type: object
      properties:
        country:
          type: string
          example: US
        revenue:
          type: number
          example: 3483948
        accountsSold:
          type: integer
          example: 21757
        previousRevenue:
          type: number
          example: 2210400
    RevenueCountryMonths:
      type: object
      properties:
        country:
          type: string
          example: US
        revenue:
          $ref: '#/components/schemas/Model241'
        accountsSold:
          $ref: '#/components/schemas/Model242'
    RevenueCountrySeriesEntry:
      type: object
      properties:
        country:
          type: string
          example: US
          description: >-
            ISO 3166-1 alpha-2 country code; null when the trader has not set
            one
        values:
          type: array
          items:
            type: number
          example:
            - 45000
            - 52000
            - 48000
          description: Revenue per bucket, matching bucketLabels order
    RevenueRegion:
      type: object
      properties:
        country:
          $ref: '#/components/schemas/country'
        id:
          type: string
          example: TX
        name:
          type: string
          example: Texas
        revenue:
          type: number
          example: 301500
        accountsSold:
          type: integer
          example: 1877
        previousRevenue:
          type: number
          example: 198000
    RevenuePlanSeries:
      type: object
      properties:
        planId:
          type: string
          example: 6f1c2b4e-0b0a-4c55-9d1e-2f7b3c9a1d10
        name:
          type: string
          example: 50K Evaluation
        revenue:
          $ref: '#/components/schemas/Model238'
        accountsSold:
          $ref: '#/components/schemas/Model239'
    Model241:
      type: array
      example:
        - 268400
        - 301250
      items:
        type: number
    Model242:
      type: array
      example:
        - 1680
        - 1902
      items:
        type: integer
    country:
      type: string
      example: US
      enum:
        - US
        - CA
    Model238:
      type: array
      example:
        - 18200
        - 20450
      items:
        type: number
    Model239:
      type: array
      example:
        - 182
        - 205
      items:
        type: integer
  securitySchemes:
    X-API-Key:
      type: apiKey
      name: X-API-Key
      in: header
      description: >-
        Organization API key. Format: "hp_live_{key}". Organization admins
        manage the key in the dashboard.

````

## Related topics

- [Get monthly firm P&L (revenue vs payouts vs platform costs)](/platform-api/analytics/get-monthly-firm-p&l-revenue-vs-payouts-vs-platform-costs.md)
- [Get organization analytics](/platform-api/analytics/get-organization-analytics.md)
- [Changelog](/changelog.md)
- [Get per-plan unit economics and sustainability flags](/platform-api/analytics/get-per-plan-unit-economics-and-sustainability-flags.md)
- [Get hourly activity by weekday](/platform-api/analytics/get-hourly-activity-by-weekday.md)


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