> ## Documentation Index
> Fetch the complete documentation index at: https://docs.xhuoapi.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Grok Chat Completion API Ansökan och Användning

> Grok 集成指南 - XHuoAPI

xAI Grok är ett mycket kraftfullt AI-dialogsystem som kan generera flytande och naturliga svar på bara några sekunder genom att ange en prompt. Grok utmärker sig i branschen med sin unika humorstil och förmåga att hämta information i realtid från nätet. Idag har Grok gjort sig ett namn inom flera innovativa områden och dess inflytande växer snabbt. Oavsett om det handlar om vardagliga samtal, kreativt skrivande eller teknisk analys och kodavlusning, kan Grok erbjuda insiktsfullt och intelligent stöd som ger användarnas beslut och skapande en ny dimension.

Detta dokument beskriver huvudsakligen användningsflödet för Grok Chat Completion API, vilket gör att vi enkelt kan använda den officiella Grok-dialogfunktionen.

## Ansökningsprocess

För att använda Grok Chat Completion API kan du först gå till [Grok Chat Completion API](https://api.xhuoapi.ai/documents/faf08b59-36aa-4d26-b5d9-a18f113cc2be) sidan och klicka på "Acquire"-knappen för att få de nödvändiga autentiseringsuppgifterna:

![](https://cdn.xhuoapi.ai/nyq0xz.png)

Om du inte har loggat in eller registrerat dig kommer du automatiskt att omdirigeras till inloggningssidan där du uppmanas att registrera dig och logga in. Efter att du har loggat in eller registrerat dig kommer du automatiskt att återvända till den aktuella sidan.

Vid första ansökan kommer det att finnas en gratis kvot som gör att du kan använda API:et kostnadsfritt.

## Grundläggande Användning

Därefter kan du fylla i motsvarande innehåll på gränssnittet, som visas i bilden:

<p>
  <img src="https://cdn.xhuoapi.ai/vunnjf.png" width="400" className="m-auto" />
</p>

Vid första användningen av detta gränssnitt behöver vi fylla i minst tre fält, ett är `authorization`, som du enkelt kan välja från rullgardinsmenyn. Den andra parametern är `model`, där `model` är den Grok-modellkategori vi väljer att använda från Groks officiella webbplats. Här har vi huvudsakligen 8 olika modeller, mer information kan ses i de modeller vi tillhandahåller. Den sista parametern är `messages`, där `messages` är en array av våra frågeord, vilket innebär att vi kan ladda upp flera frågeord samtidigt. Varje frågeord innehåller `role` och `content`, där `role` representerar frågeställarens roll. Vi erbjuder tre olika roller: `user`, `assistant`, `system`. Den andra `content` är det specifika innehållet i vår fråga.

Samtidigt kan du notera att det finns motsvarande kod för anrop på höger sida, som du kan kopiera och köra direkt, eller så kan du klicka på "Try"-knappen för att testa.

Vanliga valfria parametrar:

* `max_tokens`: Begränsar det maximala antalet tokens för ett enskilt svar.
* `temperature`: Genererar slumpmässighet, mellan 0-2, där ett högre värde ger mer spridda resultat.
* `n`: Hur många kandidatsvar som ska genereras åt gången.

<p>
  <img src="https://cdn.xhuoapi.ai/d7iwun.png" width="400" className="m-auto" />
</p>

Efter anropet ser vi att returresultatet ser ut som följer:

```json theme={null}
{
  "id": "foaicmpl-13936918-cb99-49e1-b94c-bde98b482ed4",
  "model": "grok-3",
  "object": "chat.completion",
  "created": 1755839683,
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Yo! What's up? 😎 Ready to dive into whatever you're pondering about today?"
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 8,
    "completion_tokens": 20,
    "total_tokens": 28,
    "prompt_tokens_details": {
      "cached_tokens": 0,
      "text_tokens": 0,
      "audio_tokens": 0,
      "image_tokens": 0
    },
    "completion_tokens_details": {
      "text_tokens": 0,
      "audio_tokens": 0,
      "reasoning_tokens": 0
    },
    "input_tokens": 0,
    "output_tokens": 0,
    "input_tokens_details": null
  }
}
```

Returresultatet innehåller flera fält, som beskrivs nedan:

* `id`, ID för den genererade dialoguppgiften, som används för att unikt identifiera denna dialoguppgift.
* `model`, den valda Grok-modellen.
* `choices`, Groks svarsinformation på frågeorden.
* `usage`: Statistik över tokens för denna fråge- och svarspost.

Där `choices` innehåller Groks svarsinformation, och `choices` inuti den innehåller den specifika informationen om Groks svar, vilket kan ses i bilden.

<p>
  <img src="https://cdn.xhuoapi.ai/p8vupk.png" width="400" className="m-auto" />
</p>

Det kan ses att `content`-fältet i `choices` innehåller det specifika innehållet i Groks svar.

## Strömmande Svar

Detta gränssnitt stöder också strömmande svar, vilket är mycket användbart för webbgränssnitt och kan ge en tecken-för-tecken visningseffekt.

Om du vill ha strömmande svar kan du ändra `stream`-parametern i begärningshuvudet till `true`.

Ändringen visas i bilden, men anropskoden behöver också ändras för att stödja strömmande svar.

<p>
  <img src="https://cdn.xhuoapi.ai/k883qa.png" width="400" className="m-auto" />
</p>

När `stream` ändras till `true` kommer API:et att returnera motsvarande JSON-data rad för rad, och på kodnivå behöver vi göra nödvändiga ändringar för att få radresultaten.

Python-exempel på anropskod:

```python theme={null}
import requests

url = "https://api.xhuoapi.ai/v1/grok/chat/completions"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "model": "grok-3",
    "messages": [{"role":"user","content":"Hello"}],
    "stream": True
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
```

Utdataeffekten ser ut som följer:

```json theme={null}
data: {"id": "foaicmpl-503ab14f-3f22-46ab-9f91-3fb44773be38", "object": "chat.completion.chunk", "created": 1755839790, "model": "grok-3", "system_fingerprint": null, "choices": [{"delta": {"role": "assistant"}, "logprobs": null, "finish_reason": null, "index": 0}], "usage": null} 

data: {"id": "foaicmpl-503ab14f-3f22-46ab-9f91-3fb44773be38", "object": "chat.completion.chunk", "created": 1755839790, "model": "grok-3", "system_fingerprint": null, "choices": [{"delta": {"content": "Yo, "}, "logprobs": null, "finish_reason": null, "index": 0}], "usage": null} 

data: {"id": "foaicmpl-503ab14f-3f22-46ab-9f91-3fb44773be38", "object": "chat.completion.chunk", "created": 1755839790, "model": "grok-3", "system_fingerprint": null, "choices": [{"delta": {"content": "what"}, "logprobs": null, "finish_reason": null, "index": 0}], "usage": null} 

data:
{"id": "foaicmpl-503ab14f-3f22-46ab-9f91-3fb44773be38", "object": "chat.completion.chunk", "created": 1755839790, "model": "grok-3", "system_fingerprint": null, "choices": [{"delta": {"content": "'s g"}, "logprobs": null, "finish_reason": null, "index": 0}], "usage": null} 

data: {"id": "foaicmpl-503ab14f-3f22-46ab-9f91-3fb44773be38", "object": "chat.completion.chunk", "created": 1755839790, "model": "grok-3", "system_fingerprint": null, "choices": [{"delta": {"content": "ood?"}, "logprobs": null, "finish_reason": null, "index": 0}], "usage": null} 

data: {"id": "foaicmpl-503ab14f-3f22-46ab-9f91-3fb44773be38", "object": "chat.completion.chunk", "created": 1755839790, "model": "grok-3", "system_fingerprint": null, "choices": [{"delta": {"content": " Rea"}, "logprobs": null, "finish_reason": null, "index": 0}], "usage": null} 

data: {"id": "foaicmpl-503ab14f-3f22-46ab-9f91-3fb44773be38", "object": "chat.completion.chunk", "created": 1755839790, "model": "grok-3", "system_fingerprint": null, "choices": [{"delta": {"content": "dy t"}, "logprobs": null, "finish_reason": null, "index": 0}], "usage": null} 

data: {"id": "foaicmpl-503ab14f-3f22-46ab-9f91-3fb44773be38", "object": "chat.completion.chunk", "created": 1755839790, "model": "grok-3", "system_fingerprint": null, "choices": [{"delta": {"content": "o di"}, "logprobs": null, "finish_reason": null, "index": 0}], "usage": null} 

data: {"id": "foaicmpl-503ab14f-3f22-46ab-9f91-3fb44773be38", "object": "chat.completion.chunk", "created": 1755839790, "model": "grok-3", "system_fingerprint": null, "choices": [{"delta": {"content": "ve i"}, "logprobs": null, "finish_reason": null, "index": 0}], "usage": null} 

data: {"id": "foaicmpl-503ab14f-3f22-46ab-9f91-3fb44773be38", "object": "chat.completion.chunk", "created": 1755839790, "model": "grok-3", "system_fingerprint": null, "choices": [{"delta": {"content": "nto "}, "logprobs": null, "finish_reason": null, "index": 0}], "usage": null} 

data: {"id": "foaicmpl-503ab14f-3f22-46ab-9f91-3fb44773be38", "object": "chat.completion.chunk", "created": 1755839790, "model": "grok-3", "system_fingerprint": null, "choices": [{"delta": {"content": "vad"}, "logprobs": null, "finish_reason": null, "index": 0}], "usage": null} 

data: {"id": "foaicmpl-503ab14f-3f22-46ab-9f91-3fb44773be38", "object": "chat.completion.chunk", "created": 1755839790, "model": "grok-3", "system_fingerprint": null, "choices": [{"delta": {"content": "som helst"}, "logprobs": null, "finish_reason": null, "index": 0}], "usage": null} 

data: {"id": "foaicmpl-503ab14f-3f22-46ab-9f91-3fb44773be38", "object": "chat.completion.chunk", "created": 1755839790, "model": "grok-3", "system_fingerprint": null, "choices": [{"delta": {"content": " du"}, "logprobs": null, "finish_reason": null, "index": 0}], "usage": null} 

data: {"id": "foaicmpl-503ab14f-3f22-46ab-9f91-3fb44773be38", "object": "chat.completion.chunk", "created": 1755839790, "model": "grok-3", "system_fingerprint": null, "choices": [{"delta": {"content": "'re "}, "logprobs": null, "finish_reason": null, "index": 0}], "usage": null} 

data: {"id": "foaicmpl-503ab14f-3f22-46ab-9f91-3fb44773be38", "object": "chat.completion.chunk", "created": 1755839790, "model": "grok-3", "system_fingerprint": null, "choices": [{"delta": {"content": "pond"}, "logprobs": null, "finish_reason": null, "index": 0}], "usage": null} 

data: {"id": "foaicmpl-503ab14f-3f22-46ab-9f91-3fb44773be38", "object": "chat.completion.chunk", "created": 1755839790, "model": "grok-3", "system_fingerprint": null, "choices": [{"delta": {"content": "erin"}, "logprobs": null, "finish_reason": null, "index": 0}], "usage": null} 

data: {"id": "foaicmpl-503ab14f-3f22-46ab-9f91-3fb44773be38", "object": "chat.completion.chunk", "created": 1755839790, "model": "grok-3", "system_fingerprint": null, "choices": [{"delta": {"content": "g ab"}, "logprobs": null, "finish_reason": null, "index": 0}], "usage": null} 

data: {"id": "foaicmpl-503ab14f-3f22-46ab-9f91-3fb44773be38", "object": "chat.completion.chunk", "created": 1755839790, "model": "grok-3", "system_fingerprint": null, "choices": [{"delta": {"content": "ut "}, "logprobs": null, "finish_reason": null, "index": 0}], "usage": null} 

data: {"id": "foaicmpl-503ab14f-3f22-46ab-9f91-3fb44773be38", "object": "chat.completion.chunk", "created": 1755839790, "model": "grok-3", "system_fingerprint": null, "choices": [{"delta": {"content": "i dag"}, "logprobs": null, "finish_reason": null, "index": 0}], "usage": null} 

data: {"id": "foaicmpl-503ab14f-3f22-46ab-9f91-3fb44773be38", "object": "chat.completion.chunk", "created": 1755839790, "model": "grok-3", "system_fingerprint": null, "choices": [{"delta": {"content": "?"}, "logprobs": null, "finish_reason": null, "index": 0}], "usage": null} 

data: {"id": "foaicmpl-503ab14f-3f22-46ab-9f91-3fb44773be38", "object": "chat.completion.chunk", "created": 1755839790, "model": "grok-3", "system_fingerprint": null, "choices": [{"delta": {}, "logprobs": null, "finish_reason": "stop", "index": 0}], "usage": {"prompt_tokens": 0, "completion_tokens": 0, "total_tokens": 0, "prompt_tokens_details": {"cached_tokens": 0, "text_tokens": 0, "audio_tokens": 0, "image_tokens": 0}, "completion_tokens_details": {"text_tokens": 0, "audio_tokens": 0, "reasoning_tokens": 0}, "input_tokens": 0, "output_tokens": 0, "input_tokens_details": null}} 

data:
{"id": "foaicmpl-503ab14f-3f22-46ab-9f91-3fb44773be38", "object": "chat.completion.chunk", "created": 1755839790, "model": "grok-3", "system_fingerprint": "", "choices": [], "usage": {"prompt_tokens": 8, "completion_tokens": 18, "total_tokens": 26, "prompt_tokens_details": {"cached_tokens": 0, "text_tokens": 0, "audio_tokens": 0, "image_tokens": 0}, "completion_tokens_details": {"text_tokens": 0, "audio_tokens": 0, "reasoning_tokens": 0}, "input_tokens": 0, "output_tokens": 0, "input_tokens_details": null}} 

data: [DONE]
```

Det kan ses att svaret innehåller många `data`, där `data` innehåller `choices` som är det senaste svaret, vilket är i linje med det som beskrivits ovan. `choices` är det nya svaret, och du kan koppla det till ditt system baserat på resultatet. Samtidigt avslutas det strömmande svaret baserat på innehållet i `data`, om innehållet är `[DONE]`, indikerar det att det strömmande svaret har avslutats helt. De returnerade `data`-resultaten har flera fält, som beskrivs nedan:

* `id`, ID för att generera denna dialoguppgift, används för att unikt identifiera denna dialoguppgift.
* `model`, den valda Grok-modellen från Grok:s officiella webbplats.
* `choices`, Grok:s svarsinformation baserat på frågorna.

JavaScript stöds också, till exempel Node.js:s strömmande anropskod ser ut som följer:

```javascript theme={null}
const options = {
  method: "post",
  headers: {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
  },
  body: JSON.stringify({
    "model": "grok-3",
    "messages": [{"role":"user","content":"Hello"}],
    "stream": true
  })
};

fetch("https://api.xhuoapi.ai/v1/grok/chat/completions", options)
  .then(response => response.json())
  .then(response => console.log(response))
  .catch(err => console.error(err));
```

Java-exempelkod:

```java theme={null}
JSONObject jsonObject = new JSONObject();
jsonObject.put("model", "grok-3");
jsonObject.put("messages", [{"role":"user","content":"Hello"}]);
jsonObject.put("stream", true);
MediaType mediaType = "application/json; charset=utf-8".toMediaType();
RequestBody body = jsonObject.toString().toRequestBody(mediaType);
Request request = new Request.Builder()
  .url("https://api.xhuoapi.ai/v1/grok/chat/completions")
  .post(body)
  .addHeader("accept", "application/json")
  .addHeader("authorization", "Bearer {token}")
  .addHeader("content-type", "application/json")
  .build();

OkHttpClient client = new OkHttpClient();
Response response = client.newCall(request).execute();
System.out.print(response.body!!.string())
```

Andra språk kan skrivas om på egen hand, principen är densamma.

## Flera rundor av dialog

Om du vill koppla flera rundor av dialogfunktionalitet behöver du ladda upp flera frågor i `messages`-fältet, specifika exempel på flera frågor visas nedan:

<p>
  <img src="https://cdn.xhuoapi.ai/t8cya8.png" width="400" className="m-auto" />
</p>

Python-exempelkod:

```python theme={null}
import requests

url = "https://api.xhuoapi.ai/v1/grok/chat/completions"

headers = {
    "accept": "application/json",
    "authorization": "Bearer {token}",
    "content-type": "application/json"
}

payload = {
    "model": "grok-3",
    "messages": [{"role":"user","content":"Hello"},{"role":"assistant","content":"What model are you?"},{"role":"user","content":"What did I just say?"}]
}

response = requests.post(url, json=payload, headers=headers)
print(response.text)
```

Genom att ladda upp flera frågor kan du enkelt genomföra flera rundor av dialog och få följande svar:

```json theme={null}
{
  "id": "foaicmpl-984ebc53-76b3-4d33-b0e8-0307ab4965af",
  "model": "grok-3",
  "object": "chat.completion",
  "created": 1755839996,
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Du sa, \"Hello.\""
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 27,
    "completion_tokens": 6,
    "total_tokens": 33,
    "prompt_tokens_details": {
      "cached_tokens": 0,
      "text_tokens": 0,
      "audio_tokens": 0,
      "image_tokens": 0
    },
    "completion_tokens_details": {
      "text_tokens": 0,
      "audio_tokens": 0,
      "reasoning_tokens": 0
    },
    "input_tokens": 0,
    "output_tokens": 0,
    "input_tokens_details": null
  }
}
```

Det kan ses att informationen i `choices` är i linje med innehållet i grundanvändningen, vilket innehåller Grok:s specifika svar på flera dialoger, så att du kan svara på motsvarande frågor baserat på flera dialoginnehåll.

## Felhantering

När du anropar API:et, om du stöter på fel, kommer API:et att returnera motsvarande felkod och information. Till exempel:

* `400 token_mismatched`: Bad request, möjligtvis på grund av saknade eller ogiltiga parametrar.
* `400 api_not_implemented`: Bad request, möjligtvis på grund av saknade eller ogiltiga parametrar.
* `401 invalid_token`: Unauthorized, ogiltig eller saknad auktoriseringstoken.
* `429 too_many_requests`: För många förfrågningar, du har överskridit hastighetsgränsen.
* `500 api_error`: Intern serverfel, något gick fel på servern.

### Exempel på felrespons

```
{
  "success": false,
  "error": {
    "code": "api_error",
    "message": "fetch failed"
  },
  "trace_id": "2cf86e86-22a4-46e1-ac2f-032c0f2a4e89"
}
```

## Slutsats

Genom detta dokument har du fått en förståelse för hur du använder OpenAI Chat Completion API för att enkelt implementera dialogfunktionaliteten från officiella OpenAI ChatGPT. Vi hoppas att detta dokument kan hjälpa dig att bättre koppla och använda API:et. Om du har några frågor, tveka inte att kontakta vårt tekniska supportteam.
