Gå til indholdet

API-reference

Coding-API Beta

Beta: i brug, men detaljer kan stadig ændre sig.

Account, models and streamed completions for coding clients. Beta. Needs a personal key with coding:read or coding:complete; an organisation integration key gets 403 integration_not_permitted.

Basisadresse
https://api.komplai.dk

Read the coding account Beta

GET /v1/coding/account

Your organisation, the current terms as contract, where a coding call's data goes, the organisation's monthly AI spending cap and this month's use (in balance, a name kept for installed clients), the default model and the coding models with the provider's prices. Read it before the first completion and whenever a completion answers 409 terms_changed, and show the terms to the person before they connect. It sends no text and runs no model. Needs a personal key with coding:read.

Scopes
coding:read
Prøv kaldet

Kaldene er rigtige: komplai behandler det, du sender, hvert kald tæller med i nøglens grænser, og behandling i EU-cloud tæller med i organisationens månedlige loft for AI-forbrug. Brug testdata.

En nøgle, der starter med kp_live_. Den bliver på denne side, til du forlader den, og sendes kun til api.komplai.dk.

Svar

200 OK

Your organisation, the current terms (contract) and data terms, the monthly AI spending cap and this month's use (balance), and the coding models with their prices.

Headere

  • Request-Id string påkrævet

    This request's id: your X-Request-Id when you sent one valid UUID, otherwise a new UUID. An error body repeats it as request_id.

    Format
    uuid

Body

  • id string påkrævet

    The organisation's id.

    Format
    uuid
  • name string påkrævet

    The organisation's name.

  • contract string påkrævet

    The current terms: provider, region, terms, data mode, agreement and the coding models with their prices, as one SHA-256 value. Send it as X-Komplai-Contract on every completion; it changes when any of them changes.

    Mønster
    ^[0-9a-f]{64}$
  • balance object påkrævet

    The organisation's monthly AI spending cap and how much of it is used this month. The field keeps its name for installed clients; it is a ceiling, not money held on account. When the effective limit is reached, calls stop; the API never moves to another model.

    Underfelter (11)
    • budgetKind string

      pilot while komplai pays for a pilot's AI usage from one total allowance that never renews. Missing for a monthly cap.

      En af
      monthly pilot
    • periodStart string påkrævet kan være null

      When the current month (or the pilot) began; null without a cap.

      Format
      date-time
    • periodEnd string påkrævet kan være null

      When the current month ends; null for a pilot or without a cap.

      Format
      date-time
    • packageDkk integer påkrævet kan være null

      The agreed monthly AI spending cap in whole kroner (for a pilot, its total allowance); null without one. The name is kept for installed clients.

    • budgetMicros integer påkrævet

      The agreed cap, in millionths of a krone (1000000 is one krone).

      Værdi
      mindst 0
    • spentMicros integer påkrævet

      Usage settled so far this month, in millionths of a krone (1000000 is one krone).

      Værdi
      mindst 0
    • reservedMicros integer påkrævet

      Usage held for calls still running, in millionths of a krone (1000000 is one krone).

      Værdi
      mindst 0
    • availableMicros integer påkrævet

      What is left below the effective limit this month, never below 0, in millionths of a krone (1000000 is one krone).

      Værdi
      mindst 0
    • active boolean påkrævet

      Whether the cap applies to the current month.

    • organisationLimitMicros integer påkrævet kan være null

      The organisation's own lower limit, set by its administrator, in millionths of a krone; null without one.

    • limitMicros integer påkrævet

      The effective limit: the agreed cap, or the organisation's own limit when that is lower, in millionths of a krone (1000000 is one krone).

      Værdi
      mindst 0
  • defaultModel string påkrævet kan være null

    The organisation's default coding model; null when its default is not a coding model.

  • data object påkrævet

    Where a coding call's data goes and how it is kept, in Danish, as the coding clients show it to the person before they connect.

    Underfelter (10)
    • recipients string påkrævet
    • region string påkrævet
    • training string påkrævet

      The provider's terms on training.

    • retention string påkrævet

      The provider's terms on retention.

    • source string påkrævet

      The provider's own page with the terms.

      Format
      uri
    • checkedAt string påkrævet

      When komplai last checked the terms.

      Format
      date
    • version string påkrævet
    • mode string påkrævet

      synthetic: use test data only. personal: personal data under the organisation's agreement.

      En af
      synthetic personal
    • accounting string påkrævet
    • platformStorage string påkrævet
  • credential object påkrævet

    The key that made this call.

    Underfelter (3)
    • id string påkrævet
      Format
      uuid
    • scopes string[] påkrævet
    • expiresAt string påkrævet
      Format
      date-time
  • models object[] påkrævet

    The models a coding client may use.

    Underfelter (14)
    • id string påkrævet

      The value for model in POST /v1/coding/chat/completions.

    • name string påkrævet
    • object string påkrævet
      En af
      model
    • owned_by string påkrævet
      En af
      komplai
    • context_length integer påkrævet

      The model's context in tokens: input and output together.

    • max_output_tokens integer påkrævet

      The most max_tokens the model takes.

    • capabilities object påkrævet
      Underfelter (1)
      • function_calling boolean påkrævet
        En af
        true
    • reasoning_efforts string[] påkrævet

      The reasoning_effort values the model takes; empty when it takes none.

    • pricing object påkrævet

      The provider's prices, which usage is metered at and counted towards the organisation's monthly AI spending cap.

      Underfelter (4)
      • currency string påkrævet
        En af
        DKK
      • prompt string påkrævet

        The provider's price per input token in DKK, as a decimal string.

      • completion string påkrævet

        The provider's price per output (reasoning included) token in DKK, as a decimal string.

      • input_cache_read string påkrævet

        The provider's price per cached input token in DKK, as a decimal string.

401 Unauthorized

The key is missing or not valid.

Fejlkoder

  • api_key_required No Authorization: Bearer header with a komplai key.
  • invalid_api_key The key is unknown, expired, revoked or retired, the person behind a personal key is no longer a member or no longer assigned any app the key covers, or your organisation's API access for it is not set up or no longer active.
  • invalid_token The key was revoked or expired, or its access ended, while the request was admitted or processed.

Headere

  • Request-Id string påkrævet

    This request's id: your X-Request-Id when you sent one valid UUID, otherwise a new UUID. An error body repeats it as request_id.

    Format
    uuid
403 Forbidden

The key may not do this, or the organisation's access does not cover it.

