---
title: "Approve an external ask (invite them in)"
method: POST
path: "/access-requests/external/{id}/approve"
tags: ["access-requests"]
---

# Approve an external ask (invite them in)

`POST /access-requests/external/{id}/approve`

## Request

- Base URL: `https://api.onplana.com/api`
- URL: `https://api.onplana.com/api/access-requests/external/{id}/approve`
- Auth: one of:
  - HTTP bearer
  - API key in header `Authorization`

Decider-gated like the internal approve. Sends the Stage-1 invitation carrying the grant: on accept the requester joins the org at orgRole (GUEST or MEMBER, the decider's seat choice), becomes project VIEWER where applicable, and receives the level. If the requester registered and joined between ask and decide, the grant applies directly instead ({ invited: false }). 400 MEMBER_LIMIT at the plan's member cap.

## Path parameters

- `id` string, required

## Headers

- `X-Organization-Id` string, required

## Request body

- object
  - `level` string, required: A level from the inbox row's `levels`.
  - `orgRole` 'GUEST' | 'MEMBER'

## Response `200`

{ id, status: APPROVED, invited }

## Other responses

- `400`: Validation error
- `401`: Unauthorized - missing or invalid JWT
- `403`: Forbidden - insufficient role

---

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