---
title: "Resolve a held execution with a signed decision"
method: GET
path: "/v1/approve/{approvalId}"
tags: ["approvals"]
---

# Resolve a held execution with a signed decision

`GET /v1/approve/{approvalId}`

## Request

- Base URL: `https://relay.earlyfra.me`
- URL: `https://relay.earlyfra.me/v1/approve/{approvalId}`
- Auth: none required

One-click decision link embedded in the chat notification. `sig` is an HMAC over `<approvalId>:<action>`. Honoured exactly once. `rearm` is a separate signature that fires an already-expired hold once, up to 24h after its deadline; an expired `approve` link stays permanently inert.

## Path parameters

- `approvalId` string, required

## Query parameters

- `action` 'approve' | 'reject' | 'rearm'
- `sig` string, required

## Response `200`

Decision applied (HTML confirmation card).

## Other responses

- `403`: Invalid signature.
- `404`: Hold aged past the 7-day retention window (HTML card for a browser click).
- `409`: Already settled.
- `410`: Hold window closed. Within 24h of the deadline the card carries a signed `action=rearm` link.

## Changes

- **2026-10-19** `24d03efc9f87`: 2 info
  - added the new enum value `rearm` to the `query` request parameter `action`
  - added the non-success response with the status `404`

[Operation history](https://skmtc.dev/earlyfra/apis/earlyfra-me-edge-signal-orchestration-api/changes/v1/approve/:approvalId/get.md)

---

[API](https://skmtc.dev/earlyfra/apis/earlyfra-me-edge-signal-orchestration-api.md) · [All operations](https://skmtc.dev/earlyfra/apis/earlyfra-me-edge-signal-orchestration-api/llms.txt) · [OpenAPI document](https://skmtc.dev/earlyfra/apis/earlyfra-me-edge-signal-orchestration-api/revisions/24d03efc9f87?raw)
