# Get one client's usage (/docs/api-reference/reseller-usage/getResellerClientUsage)

> One client's statement for a period: its spend by type, its calls broken down by day, agent, campaign, number and direction, the numbers and channels it bought, and the margin you made on it.

> **Reseller accounts only.** [Request access](https://omnidim.io/contact-us?reason=reseller_api&lock=1).

**GET** `/reseller/usage/clients/{organization_id}`

One client's statement for a period: its spend by type, its calls
broken down by day, agent, campaign, number and direction, the numbers
and channels it bought, and the margin you made on it.

Takes the same `month`, or `date_from` and `date_to`, as
`GET /reseller/usage`. All amounts are in US dollars, at the rates
you set for the client. Minutes are billable minutes. Each breakdown
lists the biggest spend first, and `by_day` runs oldest first.

Who may call: the reseller account owner or an admin. A client that is
not one of your direct clients gets `404`, the same answer as one that
does not exist.

```yaml
operationId: getResellerClientUsage
parameters:
  - name: organization_id
    in: path
    required: true
    schema:
      type: integer
    description: The client organization, as listed by `GET /reseller/organizations`.
  - name: month
    in: query
    required: false
    schema:
      type: string
      example: 2026-09
    description: A calendar month, as `YYYY-MM`.
  - name: date_from
    in: query
    required: false
    schema:
      type: string
      format: date
    description: First day of a custom range, as `YYYY-MM-DD`. Send with `date_to`.
  - name: date_to
    in: query
    required: false
    schema:
      type: string
      format: date
    description: Last day of a custom range, as `YYYY-MM-DD`. Send with `date_from`.
responses:
  '200':
    description: The client's usage and your margin on it for the period.
    content:
      application/json:
        schema:
          type: object
          properties:
            organization_id:
              type: integer
            name:
              type: string
            date_from:
              type: string
              format: date
            date_to:
              type: string
              format: date
            timezone:
              type: string
            currency:
              type: string
              description: Always `USD`.
            balance:
              type: number
              description: The client's balance now.
            calls:
              type: integer
            summary:
              type: object
              description: |
                Spend by type. `voice_ai` and `telephony` carry `minutes`
                and `amount`. `phone_numbers`, `channels`, `call_audit`,
                `asr_eval`, `whatsapp`, `sms`, `email` and
                `channel_renewal` carry `count` and `amount`. `addons` is
                one line per add-on. `whatsapp_activity` counts incoming
                messages and active chats. `total_amount` is the sum of
                the spend.
              additionalProperties: true
            margin:
              type: object
              properties:
                revenue:
                  type: number
                  description: What the client paid you for credit in the period.
                wholesale_cost:
                  type: number
                  description: What that credit cost you.
                realized_margin:
                  type: number
                  description: '`revenue` minus `wholesale_cost`.'
                bonus:
                  type: number
                  description: Bonus credit you funded on the client's own purchases.
            by_day:
              type: array
              items:
                type: object
                description: |
                  One line of a client's calls in a period. Each breakdown names its line
                  by one key: `day`, `agent_id`, `campaign_id`, `phone_number` or
                  `direction`.
                properties:
                  day:
                    type: string
                    format: date
                  agent_id:
                    type: integer
                    nullable: true
                  campaign_id:
                    type: integer
                    nullable: true
                  phone_number:
                    type: string
                  direction:
                    type: string
                  name:
                    type: string
                    description: The agent, campaign, number or direction. Not on `by_day` lines.
                  calls:
                    type: integer
                  minutes:
                    type: number
                    description: Billable Voice AI minutes.
                  amount:
                    type: number
                    description: Voice AI spend.
                  telephony_minutes:
                    type: number
                  telephony_amount:
                    type: number
                  total_amount:
                    type: number
            by_agent:
              type: array
              items:
                type: object
                description: |
                  One line of a client's calls in a period. Each breakdown names its line
                  by one key: `day`, `agent_id`, `campaign_id`, `phone_number` or
                  `direction`.
                properties:
                  day:
                    type: string
                    format: date
                  agent_id:
                    type: integer
                    nullable: true
                  campaign_id:
                    type: integer
                    nullable: true
                  phone_number:
                    type: string
                  direction:
                    type: string
                  name:
                    type: string
                    description: The agent, campaign, number or direction. Not on `by_day` lines.
                  calls:
                    type: integer
                  minutes:
                    type: number
                    description: Billable Voice AI minutes.
                  amount:
                    type: number
                    description: Voice AI spend.
                  telephony_minutes:
                    type: number
                  telephony_amount:
                    type: number
                  total_amount:
                    type: number
            by_campaign:
              type: array
              description: '`campaign_id` is `null` for calls outside a campaign.'
              items:
                type: object
                description: |
                  One line of a client's calls in a period. Each breakdown names its line
                  by one key: `day`, `agent_id`, `campaign_id`, `phone_number` or
                  `direction`.
                properties:
                  day:
                    type: string
                    format: date
                  agent_id:
                    type: integer
                    nullable: true
                  campaign_id:
                    type: integer
                    nullable: true
                  phone_number:
                    type: string
                  direction:
                    type: string
                  name:
                    type: string
                    description: The agent, campaign, number or direction. Not on `by_day` lines.
                  calls:
                    type: integer
                  minutes:
                    type: number
                    description: Billable Voice AI minutes.
                  amount:
                    type: number
                    description: Voice AI spend.
                  telephony_minutes:
                    type: number
                  telephony_amount:
                    type: number
                  total_amount:
                    type: number
            by_number:
              type: array
              items:
                type: object
                description: |
                  One line of a client's calls in a period. Each breakdown names its line
                  by one key: `day`, `agent_id`, `campaign_id`, `phone_number` or
                  `direction`.
                properties:
                  day:
                    type: string
                    format: date
                  agent_id:
                    type: integer
                    nullable: true
                  campaign_id:
                    type: integer
                    nullable: true
                  phone_number:
                    type: string
                  direction:
                    type: string
                  name:
                    type: string
                    description: The agent, campaign, number or direction. Not on `by_day` lines.
                  calls:
                    type: integer
                  minutes:
                    type: number
                    description: Billable Voice AI minutes.
                  amount:
                    type: number
                    description: Voice AI spend.
                  telephony_minutes:
                    type: number
                  telephony_amount:
                    type: number
                  total_amount:
                    type: number
            by_direction:
              type: array
              items:
                type: object
                description: |
                  One line of a client's calls in a period. Each breakdown names its line
                  by one key: `day`, `agent_id`, `campaign_id`, `phone_number` or
                  `direction`.
                properties:
                  day:
                    type: string
                    format: date
                  agent_id:
                    type: integer
                    nullable: true
                  campaign_id:
                    type: integer
                    nullable: true
                  phone_number:
                    type: string
                  direction:
                    type: string
                  name:
                    type: string
                    description: The agent, campaign, number or direction. Not on `by_day` lines.
                  calls:
                    type: integer
                  minutes:
                    type: number
                    description: Billable Voice AI minutes.
                  amount:
                    type: number
                    description: Voice AI spend.
                  telephony_minutes:
                    type: number
                  telephony_amount:
                    type: number
                  total_amount:
                    type: number
            purchases:
              type: object
              description: |
                Each phone number rental and channel purchase in the
                period. `date` is the day it was paid, in `timezone`.
              properties:
                numbers:
                  type: array
                  items:
                    type: object
                    properties:
                      label:
                        type: string
                      date:
                        type: string
                        format: date
                        nullable: true
                      amount:
                        type: number
                channels:
                  type: array
                  items:
                    type: object
                    properties:
                      label:
                        type: string
                      date:
                        type: string
                        format: date
                        nullable: true
                      amount:
                        type: number
                      num_channels:
                        type: integer
        example:
          organization_id: 5678
          name: Demo Client
          date_from: '2026-09-01'
          date_to: '2026-09-30'
          timezone: Asia/Kolkata
          currency: USD
          balance: 38.12
          calls: 380
          summary:
            voice_ai:
              minutes: 412.5
              amount: 61.88
            telephony:
              minutes: 0
              amount: 0
            phone_numbers:
              count: 1
              amount: 3
            channels:
              count: 0
              amount: 0
            total_amount: 64.88
          margin:
            revenue: 100
            wholesale_cost: 70
            realized_margin: 30
            bonus: 0
          by_agent:
            - agent_id: 901
              name: Front desk
              calls: 380
              minutes: 412.5
              amount: 61.88
              telephony_minutes: 0
              telephony_amount: 0
              total_amount: 61.88
  '400':
    description: The period is not a valid month or day range, or spans more than 366 days.
    content:
      application/json:
        schema:
          type: object
          properties:
            error:
              type: string
              description: Machine-readable error code.
            error_description:
              type: string
              description: Human-readable explanation.
            code:
              type: string
              description: |
                Stable, specific reason. Present on the newer endpoints (Voice
                cloning, WhatsApp); older endpoints return only `error`.
            request_id:
              type: string
              description: |
                Correlates this response with the server log. Present alongside
                `code`. Also sent as the `X-Request-Id` header.
  '403':
    description: The key is not a reseller's, or not the owner or an admin.
    content:
      application/json:
        schema:
          type: object
          properties:
            error:
              type: string
              description: Machine-readable error code.
            error_description:
              type: string
              description: Human-readable explanation.
            code:
              type: string
              description: |
                Stable, specific reason. Present on the newer endpoints (Voice
                cloning, WhatsApp); older endpoints return only `error`.
            request_id:
              type: string
              description: |
                Correlates this response with the server log. Present alongside
                `code`. Also sent as the `X-Request-Id` header.
  '404':
    description: The organization is not one of your direct clients.
    content:
      application/json:
        schema:
          type: object
          properties:
            error:
              type: string
              description: Machine-readable error code.
            error_description:
              type: string
              description: Human-readable explanation.
            code:
              type: string
              description: |
                Stable, specific reason. Present on the newer endpoints (Voice
                cloning, WhatsApp); older endpoints return only `error`.
            request_id:
              type: string
              description: |
                Correlates this response with the server log. Present alongside
                `code`. Also sent as the `X-Request-Id` header.
        example:
          error: not_found
          error_description: Client organization not found.
          code: client_not_found
          request_id: req_5d9a1f3e8b02
```

**curl**

```bash
curl -X GET "https://backend.omnidim.io/api/v1/reseller/usage/clients/{organization_id}?month=2026-09" \
  -H "Authorization: Bearer $OMNIDIM_API_KEY"
```