---
title: "Create a new portal"
method: POST
path: "/v1/portals/"
---

# Create a new portal

`POST /v1/portals/`

## Request

- Base URL: `https://app.iconik.io/API/assets`
- URL: `https://app.iconik.io/API/assets/v1/portals/`
- Auth: none declared. Required headers: `App-ID`, `Auth-Token`
- TypeScript: <https://skmtc.dev/iconik/apis/iconik-assets/docs/v1/portals/post.ts> (a function with typed inputs; its response is checked against the schema)

Required roles:
 - can_create_portals

## Query parameters

- `apply_default_acls` boolean
- `index_immediately` boolean
- `low_priority_indexing` boolean

## Headers

- `App-ID` string, required
- `Auth-Token` string, required

## Request body

- PortalCreateSchema
  - `config` PortalConfigSchema
    - `theme` Theme, required
      - `base` 'light' | 'dark', nullable
      - `colors` ThemeColors
        - `background` string, nullable
        - `primary` string, nullable
        - `secondary` string, nullable
        - `text` string, nullable
      - `typography` ThemeTypography
        - `font_family` string, nullable
        - `font_size_base` string, nullable
        - `heading_font_family` string, nullable
  - `created_by_user` string, uuid
  - `date_created` string, date-time
  - `date_modified` string, date-time
  - `description` string, nullable
  - `id` string, uuid
  - `keyframes` object[]
  - `logo` string
  - `logo_storage_id` string, uuid
  - `name` string, required
  - `playlist_id` string, uuid, required
  - `status` 'ACTIVE'
  - `system_domain_id` string, uuid

## Response `201`

Returns a created portal

- PortalSchema
  - `config` PortalConfigSchema
    - `theme` Theme, required
      - `base` 'light' | 'dark', nullable
      - `colors` ThemeColors
        - `background` string, nullable
        - `primary` string, nullable
        - `secondary` string, nullable
        - `text` string, nullable
      - `typography` ThemeTypography
        - `font_family` string, nullable
        - `font_size_base` string, nullable
        - `heading_font_family` string, nullable
  - `created_by_user` string, uuid
  - `date_created` string, date-time
  - `date_modified` string, date-time
  - `description` string, nullable
  - `id` string, uuid
  - `keyframes` object[]
  - `logo` string
  - `logo_storage_id` string, uuid
  - `name` string, required
  - `playlist_id` string, uuid
  - `status` 'ACTIVE'
  - `system_domain_id` string, uuid

## Other responses

- `400`: Bad request
- `401`: Token is invalid
- `402`: Portal limit reached
- `default`: Error response

---

[API](https://skmtc.dev/iconik/apis/iconik-assets.md) - [All operations](https://skmtc.dev/iconik/apis/iconik-assets/llms.txt) - [OpenAPI document](https://skmtc.dev/iconik/apis/iconik-assets/revisions/62580d9e640e?raw)
