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

# Get Gate Info

> Check whether a public page is password-protected before rendering it.

## `GET /v1/public/pages/{slug}/gate-info`

Returns a minimal gate signal for a password-protected page. This endpoint is **unauthenticated** and is called by the Artifacta viewer (`artifacta.io/a/{slug}`) to decide whether to show the password prompt.

Returns `200` only for pages that are:

* password-protected (`access="password"`)
* live (not unpublished, not expired, not from a suspended account)

Returns `404` for everything else — including unlisted and public pages with no password, missing slugs, expired pages, and suspended tenants. This is intentional: the endpoint reveals nothing about page existence beyond "you need a password here."

## Authentication

None. This is a public endpoint.

## Path parameters

| Parameter | Type   | Description                               |
| --------- | ------ | ----------------------------------------- |
| `slug`    | string | Page slug (`pg_...`) from the public URL. |

## Response

```json theme={null}
{
  "exists": true,
  "access": "password"
}
```

| Field    | Type    | Description                            |
| -------- | ------- | -------------------------------------- |
| `exists` | boolean | Always `true` on a 200 response.       |
| `access` | string  | Always `"password"` on a 200 response. |

## Error codes

| Code                 | Status | When                                                                                                  |
| -------------------- | ------ | ----------------------------------------------------------------------------------------------------- |
| `artifact_not_found` | 404    | Page not found, not password-protected, unpublished, expired, or from a suspended account. No oracle. |

## Notes

* **No oracle**: The 404 error code does not distinguish between a missing slug and an unlisted page that exists but has no password. This prevents enumeration.
* **Rate limiting**: This endpoint shares the standard per-tenant rate limit. Abuse patterns (e.g. high-volume slug scanning) are also subject to the Vercel edge rate limit.

## Example

```bash theme={null}
curl https://api.artifacta.io/v1/public/pages/pg_aB3xK9mP1qR5sT2u/gate-info
```
