---
title: "Ask for access to a resource you cannot see"
method: POST
path: "/access-requests"
tags: ["access-requests"]
---

# Ask for access to a resource you cannot see

`POST /access-requests`

## Request

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

One open (PENDING) request per person + resource, deduped by a DB unique under concurrency (a duplicate answers 409 ALREADY_PENDING). Requires being an active member of the resource's org; the denial check is re-run server-side, the 403 payload is a hint, never the authority. 409 ALREADY_ACCESSIBLE when the caller can already open it; 400 OPEN_REQUEST_CAP at 10 open requests. Pending requests expire after 14 days. Deciders are notified (bell + email per their preference matrix).

## Headers

- `X-Organization-Id` string, required

## Request body

- object
  - `resourceType` 'PROJECT' | 'PAGE' | 'LIBRARY' | 'TABLE', required
  - `resourceId` string, required
  - `note` string: Optional message the deciders will see.

## Response `201`

{ id, status: PENDING, createdAt }

## 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)
