Skip to content
HIPS
  • Earn with your GPU
  • Pricing
  • Docs
Sign inJoin early access
⌘K

Get started

  1. 01Developer hub
  2. 02Quickstart
  3. 03Migrate to HIPS

Guides

  1. 04HIPS SDK
    1. APython
    2. BTypeScript and JavaScript
    3. CGo
    4. DRust
    5. EJava
    6. F.NET
    7. GPHP
    8. HRuby
  2. 05Import and run your model
  3. 06Model and task guides
    1. ATask guides
    2. BLanguage (chat)
    3. CClassification
    4. DImage
    5. EVideo
    6. FAudio
    7. GDocument processing
  4. 07Batch jobs
  5. 08Prompt caching
  6. 09Coding-tool setup
    1. AClaude Code
    2. BOther coding tools and editor integrations
  7. 10Command line
    1. ASign in

Reference

  1. 11API reference
    1. AAuthentication
    2. BChat completions
    3. CResponses
    4. DModels
    5. ETasks
    6. FJobs
    7. GUploads
    8. HDeployments
    9. IRequirements and headers
    10. JErrors
    11. KUsage
    12. LVersioning
  2. 12Operating guidance
    1. ALimits
    2. BErrors
    3. CRetries and billing outcomes
    4. DIdempotency
    5. EStreaming
    6. FData handling
    7. GCompatibility matrix
  3. 13Changelog
Sheet indexAPI reference

Get started

  1. 01Developer hub
  2. 02Quickstart
  3. 03Migrate to HIPS

Guides

  1. 04HIPS SDK
    1. APython
    2. BTypeScript and JavaScript
    3. CGo
    4. DRust
    5. EJava
    6. F.NET
    7. GPHP
    8. HRuby
  2. 05Import and run your model
  3. 06Model and task guides
    1. ATask guides
    2. BLanguage (chat)
    3. CClassification
    4. DImage
    5. EVideo
    6. FAudio
    7. GDocument processing
  4. 07Batch jobs
  5. 08Prompt caching
  6. 09Coding-tool setup
    1. AClaude Code
    2. BOther coding tools and editor integrations
  7. 10Command line
    1. ASign in

Reference

  1. 11API reference
    1. AAuthentication
    2. BChat completions
    3. CResponses
    4. DModels
    5. ETasks
    6. FJobs
    7. GUploads
    8. HDeployments
    9. IRequirements and headers
    10. JErrors
    11. KUsage
    12. LVersioning
  2. 12Operating guidance
    1. ALimits
    2. BErrors
    3. CRetries and billing outcomes
    4. DIdempotency
    5. EStreaming
    6. FData handling
    7. GCompatibility matrix
  3. 13Changelog
11
  1. Docs/
  2. API reference/
  3. Chat completions
(Detail B)

PreviewNot yet validated. Join early access

llms.txt

Chat completions

On this sheet7 sections
  1. Three rules
  2. The request
  3. The model field
  4. The response
  5. Streaming
  6. Tool calls and structured outputs
  7. Errors this route can answer

For open-weight language models the public API is OpenAI-compatible, so OpenAI client SDKs work with a HIPS key, base URL and model id. Compatibility is a request and response shape, validated per endpoint, model and client version; it is never a model list.

POST/v1/chat/completionspreview

Chat completion, streamed or not. The first route built and the first validated.

F
Fig. 1, sheet 11API reference

Three rules

  • Nothing is silently dropped. A field that would change the model's output or the bill and that HIPS or the named model cannot honor is a 400, never ignored.
  • Nothing is silently substituted. The model served is the model named. No fallback to another model, ever.
  • A requirement is never weakened to make a request succeed.

The request

The body is OpenAI's. A 400 names the field in param and the model in message when the refusal depends on the model.

