---
title: "Get an approval card's facts"
url: https://docs.gleap.ai/en/reference/rest-api/get-approval-card
method: GET
path: "/hard-tickets/cards/{taskId}/approval"
api: "API Reference"
tag: "HardTickets"
operationId: "GetApprovalCard"
updatedAt: "2026-11-11T10:00:00.893Z"
language: en
---

# Get an approval card's facts

`GET https://api.gleap.io/v3/hard-tickets/cards/{taskId}/approval`

What an approval card shows before the decision: the exact call, the policy limit, the window and what changed since it was filed (new customer messages, the ticket's status, the same action already done).

## Authorization

- `Authorization` (header, required): `Bearer <token>`

## Path parameters

- `taskId` (string, required)

## Headers

- `project` (string, required)

## Example request

```bash
curl --request GET \
  --url 'https://api.gleap.io/v3/hard-tickets/cards/{taskId}/approval' \
  --header 'Authorization: Bearer <token>' \
  --header 'project: <project>'
```

## Responses

### 200 (`application/json`)

Ok

- `approvalId` (string, required): The held write (PendingAction) this card approves: the approval's id.
- `status` (string, required): The held write's status (awaiting\_teammate while it can be decided).
- `arguments` (object[], required): The exact call as rows.
  - `value` (string, required)
  - `label` (string, required)
- `amount` (object | null, required): An amount in minor units (cents) and its 3-letter currency, lower case as stored.
  - `amount` (number<double>, required)
  - `currency` (string | null, required)
- `policyLimit` (object | null, required): The action's "runs alone up to" limit, when it has one.
  - `amount` (number<double>, required)
  - `currency` (string | null, required)
- `windowBusinessHours` (number<double> | null, required): The approval window in the deciding team's business hours; null for a card filed before that clock.
- `filedAt` (string, required)
- `expired` (boolean, required): The window closed: a decision is refused.
- `changedSinceFiling` (object, required): What changed on the conversation since the approval was filed.
  - `newCustomerMessages` (number<double>, required): Customer messages written after the card was filed (counted up to 100).
  - `lastCustomerMessageAt` (string | null, required)
  - `ticketStatus` (string, required): The ticket's status now (its board lane key).
  - `personHolds` (boolean, required): A person took the conversation (the AI will not message the customer after the decision).
  - `sameActionDone` (object | null, required): The same call already succeeded on this ticket after the card was filed.
    - `at` (string, required)
- `edit` (object | null, required): Approve with edit: the amount may be lowered to at most this (null: this write takes no edit).
  - `currency` (string | null, required)
  - `maxAmount` (number<double>, required)

```json
{
  "approvalId": "string",
  "status": "string",
  "arguments": [
    {
      "value": "string",
      "label": "string"
    }
  ],
  "amount": {
    "amount": 0,
    "currency": "string"
  },
  "policyLimit": {
    "amount": 0,
    "currency": "string"
  },
  "windowBusinessHours": 0,
  "filedAt": "string",
  "expired": true,
  "changedSinceFiling": {
    "newCustomerMessages": 0,
    "lastCustomerMessageAt": "string",
    "ticketStatus": "string",
    "personHolds": true,
    "sameActionDone": {
      "at": "string"
    }
  },
  "edit": {
    "currency": "string",
    "maxAmount": 0
  }
}
```
