CP·CP LEDGER
Documentation

Models and providers

How model ids are shaped, what the catalogue publishes, and what this deployment can route.

The catalogue tells you what can be called and on what terms. It is public: the endpoints on this page take no API key, and every response below was fetched without one.

How model ids are shaped

A model id is two segments, author/slug:

TEXT
impCC/DeepSeek-V4-Flash-0731

The author segment names who publishes the model, the slug names the model. Pass the whole string, both segments, as model on a completion request — the slug alone is not an id and will not resolve. Ids are case-sensitive; the author above really does carry a lowercase i and two capitals.

Some ids carry a colon-suffixed variant, as in author/slug:variant. Ids of that shape are part of the catalogue format we implement; none is served here today, because only one model is.

What this deployment can actually route

One model. Not one of many that happen to be listed — one, in total.

BASH
curl -s "https://api.impossiblecarrot.cc/api/v1/models/count"
JSON
{"data":{"count":1}}

This is the point at which most gateway documentation would describe a menu of hundreds. The live catalogue on this deployment holds only what it can genuinely serve, so the count above is the whole of it. When more endpoints are wired in, the same request will say so — which is the reason to make the request rather than to trust a list written down somewhere.

That advice is not hypothetical. While these pages were being written, this model's id changed from local-test-provider/dsv4s to the id above, and every sample here had to be re-run. Code that had pasted the old string in stopped working; code that read /api/v1/models did not.

The full record:

BASH
curl -s "https://api.impossiblecarrot.cc/api/v1/models"
JSON
{
  "data": [
    {
      "id": "impCC/DeepSeek-V4-Flash-0731",
      "canonical_slug": "impCC/DeepSeek-V4-Flash-0731",
      "name": "ImpCC: DeepSeek V4 Flash 0731 (abliterated)",
      "created": 1786677579,
      "description": "An abliterated (decensored) rebuild of deepseek-ai/DeepSeek-V4-Flash-0731, published by ImpCC and served here on our own hardware. [...]",
      "context_length": 131072,
      "architecture": {
        "modality": "text->text",
        "input_modalities": ["text"],
        "output_modalities": ["text"],
        "tokenizer": "DeepSeek",
        "instruct_type": null
      },
      "pricing": {
        "prompt": "0.0000001",
        "completion": "0.0000004",
        "input_cache_read": "0.000000037",
        "input_cache_write": "0.00000013"
      },
      "top_provider": { "context_length": 131072, "max_completion_tokens": null, "is_moderated": false },
      "per_request_limits": null,
      "supported_parameters": ["frequency_penalty", "logprobs", "max_completion_tokens", "max_tokens", "parallel_tool_calls", "presence_penalty", "repetition_penalty", "response_format", "seed", "stop", "structured_outputs", "temperature", "tool_choice", "tools", "top_k", "top_logprobs", "top_p"],
      "default_parameters": null,
      "supported_voices": null,
      "links": { "details": "/api/v1/models/impCC/DeepSeek-V4-Flash-0731/endpoints" }
    }
  ],
  "total_count": 1,
  "links": { "next": null }
}

The description is shortened at the marked point — the endpoint returns several hundred more words of it, covering how the model was built and what it was built from. Everything else above is exactly as it came back.

Reading the model record

  • pricing — US dollars per token, as decimal strings. "0.0000001" on prompt is $0.10 per million input tokens. They are strings on purpose: real catalogue rates run to more decimal places than a JSON number carries without rounding, and a price that rounds is a price that bills wrong.
  • context_length — the total prompt-plus-completion window, here 131,072 tokens. Note that the model's own architecture allows considerably more; this figure is what the endpoint was launched with, and the launch argument is what the catalogue reports.
  • supported_parameters — the request fields this model honours. A parameter not in this list is not silently applied.
  • top_provider.max_completion_tokensnull, meaning no output cap beyond the context window is published for this model.
  • architecture.input_modalities["text"]. Text in, text out. There is no image or audio input on this deployment.
  • is_moderatedfalse. No moderation pass runs in front of this model.

Endpoints behind a model

One model id can be served by several endpoints. links.details on the model record points at the list, which carries the per-endpoint terms — the model record's pricing is a headline, and the endpoint's is what is charged.

BASH
curl -s "https://api.impossiblecarrot.cc/api/v1/models/impCC/DeepSeek-V4-Flash-0731/endpoints"
JSON
{
  "data": {
    "id": "impCC/DeepSeek-V4-Flash-0731",
    "name": "ImpCC: DeepSeek V4 Flash 0731 (abliterated)",
    "endpoints": [
      {
        "name": "Stealth | dsv4s",
        "upstream_model_id": "dsv4s",
        "model_id": "impCC/DeepSeek-V4-Flash-0731",
        "context_length": 131072,
        "pricing": { "prompt": "0.0000001", "completion": "0.0000004", "input_cache_read": "0.000000037", "input_cache_write": "0.00000013" },
        "provider_name": "Stealth",
        "tag": "impcc",
        "quantization": "fp4",
        "max_completion_tokens": null,
        "max_prompt_tokens": 131072,
        "uptime_last_30m": 97.8261,
        "uptime_last_5m": null,
        "uptime_last_1d": 97.8261,
        "latency_last_30m": null,
        "throughput_last_30m": null,
        "supports_implicit_caching": true
      }
    ]
  }
}

Fields on that row worth knowing:

  • tag is the routing identity — the canonical handle that selects this endpoint.
  • provider_name is a display name drawn from a fixed set of upstream provider names. Ours has to borrow a member of that set, which is why it reads Stealth rather than anything descriptive. Treat tag as the identity and provider_name as a label that cannot yet say the right thing.
  • latency_last_30m and throughput_last_30m are null. No figure is published where no observation exists; a zero, or a plausible-looking number, would be worse than the null.
  • uptime_last_5m is null for the same reason, while the 30-minute and one-day windows do carry figures.

The provider directory

/api/v1/providers lists the organisations behind the endpoints.

BASH
curl -s "https://api.impossiblecarrot.cc/api/v1/providers"
JSON
{"data":[{"name":"ImpCC","slug":"impcc","privacy_policy_url":"","terms_of_service_url":null,"status_page_url":null,"headquarters":null,"datacenters":[],"icon":null}]}

slug here is the same impcc that appears as the endpoint's tag, and that is the join between the two: an endpoint is matched to its provider by that canonical handle, never by the display name, which several parties can share.

The policy and location fields are empty because no such document or declaration has been recorded for this provider yet. They are blank rather than filled with a placeholder that would read as a commitment nobody has made.

Choosing a provider per request

The catalogue format we implement carries request-level provider preferences — routing order, fallbacks, and filters on things like data policy. With a single routable endpoint there is nothing for any of that to choose between, so this page does not document behaviour you cannot currently exercise. It will be written up when there is a second endpoint to route to.