---
title: "By connector"
method: GET
path: "/v1/analytics/connectors"
tags: ["Analytics"]
---

# By connector

`GET /v1/analytics/connectors`

## Request

- Base URL: `https://api.subscriby.net`
- URL: `https://api.subscriby.net/v1/analytics/connectors`
- Auth: HTTP bearer

Members, access and revenue per connector: one row for every connector the scope's projects run or ever granted access on. The figures behind the dashboards' **By Connector** panel.

```bash
curl "https://api.subscriby.net/v1/analytics/connectors?project_id=$PROJECT_ID&period=30d" \
  -H "Authorization: Bearer $SUBSCRIBY_TOKEN"
```

- `installations` counts the live, not uninstalled, installations of the connector in the scope; `members` the members holding at least one account linked on it; `members_linked_in_window` those who linked one inside the window.
- `live_grants` and `pending_grants` read the access ledger now (pending covers `pending`, `pending_identity` and `held`); `granted_in_window` and `revoked_in_window` count the ledger's moves inside the window.
- `gross_usd` is every settled payment in the window whose purchase granted access on the connector, converted to USD; `share_percent` is its part of `total_gross_usd`. A purchase that grants access on two connectors counts toward both, so shares can exceed 100 in total; `attribution` says so in the creator's language.
- The filter allow-lists (`plan_ids`, `statuses`, `payment_method_ids`) do not apply here: installations and linked accounts are not subscriptions.

## Query parameters

- `project_id` string, uuid
- `period` string
- `from` string, date
- `to` string, date

## Response `200`

One row per connector: installations, members, grants, revenue and share.

- object
  - `data` object, required: The response's payload.
    - `range` object, required: The window the preset resolved to.
      - `from` string, required: The first day of the window, `YYYY-MM-DD`.
      - `to` string, required: The last day of the window, `YYYY-MM-DD`.
    - `total_gross_usd` number, required: Every settled payment in the window, in USD; the base `share_percent` is measured against.
    - `attribution` 'A purchase that grants access on two connectors counts toward both.', required: One sentence, in the creator's language, saying that a purchase granting access on two connectors counts toward both.
    - `connectors` object[], required: One row per connector the scope's projects run or ever granted access on.
      - `key` string, required: The connector's key.
      - `name` string, required: The connector's display name.
      - `installations` integer, required: Live, not uninstalled, installations of the connector in the scope.
      - `members` integer, required: Members holding at least one account linked on the connector.
      - `members_linked_in_window` integer, required: Members who linked an account on it inside the window.
      - `live_grants` integer, required: Access ledger rows on the connector that are granted right now.
      - `pending_grants` integer, required: Ledger rows waiting to be issued: `pending`, `pending_identity` or `held`.
      - `granted_in_window` integer, required: Ledger rows that became granted inside the window.
      - `revoked_in_window` integer, required: Ledger rows that were revoked inside the window.
      - `gross_usd` number, required: Settled payments in the window whose purchase granted access on the connector, converted to USD.
      - `transactions` union, required: How many such payments there were.
        - string
        - 0
      - `share_percent` number, required: `gross_usd` as a part of `total_gross_usd`; the shares can exceed 100 in total.
  - `meta` object, required: The request's window and scope, echoed back.
    - `period` string, required: The preset the window resolved from, as requested.
    - `project_id` string, nullable, required: The project the figures were scoped to, or `null` for every project the token may see.

## Other responses

- `401`: `AUTHENTICATION_REQUIRED`: the request carries no bearer token, or one that is revoked, malformed, or minted for another environment (an `sbt_test_` token on production).
- `403`: `TOKEN_MISSING_ABILITY`: the token is valid but does not carry the ability this endpoint requires; `error.context.required_ability` names the one to grant. An endpoint that also checks who owns a row or which tier the account is on answers `FORBIDDEN`, `TEAM_TIER_REQUIRED` or `CONNECTOR_TIER_REQUIRED` with the same status, and says so in its own description.
- `429`: `RATE_LIMITED`: the token has spent its 300 requests a minute or 10,000 an hour; `Retry-After` says when the next one is accepted.

---

[API](https://skmtc.dev/memberpass/apis/subscriby-rest-api.md) · [All operations](https://skmtc.dev/memberpass/apis/subscriby-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/memberpass/apis/subscriby-rest-api/revisions/59c4df91d764?raw)