Parts list: Fields

  1. 01
    modelRequired

    A catalog id, an alias, a pinned id or a dep_ id.

  2. 02
    messagesRequired, non-empty

    Roles system, developer, user, assistant, tool. content a string or an array of parts. Text parts always; image_url parts only on a model that advertises vision; input_audio and file parts are a 400 unsupported_parameter (audio goes through the task API).

  3. 03
    streamAccepted

    Server-sent events, one data: line per chunk, then data: [DONE].

  4. 04
    stream_optionsAccepted with stream: true

    include_usage honored. Without stream a 400 unsupported_value.

  5. 05
    max_completion_tokens, max_tokensAccepted

    Both names; both given and different is a 400 invalid_value. Over the model's max_output_tokens is a 400 max_tokens_exceeded. Absent: the model's default from its entry.

  6. 06
    temperature, top_p, stop, seed, presence_penalty, frequency_penaltyAccepted

    Passed to the engine. stop up to the count in the model's entry. seed is best effort; determinism is not promised across workers.

  7. 07
    nAccepted as 1

    Any other value is a 400 unsupported_value: one answer per request, so the quote and the bill are one line.

  8. 08
    response_formatAccepted

    text always; json_object on a model advertising json_object; json_schema with name, schema and strict on a model advertising json_schema. Otherwise a 400 unsupported_parameter naming the feature.

  9. 09
    tools, tool_choice, parallel_tool_callsAccepted

    On a model advertising tools (and parallel_tool_calls for the third). Shapes are OpenAI's, unchanged.

  10. 10
    logprobs, top_logprobsAccepted

    On a model advertising logprobs.

  11. 11
    logit_biasAccepted

    On a model advertising logit_bias.

  12. 12
    reasoning_effortAccepted

    On a model advertising reasoning; otherwise a 400 unsupported_parameter.

  13. 13
    userAccepted, discarded

    It changes neither the output nor the bill. Not stored. Stated here so the discard is not silent.

  14. 14
    store, metadataRejected, 400 stateful_not_supported

    The gateway stores no bodies.

  15. 15
    functions, function_callRejected, 400 unsupported_parameter

    OpenAI's deprecated names; tools is the shape.

  16. 16
    modalities, audio, prediction, web_search_options, service_tierRejected, 400 unsupported_parameter

    Audio and media go through the task API; pools and pricing modes are headers, not a tier.

  17. 17
    Any other nameRejected, 400 unknown_parameter

    Typos are caught, not ignored.

The model field

ValueFormResolves to
Catalog id<family>-<size>[-<variant>], lowercaseThe current pinned version of that catalog entry; moves with releases
AliasAs listed in the entry's hips.aliasesThe entry it names
Pinned id<catalog id>-<version>That version, as long as it is served
Deployment iddep_<base32>A customer model deployment, or a catalog model pinned to an always-on allocation, of the key's workspace
  • Value
    Catalog id
    Form
    <family>-<size>[-<variant>], lowercase
    Resolves to
    The current pinned version of that catalog entry; moves with releases
  • Value
    Alias
    Form
    As listed in the entry's hips.aliases
    Resolves to
    The entry it names
  • Value
    Pinned id
    Form
    <catalog id>-<version>
    Resolves to
    That version, as long as it is served
  • Value
    Deployment id
    Form
    dep_<base32>
    Resolves to
    A customer model deployment, or a catalog model pinned to an always-on allocation, of the key's workspace
SituationAnswer
Unknown id, or another workspace's dep_404 model_not_found
A model the plan does not allow, or a route the key's kind excludes403 model_not_on_plan or key_scope_denied
A dep_ whose model is not a language model400 not_a_language_model (use POST /v1/tasks)
A deployment in stopped400 deployment_stopped
A deployment in allocating or loading503 deployment_not_ready with Retry-After
A deployment waiting for its version's tariff (tariff_pending)503 deployment_not_ready with Retry-After; the message says the tariff is pending. Nothing is charged
A deployment in degradedServed; the state is in GET /v1/models/{id}
  • Situation
    Unknown id, or another workspace's dep_
    Answer
    404 model_not_found
  • Situation
    A model the plan does not allow, or a route the key's kind excludes
    Answer
    403 model_not_on_plan or key_scope_denied
  • Situation
    A dep_ whose model is not a language model
    Answer
    400 not_a_language_model (use POST /v1/tasks)
  • Situation
    A deployment in stopped
    Answer
    400 deployment_stopped
  • Situation
    A deployment in allocating or loading
    Answer
    503 deployment_not_ready with Retry-After
  • Situation
    A deployment waiting for its version's tariff (tariff_pending)
    Answer
    503 deployment_not_ready with Retry-After; the message says the tariff is pending. Nothing is charged
  • Situation
    A deployment in degraded
    Answer
    Served; the state is in GET /v1/models/{id}

