---
title: "Post Panel Definition"
method: POST
path: "/v1/panel-definitions"
tags: ["public_api", "external", "panels"]
---

# Post Panel Definition

`POST /v1/panel-definitions`

## Request

- Base URL: `https://api.hydracept.com`
- URL: `https://api.hydracept.com/v1/panel-definitions`
- Auth: HTTP bearer

## Request body

- PanelDefinitionCreate
  - `key` string, required
  - `displayName` string, required
  - `capabilityKey` string, nullable
  - `capabilityVersion` string, nullable
  - `presentation` PanelPresentation
    - `showPrompt` boolean
    - `showReferences` boolean
    - `showOutputCount` boolean
    - `showTransparency` boolean
    - `showRouting` boolean
    - `showGenerationStrategy` boolean
    - `showModel` boolean
    - `pricingDisplay` 'hidden' | 'total' | 'breakdown'
  - `policy` PanelPolicy
    - `defaultRoutingPolicy` string
    - `allowedRoutingPolicies` string[]
    - `allowedGenerationStrategies` string[]
    - `maxOutputs` integer
    - `maxSpendPerJobMicros` integer, nullable
  - `allowedOrigins` string[]
  - `actions` SurfaceActionDefinition[]
    - `key` string, required
    - `label` string, required
    - `handler` union, required
      - SurfaceCapabilityHandler
        - `kind` 'capability'
        - `capability` string, required
      - SurfaceProjectCommandHandler
        - `kind` 'projectCommand'
        - `command` string, required
      - SurfaceNavigationHandler
        - `kind` 'navigation'
        - `href` string, required
    - `inputs` SurfaceActionInputField[]
      - `key` string, required
      - `label` string, required
      - `valueType` 'string' | 'number' | 'boolean' | 'string[]'
  - `origin` 'hydracept' | 'project'
  - `projectId` string, nullable

## Response `200`

Successful response

- PanelDefinitionView
  - `id` string, required
  - `organizationId` string, required
  - `projectId` string, nullable
  - `key` string, required
  - `displayName` string, required
  - `status` string, required
  - `origin` 'hydracept' | 'project'
  - `currentVersion` PanelDefinitionVersionView, required
    - `id` string, required
    - `definitionId` string, required
    - `version` integer, required
    - `capabilityKey` string, nullable
    - `capabilityVersion` string, nullable
    - `presentation` PanelPresentation, required
      - `showPrompt` boolean
      - `showReferences` boolean
      - `showOutputCount` boolean
      - `showTransparency` boolean
      - `showRouting` boolean
      - `showGenerationStrategy` boolean
      - `showModel` boolean
      - `pricingDisplay` 'hidden' | 'total' | 'breakdown'
    - `policy` PanelPolicy, required
      - `defaultRoutingPolicy` string
      - `allowedRoutingPolicies` string[]
      - `allowedGenerationStrategies` string[]
      - `maxOutputs` integer
      - `maxSpendPerJobMicros` integer, nullable
    - `allowedOrigins` string[], required
    - `actions` SurfaceActionDefinition[]
      - `key` string, required
      - `label` string, required
      - `handler` union, required
        - SurfaceCapabilityHandler
          - `kind` 'capability'
          - `capability` string, required
        - SurfaceProjectCommandHandler
          - `kind` 'projectCommand'
          - `command` string, required
        - SurfaceNavigationHandler
          - `kind` 'navigation'
          - `href` string, required
      - `inputs` SurfaceActionInputField[]
        - `key` string, required
        - `label` string, required
        - `valueType` 'string' | 'number' | 'boolean' | 'string[]'
  - `createdAt` string, date-time, nullable
  - `updatedAt` string, date-time, nullable

## Other responses

- `401`: Structured public error envelope (`code`, `message`, `requestId`, …)
- `403`: Structured public error envelope (`code`, `message`, `requestId`, …)
- `422`: Validation failure: public envelope plus Pydantic `detail` / `validationErrors`
- `429`: Structured public error envelope (`code`, `message`, `requestId`, …)
- `500`: Structured public error envelope (`code`, `message`, `requestId`, …)
- `502`: Structured public error envelope (`code`, `message`, `requestId`, …)
- `503`: Structured public error envelope (`code`, `message`, `requestId`, …)

---

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