# Connect your AI assistant

Let Claude or ChatGPT read this group’s data — paste one URL, approve the connection, pick the organization. Read-only.

Integrations · a play in 2 steps.

## The steps

1. Review who is asking and where the sign-in code would go. — [connectorAuthorization](/reference/system-and-integration-setup/connectorAuthorization/)
2. Approve (minting a read-only key for ONE organization) or deny — your browser carries the answer back. — [approveConnectorAuthorization](/reference/system-and-integration-setup/approveConnectorAuthorization/)

## The calls

Every operation this use case runs, in the order it first appears, with the request and the response its reference page shows.

### connectorAuthorization

[connectorAuthorization](/reference/system-and-integration-setup/connectorAuthorization/) — query · Review an AI-connector sign-in request (Claude, ChatGPT, …) — who is asking, where the sign-in code would be sent, and which of your organizations it could act in.

**Example request**

```graphql
query ExampleConnectorAuthorization($responseType: String!, $clientId: String!, $redirectUri: String!, $codeChallenge: String!, $codeChallengeMethod: String!, $state: String) {
  connectorAuthorization(responseType: $responseType, clientId: $clientId, redirectUri: $redirectUri, codeChallenge: $codeChallenge, codeChallengeMethod: $codeChallengeMethod, state: $state) {
    clientId
    clientName
    clientSource
    redirectUri
    redirectHost
    loopback
    scope
    offlineAccess
    resource
  }
}
```

Variables:

```json
{
  "responseType": "<response type>",
  "clientId": "<client id>",
  "redirectUri": "<redirect uri>",
  "codeChallenge": "<code challenge>",
  "codeChallengeMethod": "<code challenge method>",
  "state": "<state>"
}
```

**Example response**

```json
{
  "data": {
    "connectorAuthorization": {
      "clientId": "<client id>",
      "clientName": "Blue jeans",
      "clientSource": "<client source>",
      "redirectUri": "<redirect uri>",
      "redirectHost": "<redirect host>",
      "loopback": true,
      "scope": "<scope>",
      "offlineAccess": true,
      "resource": "<resource>"
    }
  },
  "extensions": {
    "at": {
      "callId": "01EXAMPLE-CALL-ID",
      "version": {
        "requested": null,
        "serviced": {
          "name": "genesis",
          "number": 0
        }
      }
    }
  }
}
```

### approveConnectorAuthorization

[approveConnectorAuthorization](/reference/system-and-integration-setup/approveConnectorAuthorization/) — mutation · Approve or deny an AI-connector sign-in — approving mints a read-only integration key for ONE organization and sends the connector its sign-in code.

**Example request**

```graphql
mutation ExampleApproveConnectorAuthorization($decision: String!, $orgId: ID, $responseType: String!, $clientId: String!, $redirectUri: String!, $codeChallenge: String!, $codeChallengeMethod: String!) {
  approveConnectorAuthorization(decision: $decision, orgId: $orgId, responseType: $responseType, clientId: $clientId, redirectUri: $redirectUri, codeChallenge: $codeChallenge, codeChallengeMethod: $codeChallengeMethod) {
    redirectTo
  }
}
```

Variables:

```json
{
  "decision": "<decision>",
  "orgId": "01900000-0000-7000-8000-b0cf4f3c0000",
  "responseType": "<response type>",
  "clientId": "<client id>",
  "redirectUri": "<redirect uri>",
  "codeChallenge": "<code challenge>",
  "codeChallengeMethod": "<code challenge method>"
}
```

Send it with the envelope naming the version: `"extensions": {"at": {"version": {"name":"genesis","number":0}}}`.

**Example response**

```json
{
  "data": {
    "approveConnectorAuthorization": {
      "redirectTo": "<redirect to>"
    }
  },
  "extensions": {
    "at": {
      "callId": "01EXAMPLE-CALL-ID",
      "version": {
        "requested": {
          "name": "genesis",
          "number": 0
        },
        "serviced": {
          "name": "genesis",
          "number": 0
        }
      }
    }
  }
}
```