The response's model and the x-hips-model header carry the pinned id that was served; x-hips-deployment carries the dep_ id when the request named one.

The response

OpenAI's chat.completion object: id, object, created, model, choices[{index, message{role, content, tool_calls, refusal}, finish_reason, logprobs}], usage.

Parts list: HIPS specifics

  1. 01
    id

    The request id, req_..., so a log line and a support question name the same thing.

  2. 02
    model

    The pinned id served.

  3. 03
    finish_reason

    stop, length, tool_calls. content_filter is never emitted: HIPS applies no output filter on this route.

  4. 04
    system_fingerprint

    Omitted.

  5. 05
    usage

    The usage object. Money is never in it.

  6. 06
    Extras

    In headers, not in the body, except the streamed hips object.

Streaming

stream: true answers 200 with Content-Type: text/event-stream, one data: line per chunk in OpenAI's chat.completion.chunk shape, then data: [DONE]. The rules are on Streaming; the final usage chunk with its hips object looks like this:

Final chunk

00000000000000000000000000000000000000001data: {"id":"req_...","object":"chat.completion.chunk","created":0,"model":"<pinned id>","choices":[],"usage":{"prompt_tokens":0,"completion_tokens":0,"total_tokens":0},"hips":{"cost_micros":0,"latency_ms":0,"quote":"quote_..."}}2 3data: [DONE]
Final chunk sample

Tool calls and structured outputs

Features are advertised per model in GET /v1/models and come from the engine and the model together. Shapes are OpenAI's, unchanged. A feature the model does not advertise is a 400 unsupported_parameter.

FeatureRequestResponse
toolstools: [{"type":"function","function":{...}}]; tool_choice as auto, none, required or a named functionmessage.tool_calls with arguments a JSON string; finish_reason: "tool_calls". Streamed as delta.tool_calls by index
parallel_tool_callsparallel_tool_calls as true or falseMore than one entry in tool_calls
json_objectresponse_format: {"type":"json_object"}content is one JSON document
json_schemaresponse_format: {"type":"json_schema","json_schema":{"name","schema","strict": true}}content validates against the schema; strict: false accepted where the model advertises it
visionimage_url parts in a user messageAs text
logprobslogprobs: true, top_logprobschoices[].logprobs
reasoningreasoning_effortusage.completion_tokens_details.reasoning_tokens
logit_biaslogit_biasApplied by the engine
  • Feature
    tools
    Request
    tools: [{"type":"function","function":{...}}]; tool_choice as auto, none, required or a named function
    Response
    message.tool_calls with arguments a JSON string; finish_reason: "tool_calls". Streamed as delta.tool_calls by index
  • Feature
    parallel_tool_calls
    Request
    parallel_tool_calls as true or false
    Response
    More than one entry in tool_calls
  • Feature
    json_object
    Request
    response_format: {"type":"json_object"}
    Response
    content is one JSON document
  • Feature
    json_schema
    Request
    response_format: {"type":"json_schema","json_schema":{"name","schema","strict": true}}
    Response
    content validates against the schema; strict: false accepted where the model advertises it
  • Feature
    vision
    Request
    image_url parts in a user message
    Response
    As text
  • Feature
    logprobs
    Request
    logprobs: true, top_logprobs
    Response
    choices[].logprobs
  • Feature
    reasoning
    Request
    reasoning_effort
    Response
    usage.completion_tokens_details.reasoning_tokens
  • Feature
    logit_bias
    Request
    logit_bias
    Response
    Applied by the engine

Errors this route can answer