Fejlkoder

  • integration_not_permitted An organisation integration key cannot use this operation or this option.
  • insufficient_scope The key lacks a scope the operation needs (x-komplai-scopes): it was not issued or created with it, its person is no longer assigned the app, or the organisation's processing approval no longer covers it.
  • identity_retired The person behind a personal key has been removed from komplai.
  • coding_not_enabled Coding is not enabled for the organisation, its Chat does not run in komplai's EU cloud with an approved setup, or the key's person is not assigned Chat.

Headere

  • Request-Id string påkrævet

    This request's id: your X-Request-Id when you sent one valid UUID, otherwise a new UUID. An error body repeats it as request_id.

    Format
    uuid
429 Too Many Requests

Refused for now. Wait the seconds in Retry-After before you try again.

Fejlkoder

  • rate_limited Too many requests: the per-minute limit of the person behind a personal key (shared with that person's other keys and use of the hub) or of the integration behind an organisation integration key (shared by its keys), the organisation's (120), the API's (300) or the per-IP network limit. Wait Retry-After seconds.

Headere

  • Request-Id string påkrævet

    This request's id: your X-Request-Id when you sent one valid UUID, otherwise a new UUID. An error body repeats it as request_id.

    Format
    uuid
  • Retry-After integer påkrævet

    Seconds to wait before trying again (at most 60).

    Værdi
    1 til 60
  • x-ratelimit-limit integer

    Requests per minute allowed from your IP address (the per-IP network limit).

  • x-ratelimit-remaining integer

    Requests left in the current minute from your IP address.

  • x-ratelimit-reset integer

    Seconds until the per-IP window resets.

503 Service Unavailable

Processing is not available right now.

Fejlkoder

Headere

  • Request-Id string påkrævet

    This request's id: your X-Request-Id when you sent one valid UUID, otherwise a new UUID. An error body repeats it as request_id.

    Format
    uuid
KaldGET /v1/coding/account
curl
curl https://api.komplai.dk/v1/coding/account \
  -H "Authorization: Bearer $KOMPLAI_TOKEN"
PowerShell
$headers = @{
    Authorization = "Bearer $env:KOMPLAI_TOKEN"
}

$request = @{
    Method = 'Get'
    Uri = 'https://api.komplai.dk/v1/coding/account'
    Headers = $headers
}
$response = Invoke-RestMethod @request
$response | ConvertTo-Json -Depth 100
Python
import os

import requests

response = requests.get(
    "https://api.komplai.dk/v1/coding/account",
    headers={
        "Authorization": f"Bearer {os.environ['KOMPLAI_TOKEN']}",
    },
    timeout=330,
)
print(response.status_code, response.headers.get("Request-Id"))
print(response.json())
JavaScript
const response = await fetch("https://api.komplai.dk/v1/coding/account", {
  headers: {
    Authorization: `Bearer ${process.env.KOMPLAI_TOKEN}`,
  },
});

console.log(response.status, response.headers.get("Request-Id"));
console.log(await response.json());
C#
using System;
using System.Net.Http;
using System.Net.Http.Headers;

using var client = new HttpClient { Timeout = TimeSpan.FromSeconds(330) };
using var request = new HttpRequestMessage(HttpMethod.Get, "https://api.komplai.dk/v1/coding/account");
request.Headers.Authorization = new AuthenticationHeaderValue(
    "Bearer", Environment.GetEnvironmentVariable("KOMPLAI_TOKEN"));

using var response = await client.SendAsync(request);
Console.WriteLine((int)response.StatusCode);
if (response.Headers.TryGetValues("Request-Id", out var requestId))
{
    Console.WriteLine(string.Join(", ", requestId));
}
Console.WriteLine(await response.Content.ReadAsStringAsync());

Sæt først miljøvariablen KOMPLAI_TOKEN til din nøgle.

Svar
200 OK
{
  "id": "2e7c4b9a-5d1f-4a3e-8b6c-9f0d1e2a3b4c",
  "name": "Eksempel Kommune",
  "contract": "86fb88e41acf1ec181a16eaf5d7725059473b626b7d4289ee1b9c3b2aaed45b0",
  "balance": {
    "periodStart": "2026-10-01T00:00:00.000Z",
    "periodEnd": "2026-11-01T00:00:00.000Z",
    "packageDkk": 2500,
    "budgetMicros": 2500000000,
    "spentMicros": 412350000,
    "reservedMicros": 1200000,
    "availableMicros": 2086450000,
    "active": true,
    "organisationLimitMicros": null,
    "limitMicros": 2500000000
  },
  "defaultModel": "mistral-small-3.2-24b-instruct-2506",
  "data": {
    "recipients": "komplai → EU-cloud",
    "region": "komplais API: Hetzner, Tyskland. Model: komplais EU-cloud, EU · Frankrig.",
    "training": "komplais EU-cloud bruger ikke input, prompts eller svar til at træne, genoptræne eller forbedre grundmodellerne.",
    "retention": "Prompt- og svarindhold gemmes som udgangspunkt ikke. Midlertidig, projektisoleret cache af mellemresultater er automatisk og kan ikke fravælges. Ved særlige fejlfindings- eller sikkerhedshændelser, herunder undersøgelser af HTTP 500-fejl, kan hele forespørgslen gemmes i op til to uger. Aggregerede, anonymiserede forbrugsdata kan gemmes i op til seks måneder.",
    "source": "https://developers.komplai.dk/data-processing",
    "checkedAt": "2026-10-13",
    "version": "eu-cloud-2026-10-13",
    "mode": "synthetic",
    "accounting": "Forbruget måles til udbyderens pris i DKK og tæller med i organisationens månedlige loft for AI-forbrug. Cachet input har sin egen pris, hvor udbyderen har en. Ræsonnement tæller som outputtokens. Når loftet eller din personlige grænse er nået, stopper kaldene. Der skiftes aldrig automatisk til en anden model.",
    "platformStorage": "komplai gemmer forbrugs- og adgangsmetadata til regnskab og revision. Kode-API'et gemmer ikke prompts, svar eller værktøjsresultater. Se organisationens aftale for metadataenes slettefrist."
  },
  "models": [
    {
      "id": "mistral-small-3.2-24b-instruct-2506",
      "name": "Mistral Small 3.2 (24B)",
      "object": "model",
      "owned_by": "komplai",
      "context_length": 128000,
      "max_output_tokens": 32768,
      "capabilities": {
        "function_calling": true
      },
      "reasoning_efforts": [],
      "pricing": {
        "currency": "DKK",
        "prompt": "0.000001119",
        "completion": "0.000002611",
        "input_cache_read": "0.000001119"
      }
    },
    {
      "id": "qwen3.5-397b-a17b",
      "name": "Qwen3.5 (397B-A17B)",
      "object": "model",
      "owned_by": "komplai",
      "context_length": 250000,
      "max_output_tokens": 16384,
      "capabilities": {
        "function_calling": true
      },
      "reasoning_efforts": ["none", "low", "medium", "high"],
      "pricing": {
        "currency": "DKK",
        "prompt": "0.000004476",
        "completion": "0.000026856",
        "input_cache_read": "0.000004476"
      }
    }
  ],
  "credential": {
    "id": "a4b6c8d0-1e3f-4a5b-9c7d-2e4f6a8b0c1d",
    "scopes": ["coding:read", "coding:complete"],
    "expiresAt": "2026-11-19T08:00:00.000Z"
  }
}
401 Unauthorized
{
  "error": "api_key_required",
  "request_id": "0f8e2c4a-6b1d-4e3f-9a7c-5d2b8e1f4a60",
  "doc_url": "https://developers.komplai.dk/errors/api_key_required"
}
403 Forbidden
{
  "error": "integration_not_permitted",
  "request_id": "0f8e2c4a-6b1d-4e3f-9a7c-5d2b8e1f4a60",
  "doc_url": "https://developers.komplai.dk/errors/integration_not_permitted"
}
429 Too Many Requests
{
  "error": "rate_limited",
  "request_id": "0f8e2c4a-6b1d-4e3f-9a7c-5d2b8e1f4a60",
  "doc_url": "https://developers.komplai.dk/errors/rate_limited"
}
503 Service Unavailable
{
  "error": "chat_cloud_unavailable",
  "request_id": "0f8e2c4a-6b1d-4e3f-9a7c-5d2b8e1f4a60",
  "doc_url": "https://developers.komplai.dk/errors/chat_cloud_unavailable"
}

List the coding models Beta

GET /v1/coding/models

The models a coding client may use, with their limits and the provider's prices, in the OpenAI list shape, and the account without its models. Needs a personal key with coding:read.

Scopes
coding:read
Prøv kaldet

Kaldene er rigtige: komplai behandler det, du sender, hvert kald tæller med i nøglens grænser, og behandling i EU-cloud tæller med i organisationens månedlige loft for AI-forbrug. Brug testdata.

En nøgle, der starter med kp_live_. Den bliver på denne side, til du forlader den, og sendes kun til api.komplai.dk.

Svar

200 OK

The coding models with their limits and prices in data, and the account without its models in account.

Headere

  • Request-Id string påkrævet

    This request's id: your X-Request-Id when you sent one valid UUID, otherwise a new UUID. An error body repeats it as request_id.

    Format
    uuid

Body

  • object string påkrævet
    En af
    list
  • data object[] påkrævet
    Underfelter (14)
    • id string påkrævet

      The value for model in POST /v1/coding/chat/completions.

    • name string påkrævet
    • object string påkrævet
      En af
      model
    • owned_by string påkrævet
      En af
      komplai
    • context_length integer påkrævet

      The model's context in tokens: input and output together.

    • max_output_tokens integer påkrævet

      The most max_tokens the model takes.

    • capabilities object påkrævet
      Underfelter (1)
      • function_calling boolean påkrævet
        En af
        true
    • reasoning_efforts string[] påkrævet

      The reasoning_effort values the model takes; empty when it takes none.

    • pricing object påkrævet

      The provider's prices, which usage is metered at and counted towards the organisation's monthly AI spending cap.

      Underfelter (4)
      • currency string påkrævet
        En af
        DKK
      • prompt string påkrævet

        The provider's price per input token in DKK, as a decimal string.

      • completion string påkrævet

        The provider's price per output (reasoning included) token in DKK, as a decimal string.

      • input_cache_read string påkrævet

        The provider's price per cached input token in DKK, as a decimal string.

  • account object påkrævet

    The same account as GET /v1/coding/account, without models.

    Underfelter (31)
    • id string påkrævet

      The organisation's id.

      Format
      uuid
    • name string påkrævet

      The organisation's name.

    • contract string påkrævet

      The current terms: provider, region, terms, data mode, agreement and the coding models with their prices, as one SHA-256 value. Send it as X-Komplai-Contract on every completion; it changes when any of them changes.

      Mønster
      ^[0-9a-f]{64}$
    • balance object påkrævet

      The organisation's monthly AI spending cap and how much of it is used this month. The field keeps its name for installed clients; it is a ceiling, not money held on account. When the effective limit is reached, calls stop; the API never moves to another model.

      Underfelter (11)
      • budgetKind string

        pilot while komplai pays for a pilot's AI usage from one total allowance that never renews. Missing for a monthly cap.

        En af
        monthly pilot
      • periodStart string påkrævet kan være null

        When the current month (or the pilot) began; null without a cap.

        Format
        date-time
      • periodEnd string påkrævet kan være null

        When the current month ends; null for a pilot or without a cap.

        Format
        date-time
      • packageDkk integer påkrævet kan være null

        The agreed monthly AI spending cap in whole kroner (for a pilot, its total allowance); null without one. The name is kept for installed clients.

      • budgetMicros integer påkrævet

        The agreed cap, in millionths of a krone (1000000 is one krone).

        Værdi
        mindst 0
      • spentMicros integer påkrævet

        Usage settled so far this month, in millionths of a krone (1000000 is one krone).

        Værdi
        mindst 0
      • reservedMicros integer påkrævet

        Usage held for calls still running, in millionths of a krone (1000000 is one krone).

        Værdi
        mindst 0
      • availableMicros integer påkrævet

        What is left below the effective limit this month, never below 0, in millionths of a krone (1000000 is one krone).

        Værdi
        mindst 0
      • active boolean påkrævet

        Whether the cap applies to the current month.

      • organisationLimitMicros integer påkrævet kan være null

        The organisation's own lower limit, set by its administrator, in millionths of a krone; null without one.

      • limitMicros integer påkrævet

        The effective limit: the agreed cap, or the organisation's own limit when that is lower, in millionths of a krone (1000000 is one krone).

        Værdi
        mindst 0
    • defaultModel string påkrævet kan være null

      The organisation's default coding model; null when its default is not a coding model.

    • data object påkrævet

      Where a coding call's data goes and how it is kept, in Danish, as the coding clients show it to the person before they connect.

      Underfelter (10)
      • recipients string påkrævet
      • region string påkrævet
      • training string påkrævet

        The provider's terms on training.

      • retention string påkrævet

        The provider's terms on retention.

      • source string påkrævet

        The provider's own page with the terms.

        Format
        uri
      • checkedAt string påkrævet

        When komplai last checked the terms.

        Format
        date
      • version string påkrævet
      • mode string påkrævet

        synthetic: use test data only. personal: personal data under the organisation's agreement.

        En af
        synthetic personal
      • accounting string påkrævet
      • platformStorage string påkrævet
    • credential object påkrævet

      The key that made this call.

      Underfelter (3)
      • id string påkrævet
        Format
        uuid
      • scopes string[] påkrævet
      • expiresAt string påkrævet
        Format
        date-time
401 Unauthorized

The key is missing or not valid.

Fejlkoder

  • api_key_required No Authorization: Bearer header with a komplai key.
  • invalid_api_key The key is unknown, expired, revoked or retired, the person behind a personal key is no longer a member or no longer assigned any app the key covers, or your organisation's API access for it is not set up or no longer active.
  • invalid_token The key was revoked or expired, or its access ended, while the request was admitted or processed.

Headere

  • Request-Id string påkrævet

    This request's id: your X-Request-Id when you sent one valid UUID, otherwise a new UUID. An error body repeats it as request_id.

    Format
    uuid
403 Forbidden

The key may not do this, or the organisation's access does not cover it.

Fejlkoder

  • integration_not_permitted An organisation integration key cannot use this operation or this option.
  • insufficient_scope The key lacks a scope the operation needs (x-komplai-scopes): it was not issued or created with it, its person is no longer assigned the app, or the organisation's processing approval no longer covers it.
  • identity_retired The person behind a personal key has been removed from komplai.
  • coding_not_enabled Coding is not enabled for the organisation, its Chat does not run in komplai's EU cloud with an approved setup, or the key's person is not assigned Chat.

Headere

  • Request-Id string påkrævet

    This request's id: your X-Request-Id when you sent one valid UUID, otherwise a new UUID. An error body repeats it as request_id.

    Format
    uuid
429 Too Many Requests

Refused for now. Wait the seconds in Retry-After before you try again.

Fejlkoder

  • rate_limited Too many requests: the per-minute limit of the person behind a personal key (shared with that person's other keys and use of the hub) or of the integration behind an organisation integration key (shared by its keys), the organisation's (120), the API's (300) or the per-IP network limit. Wait Retry-After seconds.

Headere

  • Request-Id string påkrævet

    This request's id: your X-Request-Id when you sent one valid UUID, otherwise a new UUID. An error body repeats it as request_id.

    Format
    uuid
  • Retry-After integer påkrævet

    Seconds to wait before trying again (at most 60).

    Værdi
    1 til 60
  • x-ratelimit-limit integer

    Requests per minute allowed from your IP address (the per-IP network limit).

  • x-ratelimit-remaining integer

    Requests left in the current minute from your IP address.

  • x-ratelimit-reset integer

    Seconds until the per-IP window resets.

503 Service Unavailable

Processing is not available right now.

Fejlkoder

Headere

  • Request-Id string påkrævet

    This request's id: your X-Request-Id when you sent one valid UUID, otherwise a new UUID. An error body repeats it as request_id.

    Format
    uuid
KaldGET /v1/coding/models
curl
curl https://api.komplai.dk/v1/coding/models \
  -H "Authorization: Bearer $KOMPLAI_TOKEN"
PowerShell
$headers = @{
    Authorization = "Bearer $env:KOMPLAI_TOKEN"
}

$request = @{
    Method = 'Get'
    Uri = 'https://api.komplai.dk/v1/coding/models'
    Headers = $headers
}
$response = Invoke-RestMethod @request
$response | ConvertTo-Json -Depth 100
Python
import os

import requests

response = requests.get(
    "https://api.komplai.dk/v1/coding/models",
    headers={
        "Authorization": f"Bearer {os.environ['KOMPLAI_TOKEN']}",
    },
    timeout=330,
)
print(response.status_code, response.headers.get("Request-Id"))
print(response.json())
JavaScript
const response = await fetch("https://api.komplai.dk/v1/coding/models", {
  headers: {
    Authorization: `Bearer ${process.env.KOMPLAI_TOKEN}`,
  },
});

console.log(response.status, response.headers.get("Request-Id"));
console.log(await response.json());
C#
using System;
using System.Net.Http;
using System.Net.Http.Headers;

using var client = new HttpClient { Timeout = TimeSpan.FromSeconds(330) };
using var request = new HttpRequestMessage(HttpMethod.Get, "https://api.komplai.dk/v1/coding/models");
request.Headers.Authorization = new AuthenticationHeaderValue(
    "Bearer", Environment.GetEnvironmentVariable("KOMPLAI_TOKEN"));

using var response = await client.SendAsync(request);
Console.WriteLine((int)response.StatusCode);
if (response.Headers.TryGetValues("Request-Id", out var requestId))
{
    Console.WriteLine(string.Join(", ", requestId));
}
Console.WriteLine(await response.Content.ReadAsStringAsync());

Sæt først miljøvariablen KOMPLAI_TOKEN til din nøgle.

Svar
200 OK
{
  "object": "list",
  "data": [
    {
      "id": "mistral-small-3.2-24b-instruct-2506",
      "name": "Mistral Small 3.2 (24B)",
      "object": "model",
      "owned_by": "komplai",
      "context_length": 128000,
      "max_output_tokens": 32768,
      "capabilities": {
        "function_calling": true
      },
      "reasoning_efforts": [],
      "pricing": {
        "currency": "DKK",
        "prompt": "0.000001119",
        "completion": "0.000002611",
        "input_cache_read": "0.000001119"
      }
    },
    {
      "id": "qwen3.5-397b-a17b",
      "name": "Qwen3.5 (397B-A17B)",
      "object": "model",
      "owned_by": "komplai",
      "context_length": 250000,
      "max_output_tokens": 16384,
      "capabilities": {
        "function_calling": true
      },
      "reasoning_efforts": ["none", "low", "medium", "high"],
      "pricing": {
        "currency": "DKK",
        "prompt": "0.000004476",
        "completion": "0.000026856",
        "input_cache_read": "0.000004476"
      }
    }
  ],
  "account": {
    "id": "2e7c4b9a-5d1f-4a3e-8b6c-9f0d1e2a3b4c",
    "name": "Eksempel Kommune",
    "contract": "86fb88e41acf1ec181a16eaf5d7725059473b626b7d4289ee1b9c3b2aaed45b0",
    "balance": {
      "periodStart": "2026-10-01T00:00:00.000Z",
      "periodEnd": "2026-11-01T00:00:00.000Z",
      "packageDkk": 2500,
      "budgetMicros": 2500000000,
      "spentMicros": 412350000,
      "reservedMicros": 1200000,
      "availableMicros": 2086450000,
      "active": true,
      "organisationLimitMicros": null,
      "limitMicros": 2500000000
    },
    "defaultModel": "mistral-small-3.2-24b-instruct-2506",
    "data": {
      "recipients": "komplai → EU-cloud",
      "region": "komplais API: Hetzner, Tyskland. Model: komplais EU-cloud, EU · Frankrig.",
      "training": "komplais EU-cloud bruger ikke input, prompts eller svar til at træne, genoptræne eller forbedre grundmodellerne.",
      "retention": "Prompt- og svarindhold gemmes som udgangspunkt ikke. Midlertidig, projektisoleret cache af mellemresultater er automatisk og kan ikke fravælges. Ved særlige fejlfindings- eller sikkerhedshændelser, herunder undersøgelser af HTTP 500-fejl, kan hele forespørgslen gemmes i op til to uger. Aggregerede, anonymiserede forbrugsdata kan gemmes i op til seks måneder.",
      "source": "https://developers.komplai.dk/data-processing",
      "checkedAt": "2026-10-13",
      "version": "eu-cloud-2026-10-13",
      "mode": "synthetic",
      "accounting": "Forbruget måles til udbyderens pris i DKK og tæller med i organisationens månedlige loft for AI-forbrug. Cachet input har sin egen pris, hvor udbyderen har en. Ræsonnement tæller som outputtokens. Når loftet eller din personlige grænse er nået, stopper kaldene. Der skiftes aldrig automatisk til en anden model.",
      "platformStorage": "komplai gemmer forbrugs- og adgangsmetadata til regnskab og revision. Kode-API'et gemmer ikke prompts, svar eller værktøjsresultater. Se organisationens aftale for metadataenes slettefrist."
    },
    "credential": {
      "id": "a4b6c8d0-1e3f-4a5b-9c7d-2e4f6a8b0c1d",
      "scopes": ["coding:read", "coding:complete"],
      "expiresAt": "2026-11-19T08:00:00.000Z"
    }
  }
}
401 Unauthorized
{
  "error": "api_key_required",
  "request_id": "0f8e2c4a-6b1d-4e3f-9a7c-5d2b8e1f4a60",
  "doc_url": "https://developers.komplai.dk/errors/api_key_required"
}
403 Forbidden
{
  "error": "integration_not_permitted",
  "request_id": "0f8e2c4a-6b1d-4e3f-9a7c-5d2b8e1f4a60",
  "doc_url": "https://developers.komplai.dk/errors/integration_not_permitted"
}
429 Too Many Requests
{
  "error": "rate_limited",
  "request_id": "0f8e2c4a-6b1d-4e3f-9a7c-5d2b8e1f4a60",
  "doc_url": "https://developers.komplai.dk/errors/rate_limited"
}
503 Service Unavailable
{
  "error": "chat_cloud_unavailable",
  "request_id": "0f8e2c4a-6b1d-4e3f-9a7c-5d2b8e1f4a60",
  "doc_url": "https://developers.komplai.dk/errors/chat_cloud_unavailable"
}

Stream a coding completion Beta

POST /v1/coding/chat/completions

An OpenAI-compatible chat completion for coding clients, streamed as server-sent events, with text and function calls. komplai never runs a tool: the client runs it, asks the person where needed, and sends the result in the next request. The model runs in komplai's EU cloud on your organisation's approved route. Before the provider is called, the most the call can cost is reserved under the organisation's monthly AI spending cap; usage is metered at the provider's price, and calls stop when the cap, the organisation's own limit or your personal limit is reached. komplai stores no prompts, answers or tool results, only the call's metadata. Send X-Komplai-Contract with the current contract and X-Request-Id with a new UUID for each operation. Needs a personal key with coding:complete.

Scopes
coding:complete
Prøv kaldet

Kaldene er rigtige: komplai behandler det, du sender, hvert kald tæller med i nøglens grænser, og behandling i EU-cloud tæller med i organisationens månedlige loft for AI-forbrug. Brug testdata.

En nøgle, der starter med kp_live_. Den bliver på denne side, til du forlader den, og sendes kun til api.komplai.dk.

Parametre

Headere

  • X-Komplai-Contract string påkrævet

    contract from GET /v1/coding/account, which needs coding:read. When the terms changed since, the call answers 409 terms_changed: read the account again, show the new terms to the person, and send the new contract.

    Mønster
    ^[0-9a-f]{64}$
  • X-Request-Id string påkrævet

    A new UUID (version 4) for each new logical operation. Send the same id again only to retry an operation whose outcome you do not know: komplai then answers 409 duplicate_request instead of calling the provider a second time. Request-Id in the response repeats it.

    Mønster
    ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$

Body i kaldet

  • model string påkrævet

    A model id from GET /v1/coding/models.

    Længde
    1 til 200
  • messages object[] påkrævet
    Elementer
    1 til 512

    En af

    • System or user messageobject
      • role string påkrævet
        En af
        system user
      • content string | object[] påkrævet

        Text or a list of text parts.

        En af

        • string
          Længde
          højst 1.000.000
        • object[]

          A list of text parts.

          Elementer
          højst 100
          • type string påkrævet
            En af
            text
          • text string påkrævet
            Længde
            højst 1.000.000
    • Assistant messageobject
      • role string påkrævet
        En af
        assistant
      • content string | object[] påkrævet

        Text, a list of text parts, or null when the message only calls tools.

        En af

        • string
          Længde
          højst 1.000.000
        • object[]

          A list of text parts.

          Elementer
          højst 100
          • type string påkrævet
            En af
            text
          • text string påkrævet
            Længde
            højst 1.000.000
      • tool_calls object[]

        The functions the model asked the client to call, each with an id that is unique in the conversation.

        Elementer
        1 til 64
        Underfelter (5)
        • id string påkrævet
          Mønster
          ^[a-zA-Z0-9_-]{1,128}$
        • type string påkrævet
          En af
          function
        • function object påkrævet
          Underfelter (2)
          • name string påkrævet
            Mønster
            ^[a-zA-Z0-9_-]{1,128}$
          • arguments string påkrævet

            A JSON object as text.

            Længde
            højst 1.000.000
      • reasoning_content string

        The model's earlier reasoning, sent back unchanged.

        Længde
        højst 1.000.000
    • Tool messageobject
      • role string påkrævet
        En af
        tool
      • content string | object[] påkrævet

        The tool's result: text or a list of text parts.

        En af

        • string
          Længde
          højst 1.000.000
        • object[]

          A list of text parts.

          Elementer
          højst 100
          • type string påkrævet
            En af
            text
          • text string påkrævet
            Længde
            højst 1.000.000
      • tool_call_id string påkrævet

        The id of the tool call this message answers.

        Mønster
        ^[a-zA-Z0-9_-]{1,128}$
  • tools object[]

    The functions the model may call.

    Elementer
    højst 64
    Underfelter (6)
    • type string påkrævet
      En af
      function
    • function object påkrævet
      Underfelter (4)
      • name string påkrævet
        Mønster
        ^[a-zA-Z0-9_-]{1,128}$
      • description string
        Længde
        højst 50.000
      • parameters object påkrævet

        A JSON Schema for the arguments.

        Kan indeholde felter, der ikke står her.

      • strict boolean
  • tool_choice string | object

    auto, none, required, or one function from tools by name.

    En af

    • string
      En af
      auto none required
    • object
      • type string påkrævet
        En af
        function
      • function object påkrævet
        Underfelter (1)
        • name string påkrævet
          Mønster
          ^[a-zA-Z0-9_-]{1,128}$
  • parallel_tool_calls boolean
  • stream boolean påkrævet

    Always true: the answer is streamed as server-sent events.

    En af
    true
  • stream_options object

    Optional; usage is always included in the stream.

    Underfelter (1)
    • include_usage boolean påkrævet
      En af
      true
  • max_tokens integer

    The most tokens the answer may have, within the model's max_output_tokens; the input and max_tokens together must fit its context (413 context_limit). Required unless you send max_completion_tokens instead: send exactly one of the two (400 invalid_coding_input otherwise).

    Værdi
    1 til 32.000
  • max_completion_tokens integer

    The same as max_tokens, for clients that use this name. Send exactly one of max_tokens and max_completion_tokens.

    Værdi
    1 til 32.000
  • temperature number
    Værdi
    0 til 2
  • top_p number
    Værdi
    0 til 1
  • frequency_penalty number
    Værdi
    -2 til 2
  • presence_penalty number
    Værdi
    -2 til 2
  • stop string | string[]

    Up to 4 stop sequences of at most 500 characters.

    En af

    • string
      Længde
      højst 500
    • string[]
      Elementer
      højst 4
      Længde af hvert element
      højst 500
  • reasoning_effort string

    One of the model's reasoning_efforts (400 reasoning_not_supported otherwise).

    En af
    none low medium high xhigh max

Svar

200 OK

Server-sent events (text/event-stream). Each data line is a chat.completion.chunk from the model, passed on after validation: text in choices[0].delta.content, reasoning in reasoning_content, function calls in tool_calls, and usage in the last chunk. data: [DONE] ends a complete answer. If the call fails after the stream began, the last event is data: {"error": {"message", "code", "request_id", "doc_url"}} without [DONE]; treat the outcome as unknown.

Headere

  • Request-Id string påkrævet

    This request's id: your X-Request-Id when you sent one valid UUID, otherwise a new UUID. An error body repeats it as request_id.

    Format
    uuid

Bodytext/event-stream

string

400 Bad Request

The request was refused before processing.

Fejlkoder

Headere

  • Request-Id string påkrævet

    This request's id: your X-Request-Id when you sent one valid UUID, otherwise a new UUID. An error body repeats it as request_id.

    Format
    uuid
401 Unauthorized

The key is missing or not valid.

Fejlkoder

  • api_key_required No Authorization: Bearer header with a komplai key.
  • invalid_api_key The key is unknown, expired, revoked or retired, the person behind a personal key is no longer a member or no longer assigned any app the key covers, or your organisation's API access for it is not set up or no longer active.
  • invalid_token The key was revoked or expired, or its access ended, while the request was admitted or processed.

Headere

  • Request-Id string påkrævet

    This request's id: your X-Request-Id when you sent one valid UUID, otherwise a new UUID. An error body repeats it as request_id.

    Format
    uuid
403 Forbidden

The key may not do this, or the organisation's access does not cover it.

Fejlkoder

  • integration_not_permitted An organisation integration key cannot use this operation or this option.
  • insufficient_scope The key lacks a scope the operation needs (x-komplai-scopes): it was not issued or created with it, its person is no longer assigned the app, or the organisation's processing approval no longer covers it.
  • identity_retired The person behind a personal key has been removed from komplai.
  • app_not_assigned The key's person lost the app or their membership while the request was admitted.
  • coding_not_enabled Coding is not enabled for the organisation, its Chat does not run in komplai's EU cloud with an approved setup, or the key's person is not assigned Chat.
  • processing_not_enabled The processing is not enabled for the app in the organisation: EU processing is not approved and enabled, or the agreement keeps processing on local infrastructure.
  • processing_not_approved The organisation's processing approval for the app is missing or was withdrawn.
  • processing_choice_not_allowed The organisation does not allow this processing (local infrastructure or EU cloud) through the API, or the connection is not made available through the API.
  • ai_credit_not_granted No monthly AI spending cap is set up for this month, so eu-cloud cannot run.

Headere

  • Request-Id string påkrævet

    This request's id: your X-Request-Id when you sent one valid UUID, otherwise a new UUID. An error body repeats it as request_id.

    Format
    uuid
409 Conflict

Conflict with the current state.

Fejlkoder

  • terms_changed X-Komplai-Contract is not the current contract: the provider, its terms, the data mode, the agreement or the coding models and their prices changed.
  • duplicate_request This X-Request-Id was used before with this key, so nothing was sent to the model.
  • model_not_enabled The model is not one you may use at this processing, or it is not offered there right now.

Headere

  • Request-Id string påkrævet

    This request's id: your X-Request-Id when you sent one valid UUID, otherwise a new UUID. An error body repeats it as request_id.

    Format
    uuid
413 Content Too Large

Too large.

Fejlkoder

  • context_limit The input and the requested output do not fit the model: max_tokens is over the model's limit, the input with max_tokens is over its context, or, in Redact, a part of the text does not fit even after it was asked again in halves down to 1,500 characters.
  • Payload Too Large Fastify's reason phrase: the body is over the operation's byte limit.

Headere

  • Request-Id string påkrævet

    This request's id: your X-Request-Id when you sent one valid UUID, otherwise a new UUID. An error body repeats it as request_id.

    Format
    uuid
415 Unsupported Media Type

The body has no Content-Type, or one the API does not read, such as XML or form data. Send application/json.

Fejlkoder

  • Unsupported Media Type Fastify's reason phrase: the body has no Content-Type, or one the API does not read, such as XML or form data.

Headere

  • Request-Id string påkrævet

    This request's id: your X-Request-Id when you sent one valid UUID, otherwise a new UUID. An error body repeats it as request_id.

    Format
    uuid
429 Too Many Requests

Refused for now. Wait the seconds in Retry-After before you try again.

Fejlkoder

  • rate_limited Too many requests: the per-minute limit of the person behind a personal key (shared with that person's other keys and use of the hub) or of the integration behind an organisation integration key (shared by its keys), the organisation's (120), the API's (300) or the per-IP network limit. Wait Retry-After seconds.
  • ai_credit_exhausted The organisation's monthly AI spending cap for EU cloud is reached, or its own lower limit, or on a pilot the pilot's total allowance. Local processing keeps working.
  • person_ai_credit_exhausted Your personal AI limit is reached (personal keys only).
  • upstream_rate_limited The coding model's provider refused the call for now.

Headere

  • Request-Id string påkrævet

    This request's id: your X-Request-Id when you sent one valid UUID, otherwise a new UUID. An error body repeats it as request_id.

    Format
    uuid
  • Retry-After integer

    Seconds to wait before trying again (at most 60). Sent with rate_limited; upstream_rate_limited, ai_credit_exhausted and person_ai_credit_exhausted carry none.

    Værdi
    1 til 60
  • x-ratelimit-limit integer

    Requests per minute allowed from your IP address (the per-IP network limit).

  • x-ratelimit-remaining integer

    Requests left in the current minute from your IP address.

  • x-ratelimit-reset integer

    Seconds until the per-IP window resets.

502 Bad Gateway

A processing service failed. No partial result is returned.

Fejlkoder

Headere

  • Request-Id string påkrævet

    This request's id: your X-Request-Id when you sent one valid UUID, otherwise a new UUID. An error body repeats it as request_id.

    Format
    uuid
503 Service Unavailable

Processing is not available right now.

Fejlkoder

Headere

  • Request-Id string påkrævet

    This request's id: your X-Request-Id when you sent one valid UUID, otherwise a new UUID. An error body repeats it as request_id.

    Format
    uuid
504 Gateway Timeout

The call timed out.

Fejlkoder

  • timeout The model did not answer in time. The call reached the model, so its outcome is unknown.

Headere

  • Request-Id string påkrævet

    This request's id: your X-Request-Id when you sent one valid UUID, otherwise a new UUID. An error body repeats it as request_id.

    Format
    uuid
KaldPOST /v1/coding/chat/completions
curl
curl https://api.komplai.dk/v1/coding/chat/completions \
  -N \
  -H "Authorization: Bearer $KOMPLAI_TOKEN" \
  -H 'X-Komplai-Contract: 86fb88e41acf1ec181a16eaf5d7725059473b626b7d4289ee1b9c3b2aaed45b0' \
  -H "X-Request-Id: $(uuidgen)" \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "mistral-small-3.2-24b-instruct-2506",
    "stream": true,
    "stream_options": {
      "include_usage": true
    },
    "max_tokens": 256,
    "messages": [
      {
        "role": "system",
        "content": "You are a careful coding assistant."
      },
      {
        "role": "user",
        "content": "What does this expression evaluate to: 1 + 1?"
      }
    ]
  }'
PowerShell
$headers = @{
    Authorization = "Bearer $env:KOMPLAI_TOKEN"
    'X-Komplai-Contract' = '86fb88e41acf1ec181a16eaf5d7725059473b626b7d4289ee1b9c3b2aaed45b0'
    'X-Request-Id' = [guid]::NewGuid().ToString()
}
$body = [ordered]@{
    model = 'mistral-small-3.2-24b-instruct-2506'
    stream = $true
    stream_options = [ordered]@{
        include_usage = $true
    }
    max_tokens = 256
    messages = @(
        [ordered]@{
            role = 'system'
            content = 'You are a careful coding assistant.'
        },
        [ordered]@{
            role = 'user'
            content = 'What does this expression evaluate to: 1 + 1?'
        }
    )
} | ConvertTo-Json -Depth 100

$request = @{
    Method = 'Post'
    Uri = 'https://api.komplai.dk/v1/coding/chat/completions'
    Headers = $headers
    ContentType = 'application/json; charset=utf-8'
    Body = $body
}
$response = Invoke-RestMethod @request
$response
Python
import os
import uuid

import requests

with requests.post(
    "https://api.komplai.dk/v1/coding/chat/completions",
    headers={
        "Authorization": f"Bearer {os.environ['KOMPLAI_TOKEN']}",
        "X-Komplai-Contract": "86fb88e41acf1ec181a16eaf5d7725059473b626b7d4289ee1b9c3b2aaed45b0",
        "X-Request-Id": str(uuid.uuid4()),
    },
    json={
        "model": "mistral-small-3.2-24b-instruct-2506",
        "stream": True,
        "stream_options": {
            "include_usage": True,
        },
        "max_tokens": 256,
        "messages": [
            {
                "role": "system",
                "content": "You are a careful coding assistant.",
            },
            {
                "role": "user",
                "content": "What does this expression evaluate to: 1 + 1?",
            },
        ],
    },
    stream=True,
    timeout=330,
) as response:
    print(response.status_code, response.headers.get("Request-Id"))
    for line in response.iter_lines(decode_unicode=True):
        if line:
            print(line)
JavaScript
const response = await fetch("https://api.komplai.dk/v1/coding/chat/completions", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.KOMPLAI_TOKEN}`,
    "Content-Type": "application/json",
    "X-Komplai-Contract": "86fb88e41acf1ec181a16eaf5d7725059473b626b7d4289ee1b9c3b2aaed45b0",
    "X-Request-Id": crypto.randomUUID(),
  },
  body: JSON.stringify({
    model: "mistral-small-3.2-24b-instruct-2506",
    stream: true,
    stream_options: {
      include_usage: true,
    },
    max_tokens: 256,
    messages: [
      {
        role: "system",
        content: "You are a careful coding assistant.",
      },
      {
        role: "user",
        content: "What does this expression evaluate to: 1 + 1?",
      },
    ],
  }),
});

console.log(response.status, response.headers.get("Request-Id"));
const decoder = new TextDecoder();
for await (const chunk of response.body) {
  process.stdout.write(decoder.decode(chunk, { stream: true }));
}
C#
using System;
using System.IO;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;

using var client = new HttpClient { Timeout = TimeSpan.FromSeconds(330) };
using var request = new HttpRequestMessage(HttpMethod.Post, "https://api.komplai.dk/v1/coding/chat/completions");
request.Headers.Authorization = new AuthenticationHeaderValue(
    "Bearer", Environment.GetEnvironmentVariable("KOMPLAI_TOKEN"));
request.Headers.Add("X-Komplai-Contract", "86fb88e41acf1ec181a16eaf5d7725059473b626b7d4289ee1b9c3b2aaed45b0");
request.Headers.Add("X-Request-Id", Guid.NewGuid().ToString());
request.Content = new StringContent(@"{
  ""model"": ""mistral-small-3.2-24b-instruct-2506"",
  ""stream"": true,
  ""stream_options"": {
    ""include_usage"": true
  },
  ""max_tokens"": 256,
  ""messages"": [
    {
      ""role"": ""system"",
      ""content"": ""You are a careful coding assistant.""
    },
    {
      ""role"": ""user"",
      ""content"": ""What does this expression evaluate to: 1 + 1?""
    }
  ]
}", Encoding.UTF8, "application/json");

using var response = await client.SendAsync(request, HttpCompletionOption.ResponseHeadersRead);
Console.WriteLine((int)response.StatusCode);
if (response.Headers.TryGetValues("Request-Id", out var requestId))
{
    Console.WriteLine(string.Join(", ", requestId));
}
using var stream = await response.Content.ReadAsStreamAsync();
using var reader = new StreamReader(stream);
while (await reader.ReadLineAsync() is { } line)
{
    Console.WriteLine(line);
}

Sæt først miljøvariablen KOMPLAI_TOKEN til din nøgle.

Svar
200 OK
data: {"id":"chatcmpl-5f1e9d2c","object":"chat.completion.chunk","created":1792483200,"model":"mistral-small-3.2-24b-instruct-2506","choices":[{"index":0,"delta":{"role":"assistant","content":"It evaluates to 2"},"finish_reason":null}]}

data: {"id":"chatcmpl-5f1e9d2c","object":"chat.completion.chunk","created":1792483200,"model":"mistral-small-3.2-24b-instruct-2506","choices":[{"index":0,"delta":{"content":": the sum of 1 and 1."},"finish_reason":null}]}

data: {"id":"chatcmpl-5f1e9d2c","object":"chat.completion.chunk","created":1792483200,"model":"mistral-small-3.2-24b-instruct-2506","choices":[{"index":0,"delta":{},"finish_reason":"stop"}],"usage":{"prompt_tokens":31,"completion_tokens":14}}

data: [DONE]
200 OK
data: {"id":"chatcmpl-5f1e9d2c","object":"chat.completion.chunk","created":1792483200,"model":"mistral-small-3.2-24b-instruct-2506","choices":[{"index":0,"delta":{"role":"assistant","tool_calls":[{"index":0,"id":"call_7b2d","type":"function","function":{"name":"read_file","arguments":""}}]},"finish_reason":null}]}

data: {"id":"chatcmpl-5f1e9d2c","object":"chat.completion.chunk","created":1792483200,"model":"mistral-small-3.2-24b-instruct-2506","choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{\"path\":\"README.md\"}"}}]},"finish_reason":null}]}

data: {"id":"chatcmpl-5f1e9d2c","object":"chat.completion.chunk","created":1792483200,"model":"mistral-small-3.2-24b-instruct-2506","choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}],"usage":{"prompt_tokens":58,"completion_tokens":18}}

data: [DONE]
400 Bad Request
{
  "error": "invalid_input",
  "request_id": "0f8e2c4a-6b1d-4e3f-9a7c-5d2b8e1f4a60",
  "doc_url": "https://developers.komplai.dk/errors/invalid_input"
}
401 Unauthorized
{
  "error": "api_key_required",
  "request_id": "0f8e2c4a-6b1d-4e3f-9a7c-5d2b8e1f4a60",
  "doc_url": "https://developers.komplai.dk/errors/api_key_required"
}
403 Forbidden
{
  "error": "integration_not_permitted",
  "request_id": "0f8e2c4a-6b1d-4e3f-9a7c-5d2b8e1f4a60",
  "doc_url": "https://developers.komplai.dk/errors/integration_not_permitted"
}
409 Conflict
{
  "error": "terms_changed",
  "request_id": "0f8e2c4a-6b1d-4e3f-9a7c-5d2b8e1f4a60",
  "doc_url": "https://developers.komplai.dk/errors/terms_changed"
}
413 Content Too Large
{
  "error": "context_limit",
  "request_id": "0f8e2c4a-6b1d-4e3f-9a7c-5d2b8e1f4a60",
  "doc_url": "https://developers.komplai.dk/errors/context_limit"
}
415 Unsupported Media Type
{
  "error": "Unsupported Media Type",
  "statusCode": 415,
  "code": "FST_ERR_CTP_INVALID_MEDIA_TYPE",
  "message": "Unsupported Media Type",
  "request_id": "0f8e2c4a-6b1d-4e3f-9a7c-5d2b8e1f4a60",
  "doc_url": "https://developers.komplai.dk/errors/unsupported-media-type"
}
429 Too Many Requests
{
  "error": "rate_limited",
  "request_id": "0f8e2c4a-6b1d-4e3f-9a7c-5d2b8e1f4a60",
  "doc_url": "https://developers.komplai.dk/errors/rate_limited"
}
502 Bad Gateway
{
  "error": "coding_service_unavailable",
  "request_id": "0f8e2c4a-6b1d-4e3f-9a7c-5d2b8e1f4a60",
  "doc_url": "https://developers.komplai.dk/errors/coding_service_unavailable"
}
503 Service Unavailable
{
  "error": "chat_cloud_unavailable",
  "request_id": "0f8e2c4a-6b1d-4e3f-9a7c-5d2b8e1f4a60",
  "doc_url": "https://developers.komplai.dk/errors/chat_cloud_unavailable"
}
504 Gateway Timeout
{
  "error": "timeout",
  "request_id": "0f8e2c4a-6b1d-4e3f-9a7c-5d2b8e1f4a60",
  "doc_url": "https://developers.komplai.dk/errors/timeout"
}
komplaidevelopers
Kontakt os

Søg i dokumentationen

Vælg med piletasterne, og åbn med Enter.