---
title: "Get portal state"
method: GET
path: "/portal/{slug}"
tags: ["Portal"]
---

# Get portal state

`GET /portal/{slug}`

## Request

- Base URL: `https://api.briefgate.dev`
- URL: `https://api.briefgate.dev/portal/{slug}`
- Auth: none required

Return the full portal state for the client: project info, branding, and all items with their current statuses. Requires an active portal session cookie (from /portal/:slug/redeem).

## Path parameters

- `slug` string, required

## Response `200`

Portal state

- object
  - `intake_id` string
  - `project_name` string
  - `status` 'draft' | 'sent' | 'in_progress' | 'completed' | 'archived'
  - `due_date` string, date, nullable
  - `branding` object
  - `brief` object, nullable: Information from the intake owner, shown before the requested items. `null` when the owner set neither brief text nor any attachment.
    - `text` string, nullable
    - `from_name` string: Same sender name the invitation e-mail is signed with.
    - `files` object[]
      - `id` string
      - `filename` string
      - `mime` string
      - `size` integer
      - `status` 'ready' | 'scanning' | 'blocked': Derived from av_status. Fetch the actual link from GET /portal/:slug/brief/files/:fileId — this view never hands one out directly.
  - `items` object[]

## Other responses

- `401`: No valid portal session
- `404`: Resource not found
- `410`: Intake is archived

---

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