model_id provides it, or when you are generating request bodies from code and need the parameter names, types, and defaults.
Endpoints
Base URL:https://model-api.runcomfy.net
Both require the same Bearer token as the rest of the Model API. See Authentication.
List models
Returns everymodel_id that POST /v1/models/{model_id} accepts, with a summary of each model’s inputs.
Query parameters
category is what the model does; kind is how it runs. They are independent — filter on category unless you specifically care about the execution path.Request example
Response example
model_id(string): Pass this toPOST /v1/models/{model_id}to run the model.display_name(string): Human-readable name, e.g.Flux Kontext Dev.description(string): One-line summary of what the model does.publisher(string): First segment of themodel_id, e.g.blackforestlabs.categories(string[]): What the model does, e.g.image-to-image. A few models declare several.kind(string): How it runs —model,workflow, orinference.model_url(string): The model’s page on runcomfy.com. Absent for models without a public page.base_price_usd(number): Base rate in US dollars, perprice_unit.price_unit(string):secondfor duration-billed models, otherwiseoutput.pricing_note(string): Human-readable rate, where the model publishes one.supported_batch_size(integer[]): Batch sizes the model accepts.inputs(string[]): Every parameter name the model accepts.required_inputs(string[]): The subset you must supply.total(integer): Matches before paging — use it to driveoffset.
inputs and required_inputs tell you whether a model fits your use case. For types, defaults, enums, and ranges, either fetch the model or pass include_schema=true.
List categories
Returns every capability category present in the catalog — the valid values for thecategory filter.
Response example
Get a model
Returns the same fields as a list entry plusinput_schema, the JSON Schema for the request body.
Path parameters
model_id string (required). The identifier exactly as listed, slashes included — they are path segments, not something to escape. E.g. blackforestlabs/flux-1-kontext/pro/edit.
Request example
Response example
input_schema is the contract for the body you send to POST /v1/models/{model_id}. Each property carries its type, and where the model defines them: default, description, enum (the allowed values), minimum/maximum, maxLength, minItems/maxItems, and multipleOf.
Properties marked "format": "image_uri" (or video_uri / audio_uri, and their plural _uris forms) take a publicly accessible HTTPS URL — see Image/Video/Audio Inputs.
A few properties also carry validations, an array of API-enforced limits such as maximum upload size or image count.
The schema describes the request body, not the RunComfy web UI. Presentation-only hints that the playground uses to render its controls —
title, x-order, x-rc-group-id, and widget-style format values like int_slider_with_range — are stripped, so format appears only when it marks a file input.model_id returns 404001 ResourceNotFound. See Error Codes.
Discover, then run
The two endpoints compose into the normal flow:base_price_usd gives you the base rate up front, but most models multiply it by inputs such as resolution or duration, so treat it as an estimate. For what a run actually cost, call GET /v1/requests/{request_id}/result?include_cost=true — see Retrieve Request Results. For remaining funds, see Balance.