# POST /control/v1/models/custom

> CreateCustomModel

- `operationId`: `ControlV1ModelsCustomCreateCustomModel`
- Group: [Model Catalog](https://sference.com/docs/api-reference/model-catalog.md)
- API spec (machine-readable): https://sference.com/openapi.json
- HTML version: https://sference.com/docs/api-reference/model-catalog/ControlV1ModelsCustomCreateCustomModel

## Request body (required)

Content type `application/json`. Schema: `CustomModelCreateRequest`

| Field | Type | Required | Constraints | Description |
| --- | --- | --- | --- | --- |
| `model_id` | string | yes | — | — |
| `display_name` | string \| null | no | — | — |
| `modality` | string | no | enum: text_generation | text_embedding, default `"text_generation"` | — |
| `architecture` | string | yes | enum: qwen | llama | kimi | glm | deepseek | minimax | … | — |
| `architecture_detail` | string \| null | no | — | — |
| `artifact_type` | string | no | enum: full | lora, default `"full"` | — |
| `base_model_id` | string \| null | no | — | — |
| `hf_repo` | string \| null | no | — | — |
| `hf_revision` | string \| null | no | — | — |
| `private_repo` | boolean | no | default `false` | — |
| `hf_token` | string \| null | no | — | — |
| `notes` | string \| null | no | — | — |

## Responses

### `201` — Document created, URL follows

Schema: `CatalogModelResponse`

| Field | Type | Required | Constraints | Description |
| --- | --- | --- | --- | --- |
| `id` | string | yes | — | — |
| `display_name` | string | yes | — | — |
| `provider` | string \| null | no | — | — |
| `platform_status` | string | yes | enum: available | coming_soon | deprecated | — |
| `modality` | string | yes | — | — |
| `context_tokens` | integer | yes | — | — |
| `released` | string | yes | — | — |
| `deprecated` | string \| null | no | — | — |
| `input_per_million_usd` | number \| null | no | — | — |
| `output_per_million_usd` | number \| null | no | — | — |
| `cached_input_per_million_usd` | number \| null | no | — | — |
| `tpm_limit` | string | no | default `"unlimited"` | — |
| `rpm_limit` | string | no | default `"unlimited"` | — |
| `requests_per_hour` | string | no | default `"—"` | — |
| `deployed_on_platform` | boolean | yes | — | — |
| `capabilities` | ModelCapabilities | no | — | — |
| `ownership` | string | no | enum: platform | custom, default `"platform"` | — |
| `deploy_status` | null \| string | no | enum: pending_deploy | deploying | available | rejected | failed | null | — |
| `architecture` | string \| null | no | — | — |
| `has_hf_token` | boolean \| null | no | — | — |
| `status_reason` | string \| null | no | — | — |

### `400` — Bad request syntax or unsupported method

Schema: `object`

| Field | Type | Required | Constraints | Description |
| --- | --- | --- | --- | --- |
| `status_code` | integer | yes | — | — |
| `detail` | string | yes | — | — |
| `extra` | null \| object \| array | no | — | — |

Source: https://sference.com/docs/api-reference/model-catalog/ControlV1ModelsCustomCreateCustomModel
