Query Model List Prices
Endpoint Path
http
GET /api/open/models/list-pricesRequest Parameters
| Field | Type | Required | Description | Constraints |
|---|---|---|---|---|
| enterprise_id | int | No | Enterprise ID | If provided, filter by that enterprise's accessible models; otherwise filter by the current personal account |
| model_name | string | No | Exact model name match | Comma-separated; must match returned model_name |
| keyword | string | No | Fuzzy model name search | |
| page | int | No | Page number | Starts from 1, default 1; alias p |
| page_size | int | No | Page size | Default 20, max 500 |
Request Example
json
GET 'https://neolink.com/backend/api/open/models/list-prices?enterprise_id=1001&keyword=gpt&page=1&page_size=20'
GET 'https://neolink.com/backend/api/open/models/list-prices?model_name=gpt-4o,doubao-seed-2-1-pro-260628&page=1&page_size=20'Return Information
On success, HTTP 200 with envelope: { "success": true, "message": "", "data": { ... } }.
“Required” means whether the field always appears in a successful response (No = may be omitted, commonly due to omitempty).
| Field | Type | Required | Description |
|---|---|---|---|
| success | bool | Yes | Request success indicator; true on success, false on failure |
| message | string | Yes | Status message; usually empty on success; localized error text on failure |
| data | object | No | Business payload; returned only on success; see table below |
data (pagination)
| Field | Type | Required | Description |
|---|---|---|---|
| items | object[] | Yes | Current page model list prices |
| total | int | Yes | Total count after filtering |
| page | int | Yes | Current page number |
| page_size | int | Yes | Current page size |
items[] fields
| Field | Type | Required | Description |
|---|---|---|---|
| model_name | string | Yes | Model name as shown in the model plaza |
| supported_endpoint_types | string[] | Yes | Supported endpoint types; [] if none |
| max_prompt_tokens | int | Yes | Max input tokens |
| max_completion_tokens | int | Yes | Max output tokens |
| model_ratio_configured | bool | Yes | Whether ratio is explicitly configured |
| unit | string | Yes | Fixed as "M tokens"; only explains the metering unit for sibling ratio unit prices |
| scenario_status | string | No | Scenario table status: ok / partial / unsupported; may be omitted when scenario capability is absent |
| scenario_dims | object[] | No | Billing dimension definitions; see nested table below |
| scenarios | object[] | No | Per-tier scenario prices; see nested table below |
| model_ratio_usd / model_ratio_cny | string | No | Input list price (four decimals); typically omitted when a usable scenario table exists |
| completion_ratio_usd / completion_ratio_cny | string | No | Output list price; omitted when output is hidden or a scenario table exists |
| cache_ratio_usd / cache_ratio_cny | string | No | Cache hit/read price; omitted when not configured or a scenario table exists |
| create_cache_ratio_usd / create_cache_ratio_cny | string | No | Cache create/write price; omitted when not configured or a scenario table exists |
| image_ratio_usd / image_ratio_cny | string | No | Image-related unit price; omitted if not configured |
| audio_ratio_usd / audio_ratio_cny | string | No | Audio input-related unit price; omitted if not configured |
| audio_completion_ratio_usd / audio_completion_ratio_cny | string | No | Audio output-related unit price; omitted if not configured |
scenario_status values
| Value | Meaning | Recommendation |
|---|---|---|
| ok | Dimensions fully enumerable | Display scenario table directly |
| partial | Some factors fixed to baseline or value domain inferred | Can display; note the table may not cover all real request combinations |
| unsupported | Cannot derive | scenarios empty; use Path B |
scenario_dims[]
| Field | Type | Description |
|---|---|---|
| key | string | Dimension key, e.g. extra:resolution, num:input_len |
| label | string | Display name, e.g. Resolution |
| values | object[] | Optional values for this dimension; each item has value (machine value, e.g. 1080p) and label (display text, e.g. 1080P) |
| inferred | bool | true when value domain is inferred |
| vars | string[] | Common on input-length axis: len (full context) / p (billable input) |
scenarios[]
| Field | Type | Description |
|---|---|---|
| tier | string | Tier name |
| match | object | Dimension key → matched value list |
| lines | object[] | Pricing lines for this tier |
| per_call_usd / cny | string | Per-call fixed fee (returned when present) |
| per_call_usd_raw | number | Unrounded USD fixed fee |
| free | bool | Entire scenario is free |
scenarios[].lines[]
| Field | Type | Description |
|---|---|---|
| key | string | e.g. p / c / out_sec |
| label | string | e.g. Input / Output |
| unit | string | Metering unit for this line (authoritative on scenario path) |
| amount_usd / amount_cny | string | Four-decimal display price |
| amount_usd_raw | number | Unrounded USD value (for very low unit prices) |
| output | bool | Whether output side |
| segments | object[] | Segmented pricing (optional) |
| free | bool | This line is explicitly configured as free |
scenarios[].lines[].segments[]
| Field | Type | Description |
|---|---|---|
| from | number | Segment start |
| to | number | Segment end; may be omitted for last segment |
| unbounded | bool | Last segment has no upper bound |
| amount_usd / amount_cny | string | Segment unit price |
| amount_usd_raw | number | Unrounded USD value |
How to Get USD / CNY Prices (Required Reading)
Path A: Usable Scenario Table (Preferred)
Condition: scenario_status is ok or partial, and scenarios is non-empty.
- Render filters from
scenario_dims - Match current dimension values with
scenarios[].match - Read
lines[].amount_usd/amount_cnyfrom the matched tier - Use
lines[].unitfor units (e.g. CNY/M tokens, CNY/sec, CNY/image, CNY/M chars); do not use top-levelunit - Sibling
model_ratio_*/cache_ratio_*etc. are not emitted in this case, to avoid dual sources of truth
Path B: No Usable Scenario Table (Standard Volume Billing)
Condition: no usable scenarios, model_ratio_configured == true, and fields such as model_ratio_usd are present.
- Input:
model_ratio_usd/model_ratio_cny - Output:
completion_ratio_usd/completion_ratio_cny(if present) - Cache hit/read:
cache_ratio_usd/cache_ratio_cny(if present) - Cache create:
create_cache_ratio_usd/create_cache_ratio_cny(if present) - Image/audio:
image_ratio_*/audio_ratio_*/audio_completion_ratio_*(if present) - Unit: top-level
unit="M tokens"(per million tokens) - Amount: four-decimal string, e.g.
"5.0000"; CNY already converted by system exchange rate
Path C: No Price
model_ratio_configured == false and no usable scenarios → no *_ratio_*, no usable scenarios. Means no publishable list price (do not treat as free).
Response Example
Standard volume billing (Path B)
json
{
"success": true,
"message": "",
"data": {
"items": [
{
"model_name": "doubao-seed-2-1-pro-260628",
"supported_endpoint_types": ["openai"],
"max_prompt_tokens": 128000,
"max_completion_tokens": 16384,
"scenario_status": "unsupported",
"scenarios": [],
"model_ratio_usd": "0.8571",
"model_ratio_cny": "6.0000",
"completion_ratio_usd": "4.2857",
"completion_ratio_cny": "30.0000",
"cache_ratio_usd": "0.1714",
"cache_ratio_cny": "1.2000",
"create_cache_ratio_usd": "0.0024",
"create_cache_ratio_cny": "0.0170",
"model_ratio_configured": true,
"unit": "M tokens"
}
],
"total": 1,
"page": 1,
"page_size": 20
}
}With scenario table (Path A, excerpt)
json
{
"model_name": "doubao-seedance-2-0-260128",
"scenario_status": "ok",
"scenario_dims": [
{
"key": "extra:resolution",
"label": "分辨率",
"values": [{ "value": "720p", "label": "720p" }]
}
],
"scenarios": [
{
"tier": "480p/720p-不含视频输入",
"match": { "extra:resolution": ["480p", "720p"] },
"lines": [
{
"key": "c",
"label": "输出",
"unit": "元/百万tokens",
"amount_usd": "6.5714",
"amount_cny": "46.0000",
"amount_usd_raw": 6.5714285714,
"output": true
}
]
}
],
"model_ratio_configured": true,
"unit": "M tokens"
}Other Notes
- List is ordered by publish/create time descending; filter scope aligns with
/api/pricing/accessible. - List prices do not include user/enterprise group discounts.
- Failures are typically auth failures (e.g. AK/SK 401); successful business responses still use the
successenvelope.
