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

# Get an Approval Message

> Get the message to sign for a change request waiting for approval: a transaction, vault, contact, or bank account.

**GET** `/api/external/change_requests/approvals/approval_message/`

Call this after any create or update call that needs approval: a transaction, a vault, a contact (create or update), or a bank account. Sign the returned `message` with your API user's private key, then send the signature to [Submit Approval Action](/approvals/submit-approval-action). See [Approvals](/approvals/overview) for the full flow.

## Query parameter

<ParamField query="entityId" type="string" required>
  ID of the entity waiting for approval. Use the `id` returned by the create or update call: a transaction, vault, contact, or bank account ID.
</ParamField>

## Response

Returns a [GetApprovalMessageResponse](/api-basics/data-models#getapprovalmessageresponse).

<ResponseField name="approvalId" type="string">
  Approval ID. Pass it to [Submit Approval Action](/approvals/submit-approval-action).
</ResponseField>

<ResponseField name="message" type="string">
  Message to sign. Sign the exact string, unchanged.
</ResponseField>

<ResponseField name="changeRequestId" type="string">
  Change request this approval belongs to.
</ResponseField>

<ResponseField name="entityId" type="string">
  ID of the transaction, vault, contact, or bank account being approved.
</ResponseField>

<RequestExample dropdown>
  ```json Request example theme={null}
  {
    "query": {
      "entityId": "transaction_123"
    }
  }
  ```

  ```bash cURL theme={null}
  # Sample only. Generate a new signed token for each request
  # (see Authentication). Tokens expire after 120 seconds.
  curl --request GET \
    --url "https://api.primevault.com/api/external/change_requests/approvals/approval_message/?entityId=transaction_123" \
    --header "Authorization: Bearer <signed JWT>" \
    --header "Api-Key: <API key>" \
    --header "Accept: application/json"
  ```

  ```typescript JavaScript SDK theme={null}
  // Pass a transaction, vault, contact, or bank account ID.
  const approvalMessage = await apiClient.getChangeApprovalMessage("transaction_123");
  console.log(approvalMessage.approvalId, approvalMessage.message);
  ```
</RequestExample>

<ResponseExample>
  ```json JSON example theme={null}
  {
    "approvalId": "approval_123",
    "message": "<message to sign>",
    "changeRequestId": "change_request_123",
    "entityId": "transaction_123"
  }
  ```
</ResponseExample>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.