---
title: "POST /v1/admin/channels"
method: POST
path: "/v1/admin/channels"
tags: ["ChannelAdminService"]
---

# POST /v1/admin/channels

`POST /v1/admin/channels`

===== Channel =====

## Request body

- ChannelV1CreateChannelRequest
  - `apiKey` string
  - `autoDisableJson` string
  - `baseUrl` string
  - `costRatio` string — 渠道成本倍率 decimal 字符串；空串=不配置（落 NULL）。非法值返回 400， reason=CHANNEL_COST_RATIO_INVALID。仅审计不计费。
  - `extraConfigJson` string
  - `headerOverrideJson` string — 覆盖三件套：与 ChannelInfo 同义；空串 = 未配置。写入前 biz 侧校验，不允许覆盖 stream 键。
  - `headerStripJson` string — header_strip_json 请求头剔除 JSON (对齐 ChannelInfo.header_strip_json)。
  - `modelMappingJson` string
  - `name` string
  - `paramOverrideJson` string
  - `passthroughBody` boolean
  - `priority` integer
  - `region` string
  - `remark` string
  - `retryJson` string
  - `timeoutMs` integer
  - `type` string
  - `vendorId` string

## Response `200`

OK

- ChannelV1CreateChannelReply
  - `channel` ChannelV1ChannelInfo — ChannelInfo 渠道展示模型；api_key 永远只回显 mask（"sk-****abcd"）。
    - `apiKeyMask` string
    - `autoDisableJson` string
    - `baseUrl` string
    - `boundSources` ChannelV1SourceChannelBindingInfo[] — bound_sources 该渠道挂载的资源绑定（只读回显，按 source_id asc）。 仅 ListChannels 批量回填（列表页"所属资源"列，免去逐行反查 by-channel）； 其余回包（Create/Get/Update/Enable/Disable）不填，单渠道回显仍走 GET /v1/admin/source-channels/by-channel/{channel_id}。
      - `channelId` string
      - `channelName` string
      - `channelStatus` integer
      - `channelType` string
      - `priority` integer
      - `sourceCode` string
      - `sourceId` string
      - `sourceName` string
      - `weight` integer — weight 同 priority 组内的加权分配比重；0 = 不参与加权、仅兜底排在组末。
    - `costRatio` string — 渠道成本倍率 decimal 字符串（如 "0.8500"）；空串=未配置（快照 NULL）。仅审计不计费。
    - `createdAt` string, date-time
    - `extraConfigJson` string
    - `headerOverrideJson` string — header_override_json 请求头覆盖：{key: string | true} JSON；空/"{}" 表示未配置。 网关发往上游前 Set 到 HTTP header；支持 {api_key} / {client_header:Name} 模板变量 与 "*": true / "re:pat": true 通配 passthrough；不允许覆盖 stream 键。
    - `headerStripJson` string — header_strip_json 请求头剔除列表 JSON: '["X-Foo", "X-Bar"]'; 空/"[]"/"null" = 未配置。 与 header_override 独立字段, Phase 3 应用 (在 override 之后, 保证剔除优先级最高)。 大小写不敏感, 写侧 blocklist 拒绝 Content-Type / Host / Authorization 等协议关键头。
    - `id` string
    - `modelMappingJson` string
    - `name` string
    - `paramOverrideJson` string — param_override_json 请求参数覆盖：{key: any} JSON；空/"{}" 表示未配置。 网关发往上游前用 sjson 覆写请求体 JSON；不允许覆盖 stream 键。
    - `passthroughBody` boolean — passthrough_body true 时，网关直接把用户请求体透传给上游，不做任何 reshape。
    - `priority` integer
    - `region` string
    - `remark` string
    - `retryJson` string
    - `status` integer
    - `timeoutMs` integer
    - `type` string
    - `updatedAt` string, date-time
    - `vendorId` string

## Changes

- **2026-09-03** `a4b851fa3bdd` — 1 info
  - added the optional property `channel/boundSources` to the response with the `200` status

[Change history](https://skmtc.dev/apiqik/apis/apiqik-api/changes/v1/admin/channels/post.md)

---

[API](https://skmtc.dev/apiqik/apis/apiqik-api.md) · [All operations](https://skmtc.dev/apiqik/apis/apiqik-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/apiqik/apiqik-api/revisions/a4b851fa3bdd/schema)
