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

# Your first approval

# Tutorial: Your first approval

This tutorial ties together **creating** an approval from an automation and **resolving** it as a human, then **getting the result** back to your workflow.

## What you need

* **Agent ID** and **workspace API key** from the [web dashboard](../guide/web-dashboard) or mobile app ([Credentials](../guide/credentials)).
* **Base URL** for the Agent API.
* Permission to open **Approvals** on the web or **Approval Inbox** on mobile.

## 1. Create an approval

Send `POST {BASE_URL}/v1/approvals` with headers:

* `X-Agent-Id` — your agent UUID
* `X-Api-Key` — your workspace key
* `Content-Type: application/json`

Body fields must match [Agent API: POST /v1/approvals](../api-reference/agent#post-v1-approvals): **`question`**, **`context_markdown`**, and **`options`** are required. **`timeout`** is optional—the server merges your agent’s [default timeout](../guide/agent-settings#default-timeout) when you omit it. **`request_id`** is optional (the API assigns a UUID if you omit it).

You can use curl, the **Quickstart** “custom” snippet, [n8n](../integrations/n8n), or [Zapier](../integrations/zapier).

Save the response if you need `approval_id` or timing fields; for polling, use the **`request_id`** returned in the create response (whether you supplied one or not).

## 2. Respond as a human

1. Open **Approvals** in the web dashboard, or the **Approval Inbox** / agent inbox on **mobile**.
2. Open the pending request, read the question and context, then choose an **option** or enter **custom text** if allowed.

Only **one** resolved outcome wins if several people view the same request.

## 3. Get the result to your automation

Pick one:

* **Callback** — If you set `callback.url` on create, the service POSTs the final JSON when the approval resolves. Point it at a reachable webhook (for example in n8n).
* **Polling** — Call `GET {BASE_URL}/v1/approvals/{requestId}/result` where `{requestId}` is the **`request_id`** from the create response. Repeat until `status` is no longer `pending`.

Field details: [Agent API](../api-reference/agent).

## Related

* [How it works](../guide/how-it-works)
* [First automation (web Quickstart)](./first-automation-web-quickstart)
