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

# Get Current Install

> Retrieve the install your platform token is scoped to: status, granted scopes, PII consent, and the platform app it belongs to.

Returns the [install](/docs/developers/annotation-platforms/consent-and-installs) the calling token belongs to. Use it as a connectivity check after the customer pastes in their token, and to confirm which scopes and PII consent you actually hold before relying on them.

**Requirements:** any valid platform token — no specific scope. (Like every Platform API call, it still requires a live token, an `ACTIVE` install, an `ACTIVE` platform app, and the annotation-platform feature on the granting employer.)

## Request

No parameters.

## Response

<ResponseField name="install" type="object">
  The current install.

  <Expandable title="Install fields">
    <ResponseField name="id" type="string">
      Install ID. Also delivered as `opentrain_install_id` on the consent return redirect.
    </ResponseField>

    <ResponseField name="status" type="string">
      `ACTIVE` or `REVOKED`. A revoked install's tokens stop authenticating, so in practice you only ever see `ACTIVE` here.
    </ResponseField>

    <ResponseField name="scopes" type="string[]">
      The scopes the customer granted — see the [scope table](/docs/developers/annotation-platforms/consent-and-installs#scopes).
    </ResponseField>

    <ResponseField name="piiConsent" type="boolean">
      Whether the customer checked the explicit Work Email consent box. `participants:email` only takes effect when this is `true`.
    </ResponseField>

    <ResponseField name="organizationId" type="string | null">
      The granting employer's organization ID.
    </ResponseField>

    <ResponseField name="createdAt" type="string">
      ISO 8601 timestamp of the grant.
    </ResponseField>

    <ResponseField name="partnerApp" type="object">
      Your app: `{id, slug, name}`.
    </ResponseField>

    <ResponseField name="token" type="object">
      The token used for this request: `{id, name, scopes}`.
    </ResponseField>
  </Expandable>
</ResponseField>

## Errors

| Status | `code`         | Meaning                                                                                                     |
| ------ | -------------- | ----------------------------------------------------------------------------------------------------------- |
| `401`  | `UNAUTHORIZED` | Missing, invalid, or revoked token                                                                          |
| `403`  | `FORBIDDEN`    | Install or platform app no longer active, or annotation-platform feature disabled for the granting employer |

<RequestExample>
  ```bash curl theme={null}
  curl -sS https://app.opentrain.ai/api/partner/v1/installs/current \
    -H "Authorization: Bearer $OT_PARTNER_TOKEN"
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "install": {
      "id": "<INSTALL_ID>",
      "status": "ACTIVE",
      "scopes": [
        "project-links:read",
        "project-links:write",
        "contracts:read",
        "participants:read",
        "participants:email",
        "webhooks:manage"
      ],
      "piiConsent": true,
      "organizationId": "<ORG_ID>",
      "createdAt": "2026-06-12T10:00:00.000Z",
      "partnerApp": {
        "id": "<APP_ID>",
        "slug": "your-app",
        "name": "Your App"
      },
      "token": {
        "id": "<TOKEN_ID>",
        "name": "Your App connection",
        "scopes": [
          "project-links:read",
          "project-links:write",
          "contracts:read",
          "participants:read",
          "participants:email",
          "webhooks:manage"
        ]
      }
    }
  }
  ```
</ResponseExample>
