---
title: "Get a grant"
method: GET
path: "/v1/automation-grants/{grantId}"
tags: ["Automations"]
---

# Get a grant

`GET /v1/automation-grants/{grantId}`

## Request

- Base URL: `https://api.banksync.io`
- URL: `https://api.banksync.io/v1/automation-grants/{grantId}`
- Auth: one of:
  - API key in header `X-API-Key`
  - HTTP bearer

The grant and what its approver is shown: every node as its type describes it, what changed since the previous grant, and whether bindings, config or node types moved since.

## Path parameters

- `grantId` string, required: Grant ID

## Response `200`

The grant

- object
  - `success` true, required
  - `data` object, required
    - `grant` object, required
      - `id` string, required
      - `automationId` string, required
      - `revision` string, required
      - `status` 'requested' | 'active' | 'needs_reapproval' | 'revoked' | 'expired', required
      - `catalogueDigest` string, required
      - `bindingFingerprint` string, required
      - `permissions` string[], required
      - `resources` object[], required
        - `binding` string, required
        - `type` string, required
        - `id` string, required
        - `access` 'read' | 'write' | 'delete', required
      - `egressHosts` string[], required
      - `caps` object[], required
        - `key` string, required
        - `node` string, required
        - `limit` integer, required
        - `window` 'run' | 'day' | 'month', required
      - `callable` string[], required
      - `grantedBy` string, nullable, required
      - `grantedAt` string, nullable, required
      - `expiresAt` string, nullable, required
      - `reapprovalSince` string, nullable, required
      - `revokedAt` string, nullable, required
    - `summary` object, required
      - `nodes` object[], required
        - `nodeId` string, required
        - `type` string, required
        - `title` string, required
        - `tier` string, required
        - `egress` string, required
        - `sendsTo` object
          - `hosts` string[], required
          - `dynamic` boolean, required
        - `permissions` string[], required
        - `disabled` boolean, required
        - `scope` string, required
        - `compensating` boolean, required
      - `difference` object, required
        - `previous` string, nullable, required
        - `permissions` object, required
          - `added` string[], required
          - `removed` string[], required
        - `egressHosts` object, required
          - `added` string[], required
          - `removed` string[], required
        - `resources` object, required
          - `added` string[], required
          - `removed` string[], required
        - `caps` object, required
          - `added` string[], required
          - `removed` string[], required
        - `callable` object, required
          - `added` string[], required
          - `removed` string[], required
      - `stale` object, required
        - `fingerprint` boolean, required
        - `catalogue` boolean, required

## Other responses

- `400`: Invalid input, or the draft has blocking findings — `code` names the refusal (`AUTOMATION_BLOCKED_BY_FINDINGS`, `AUTOMATION_SECRET_REFUSED`, …) and `details[]` each finding with its node
- `401`: Unauthorized
- `403`: Forbidden — missing scope, insufficient role, a credential narrowed to some accounts, or a grant the caller does not hold
- `404`: Not found — or automations are not enabled for this workspace
- `409`: Conflict — the draft moved since you read it (`AUTOMATION_VERSION_CONFLICT`), the automation is not published or not active, or a grant does not hold (`AUTOMATION_GRANT_STATE`)
- `429`: The automation’s admission refused the run and does not queue (`AUTOMATION_ADMISSION_REFUSED`, `AUTOMATION_RATE_LIMITED`): `code` names which, and the `Retry-After` header says how many seconds to wait before trying again. A start that queues is a 202, not this.
- `503`: Automations are paused while an incident is worked (`AUTOMATIONS_STOPPED`) or not configured here (`AUTOMATIONS_UNAVAILABLE`): `code` names which, and the `Retry-After` header says how many seconds to wait before retrying

---

[API](https://skmtc.dev/banksync/apis/banksync-api.md) · [All operations](https://skmtc.dev/banksync/apis/banksync-api/llms.txt) · [OpenAPI document](https://skmtc.dev/banksync/apis/banksync-api/revisions/94465f5ee922?raw)