StatusTypeCodeSituationRetry
400invalid_request_errorinvalid_jsonThe body is not JSON, or not an objectNo
400invalid_request_errormissing_required_parameterA required field is absent; param names itNo
400invalid_request_errorinvalid_typeA field has the wrong JSON typeNo
400invalid_request_errorinvalid_valueA value is out of range or malformedNo
400invalid_request_errorunknown_parameterA field the gateway does not know, at any depth; param names itNo
400invalid_request_errorunsupported_parameterA known OpenAI field HIPS does not accept, or a feature the named model does not advertiseNo
400invalid_request_errorunsupported_valuen other than 1, stream_options without stream, a message role or part type not acceptedNo
400invalid_request_errorstateful_not_supportedstore, metadata, previous_response_id, conversationNo
400invalid_request_errorcontext_length_exceededThe prompt is over the model's context_length; the prompt is never truncatedNo
400invalid_request_errormax_tokens_exceededmax_tokens over the model's max_output_tokensNo
400invalid_request_errorinvalid_imageAn image part or input cannot be decoded, is of an unsupported type or over the pixel limitNo
400invalid_request_errornot_a_language_modelA task model or a task-model deployment named on an OpenAI-compatible routeNo
400invalid_request_errordeployment_stoppedThe dep_ is in stopped; start it in the ConsoleNo
400invalid_request_errorinvalid_requirementA requirement header or field with an unknown valueNo
400invalid_request_errorrequirement_conflictTwo requirements that cannot both hold, a header and a hips field that differ, a pool the model is never offered in, personal with an always-on deploymentNo
400invalid_request_errorstable_price_not_in_forcepricing_mode: stable with no stable price covering this workspace, model and periodNo
402insufficient_creditinsufficient_creditThe balance does not cover the request's maximum cost at the bound quote. On the free plan with the allowance used, the message names when it resetsAfter a top-up
403permission_errormodel_not_on_planThe model or feature is not in the workspace's planNo
404not_found_errormodel_not_foundUnknown catalog id, alias, pinned id or dep_; another workspace's dep_No
429rate_limit_errorrate_limit_exceededA rate limit; param is requests, tokens, units or uploads; Retry-AfterYes, after Retry-After
429rate_limit_errorconcurrency_limit_exceededToo many concurrent streams or active jobs; param is streams or jobs; Retry-AfterYes, after Retry-After
503overloaded_errorno_capacityNo eligible worker under the request's requirements, in any pool the requirements allow; Retry-AfterYes
503overloaded_errorpool_unavailableThe named pool has no eligible supply for this model now and fallback is off; the other pool may have; Retry-AfterYes, or with fallback
503overloaded_errordeployment_not_readyThe dep_ is allocating or loading, or waits for its version's tariff (tariff_pending); Retry-AfterYes
503overloaded_erroroverloadedEligible workers exist and every one is saturated, or the queue is full; Retry-AfterYes
500api_errorinternal_errorA fault in HIPS. Nothing billedOnce
500api_errorattempt_failedEvery attempt failed for a reason that is not the client's and retries are exhausted. Nothing billedOnce
  • Status
    400
    Type
    invalid_request_error
    Code
    invalid_json
    Situation
    The body is not JSON, or not an object
    Retry
    No
  • Status
    400
    Type
    invalid_request_error
    Code
    missing_required_parameter
    Situation
    A required field is absent; param names it
    Retry
    No
  • Status
    400
    Type
    invalid_request_error
    Code
    invalid_type
    Situation
    A field has the wrong JSON type
    Retry
    No
  • Status
    400
    Type
    invalid_request_error
    Code
    invalid_value
    Situation
    A value is out of range or malformed
    Retry
    No
  • Status
    400
    Type
    invalid_request_error
    Code
    unknown_parameter
    Situation
    A field the gateway does not know, at any depth; param names it
    Retry
    No
  • Status
    400
    Type
    invalid_request_error
    Code
    unsupported_parameter
    Situation
    A known OpenAI field HIPS does not accept, or a feature the named model does not advertise
    Retry
    No
  • Status
    400
    Type
    invalid_request_error
    Code
    unsupported_value
    Situation
    n other than 1, stream_options without stream, a message role or part type not accepted
    Retry
    No
  • Status
    400
    Type
    invalid_request_error
    Code
    stateful_not_supported
    Situation
    store, metadata, previous_response_id, conversation
    Retry
    No
  • Status
    400
    Type
    invalid_request_error
    Code
    context_length_exceeded
    Situation
    The prompt is over the model's context_length; the prompt is never truncated
    Retry
    No
  • Status
    400
    Type
    invalid_request_error
    Code
    max_tokens_exceeded
    Situation
    max_tokens over the model's max_output_tokens
    Retry
    No
  • Status
    400
    Type
    invalid_request_error
    Code
    invalid_image
    Situation
    An image part or input cannot be decoded, is of an unsupported type or over the pixel limit
    Retry
    No
  • Status
    400
    Type
    invalid_request_error
    Code
    not_a_language_model
    Situation
    A task model or a task-model deployment named on an OpenAI-compatible route
    Retry
    No
  • Status
    400
    Type
    invalid_request_error
    Code
    deployment_stopped
    Situation
    The dep_ is in stopped; start it in the Console
    Retry
    No
  • Status
    400
    Type
    invalid_request_error
    Code
    invalid_requirement
    Situation
    A requirement header or field with an unknown value
    Retry
    No
  • Status
    400
    Type
    invalid_request_error
    Code
    requirement_conflict
    Situation
    Two requirements that cannot both hold, a header and a hips field that differ, a pool the model is never offered in, personal with an always-on deployment
    Retry
    No
  • Status
    400
    Type
    invalid_request_error
    Code
    stable_price_not_in_force
    Situation
    pricing_mode: stable with no stable price covering this workspace, model and period
    Retry
    No
  • Status
    402
    Type
    insufficient_credit
    Code
    insufficient_credit
    Situation
    The balance does not cover the request's maximum cost at the bound quote. On the free plan with the allowance used, the message names when it resets
    Retry
    After a top-up
  • Status
    403
    Type
    permission_error
    Code
    model_not_on_plan
    Situation
    The model or feature is not in the workspace's plan
    Retry
    No
  • Status
    404
    Type
    not_found_error
    Code
    model_not_found
    Situation
    Unknown catalog id, alias, pinned id or dep_; another workspace's dep_
    Retry
    No
  • Status
    429
    Type
    rate_limit_error
    Code
    rate_limit_exceeded
    Situation
    A rate limit; param is requests, tokens, units or uploads; Retry-After
    Retry
    Yes, after Retry-After
  • Status
    429
    Type
    rate_limit_error
    Code
    concurrency_limit_exceeded
    Situation
    Too many concurrent streams or active jobs; param is streams or jobs; Retry-After
    Retry
    Yes, after Retry-After
  • Status
    503
    Type
    overloaded_error
    Code
    no_capacity
    Situation
    No eligible worker under the request's requirements, in any pool the requirements allow; Retry-After
    Retry
    Yes
  • Status
    503
    Type
    overloaded_error
    Code
    pool_unavailable
    Situation
    The named pool has no eligible supply for this model now and fallback is off; the other pool may have; Retry-After
    Retry
    Yes, or with fallback
  • Status
    503
    Type
    overloaded_error
    Code
    deployment_not_ready
    Situation
    The dep_ is allocating or loading, or waits for its version's tariff (tariff_pending); Retry-After
    Retry
    Yes
  • Status
    503
    Type
    overloaded_error
    Code
    overloaded
    Situation
    Eligible workers exist and every one is saturated, or the queue is full; Retry-After
    Retry
    Yes
  • Status
    500
    Type
    api_error
    Code
    internal_error
    Situation
    A fault in HIPS. Nothing billed
    Retry
    Once
  • Status
    500
    Type
    api_error
    Code
    attempt_failed
    Situation
    Every attempt failed for a reason that is not the client's and retries are exhausted. Nothing billed
    Retry
    Once

Related sheets

  • Quickstart
  • Streaming
  • Compatibility matrix
Previous sheetAuthentication
Next sheetResponses
Sheet
11 of 13
Detail
B
Updated
2026-10-21
Status
Preview
Join early access

On this sheet

  1. Three rules
  2. The request
  3. The model field
  4. The response
  5. Streaming
  6. Tool calls and structured outputs
  7. Errors this route can answer

Product

  • Inference
  • Models
  • Deploy your model
  • Always-on GPU capacity
  • How it works
  • Use cases
  • Pricing

Developer

  • Docs
  • Quickstart preview
  • Migrate to HIPS
  • HIPS SDK
  • Batch jobs
  • API reference

Provider

  • Earn with your GPU
  • Register GPU interest
  • Download for Mac
  • Download for Windows
  • Download for Linux

Resource

  • Security and Data
  • Resources
  • llms.txt

Company

  • About
  • Contact
  • Affiliate program
  • HIPS Payments

Legal

  • Legal
  • Consumer Health Data Privacy Policy
  • Report content
  • Cookie settings

Support

  • Contact HIPS
  • Looking for payments support?

HIPS. AI inference for builders.

hips.com

Hyperscale Inference Processing Systems OÜ