---
title: "The cross-client overview (behind PARTNER_OVERVIEW_ENABLED)"
method: GET
path: "/partner/overview"
tags: ["Partners"]
---

# The cross-client overview (behind PARTNER_OVERVIEW_ENABLED)

`GET /partner/overview`

## Request

- Base URL: `https://api.greentally.ai/v1`
- URL: `https://api.greentally.ai/v1/partner/overview`
- Auth: HTTP bearer

One row per client the caller may see (partner admins every active client, other staff the clients where they hold a grant), for a period preset in UTC calendar months. A row carries emissions by scope (tCO2e, through the same basis as that client's own Overview), months with data, and the work waiting only for the business organizations the access resolver lets the caller read (an active grant; viewer is enough). Otherwise access is none, lockedReason says why, and metrics and work are omitted. Sandboxes are never counted. A client whose reads failed or ran out of time has status unavailable (retry it with clientId); 503 QUERY_TIMEOUT only when every readable client failed. A clientId outside the visible set answers 404. Access is checked on every request; a readable client's figures and work counts may be reused for up to 30 s for the same caller, period and readable organizations. Each read client records partner.overview_viewed in its activity (after the response), at most once per user per hour. 404 for API keys, impersonated sessions and anyone who is not staff of the session's partner, and while PARTNERS_ENABLED or PARTNER_OVERVIEW_ENABLED is off.

## Query parameters

- `period` 'this-year' | 'last-year' | 'last-12-months'
- `clientId` string

## Response `200`

The overview

- PartnerOverviewResponse
  - `data` object, required
    - `generatedAt` string, date-time, required
    - `items` PartnerOverviewClient[], required
      - `access` 'full' | 'partial' | 'none', required
      - `clerkOrganizationId` string, required
      - `creditsThisMonth` integer, required
      - `id` string, required: The client account id
      - `linkedAt` string, date-time, required
      - `lockedReason` 'noGrant' | 'grantNotActive' | 'noReadableOrganizations': Set when access is none
      - `metrics` PartnerOverviewMetrics
        - `dataThrough` string, nullable, required: The last month with data in the period (YYYY-MM)
        - `monthsInPeriod` integer, required
        - `monthsWithData` object, required
          - `any` integer, required
          - `scope1` integer, required
          - `scope2` integer, required
          - `scope3` integer, required
        - `recent` object, required: The last two complete months whatever the period; no data there is a needs-attention signal.
          - `endMonth` string, required
          - `monthsWithData` integer, required
          - `startMonth` string, required
        - `scopes` object, required
          - `scope1` number, double, required
          - `scope2` number, double, required
          - `scope3` number, double, required
          - `unassigned` number, double, required: Rows with no scope label
        - `total` number, double, required
        - `unit` 'tCO2e', required
      - `myRole` 'admin' | 'member' | 'viewer', required
      - `name` string, required
      - `organizations` object, required
        - `readable` integer, required
        - `total` integer, required: The client's active standard business organizations
      - `partnerStaffCount` integer, required
      - `status` 'ok' | 'unavailable', required
      - `work` PartnerOverviewWork
        - `documentsProcessing` integer, required
        - `documentsToReview` integer, required
        - `lastDataChangeAt` string, date-time, nullable, required: The latest upload or source record
        - `periodClose` object, required
          - `available` boolean, required: Period close is on and the client's plan includes it
          - `closedThrough` string, nullable, required: The latest closed month (YYYY-MM); the earliest across the client's organizations
        - `supplierRequests` object, required
          - `open` integer, required: Sent
          - `overdue` integer, required: Open and past the due date
          - `toReview` integer, required: Submitted responses waiting for the client's review
    - `period` PartnerOverviewPeriod, required
      - `endMonth` string, required: YYYY-MM, inclusive
      - `inProgress` boolean, required: The range ends in the current
      - `key` 'this-year' | 'last-year' | 'last-12-months', required
      - `label` string, required
      - `startMonth` string, required: YYYY-MM, inclusive
    - `pool` PartnerPool, required
      - `credits` integer, required
      - `frozen` boolean, required
      - `initialized` boolean, required
    - `truncated` boolean, required: More than 200 clients; the first 200 by name

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `404`: Not Found
- `503`: Every readable client failed (QUERY_TIMEOUT)

## Changes

- **2026-10-13** `7eab940f1dd0`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/greentally/apis/esgai-api/changes/partner/overview/get.md)

---

[API](https://skmtc.dev/greentally/apis/esgai-api.md) · [All operations](https://skmtc.dev/greentally/apis/esgai-api/llms.txt) · [OpenAPI document](https://skmtc.dev/greentally/apis/esgai-api/revisions/7eab940f1dd0?raw)
