---
title: "Create portal access"
method: POST
path: "/portals/{portal_id}/access"
tags: ["Portal Access"]
---

# Create portal access

`POST /portals/{portal_id}/access`

## Request

- Base URL: `https://api.metorial.com`
- URL: `https://api.metorial.com/portals/{portal_id}/access`
- Auth: HTTP bearer

Creates a new consumer access rule for the portal.

## Path parameters

- `portal_id` string, required

## Headers

- `Metorial-Version` string

## Request body

- BodyRequest23
  - `consumer_group_id` string, required
  - `name` string
  - `description` string, nullable
  - `readme` string, nullable
  - `access` union, required
    - object
      - `type` 'provider_template', required
      - `provider_template_id` string, required
    - object
      - `type` 'magic_mcp_server', required
      - `magic_mcp_server_id` string, required
    - object
      - `type` 'skill', required
      - `skill_id` string, required
    - object
      - `type` 'skill_template', required
      - `skill_template_id` string, required
    - object
      - `type` 'skill_group', required
      - `skill_group_id` string, required
    - object
      - `type` 'skill_marketplace', required
      - `skill_marketplace_id` string, required
      - `permission` 'read' | 'manage'
    - object
      - `type` 'skill_plugin', required
      - `skill_marketplace_id` string, required
      - `skill_plugin_id` string, required

## Response `200`

Successful response

- ConsumerAccess
  - `object` 'consumer.access', required
  - `id` string, required
  - `access_level` 'read' | 'manage', nullable, required
  - `name` string, required
  - `description` string, nullable, required
  - `readme` string, nullable, required
  - `listing` object, nullable, required
    - `id` string, required
    - `name` string, required
    - `description` string, nullable, required
  - `access` union, required
    - Access2
      - `type` 'provider_template', required
      - `provider_template` ProviderTemplate, required
        - `object` 'provider.template#preview', required
        - `id` string, required
        - `status` 'active' | 'archived' | 'deleted', required
        - `name` string, required
        - `description` string, nullable, required
        - `metadata` object, required
        - `integration_id` string, nullable, required
        - `created_at` string, date-time, required
        - `updated_at` string, date-time, required
    - Access3
      - `type` 'magic_mcp_server', required
      - `magic_mcp_server` MagicMcpServer, required
        - `object` 'magic_mcp.server#preview', required
        - `id` string, required
        - `status` 'active' | 'archived' | 'deleted', required
        - `name` string, nullable, required
        - `description` string, nullable, required
    - Access4
      - `type` 'skill', required
      - `skill` object, required
        - `object` 'skill', required
        - `id` string, required
        - `status` 'active' | 'archived' | 'deleted', required
        - `name` string, required
    - Access5
      - `type` 'skill_template', required
      - `skill_template` SkillTemplate2, required
        - `object` 'skill.template', required
        - `id` string, required
        - `status` 'active' | 'archived' | 'deleted', required
        - `owner` 'system' | 'tenant', required
        - `name` string, required
        - `description` string, nullable, required
    - Access6
      - `type` 'skill_group', required
      - `skill_group` object, required
        - `object` 'skill.group', required
        - `id` string, required
        - `status` 'active' | 'archived' | 'deleted', required
        - `name` string, required
        - `description` string, nullable, required
    - Access7
      - `type` 'skill_marketplace', required
      - `skill_marketplace` object, required
        - `object` 'skill.marketplace', required
        - `id` string, required
        - `status` 'active' | 'archived' | 'deleted', required
    - Access8
      - `type` 'skill_plugin', required
      - `skill_plugin` object, required
        - `object` 'skill.plugin', required
        - `id` string, required
        - `status` 'active' | 'archived' | 'deleted', required
        - `name` string, nullable, required
  - `consumer_group` ConsumerGroup, required
    - `object` 'consumer.group', required
    - `id` string, required
    - `status` 'active' | 'archived' | 'deleted', required
    - `name` string, required
    - `description` string, nullable, required
    - `is_default` boolean, required
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, required

## Other responses

- `400`: Invalid parameters or action
- `401`: Missing or invalid API key
- `403`: The key lacks permission for this resource
- `404`: No such resource
- `422`: Validation failed
- `429`: Rate limit exceeded
- `500`: Unexpected server error

---

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