Getting Started
Welcome! In this guide, we'll walk you through the basics of using the xAI API, from creating an account to making your first request.
Step 1: Create an xAI account
Sign up for an account at accounts.x.ai, then load it with credits to start using the API.
Step 2: Generate an API key
Create an API key via the API Keys page in the xAI Console. Then make it available to your code. Either export it in your terminal:
Bash
export XAI_API_KEY="your_api_key"
Or add it to a .env file in your project directory:
Bash
XAI_API_KEY=your_api_key
The xAI SDKs are configured to automatically read your API key from the XAI_API_KEY environment variable.
Step 3: Install an SDK
Pick your language and install the SDK:
Python
pip install xai-sdk
Javascript
npm install ai @ai-sdk/xai zod
Other
pip install openai
npm install openai
Step 4: Make your first request
Send a prompt to Grok and get a response:
Python
import os
from xai_sdk import Client
from xai_sdk.chat import user, system
client = Client(api_key=os.getenv("XAI_API_KEY"))
chat = client.chat.create(model="grok-4.20-reasoning")
chat.append(system("You are Grok, a highly intelligent, helpful AI assistant."))
chat.append(user("What is the meaning of life, the universe, and everything?"))
response = chat.sample()
print(response.content)
Javascript
import { createXai } from '@ai-sdk/xai';
import { generateText } from 'ai';
const xai = createXai({ apiKey: process.env.XAI_API_KEY });
const { text } = await generateText({
model: xai.responses('grok-4.20-reasoning'),
system: 'You are Grok, a highly intelligent, helpful AI assistant.',
prompt: 'What is the meaning of life, the universe, and everything?',
});
console.log(text);
Curl
curl https://api.x.ai/v1/responses \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $XAI_API_KEY" \
-d '{
"model": "grok-4.20-reasoning",
"input": [
{"role": "system", "content": "You are Grok, a highly intelligent, helpful AI assistant."},
{"role": "user", "content": "What is the meaning of life, the universe, and everything?"}
]
}'
Step 5: Analyze an image
Grok can accept both text and images as input. Pass an image URL alongside your prompt:
Python
import os
from xai_sdk import Client
from xai_sdk.chat import user, image
client = Client(api_key=os.getenv("XAI_API_KEY"))
chat = client.chat.create(model="grok-4")
chat.append(
user(
"What's in this image?",
image("https://science.nasa.gov/wp-content/uploads/2023/09/web-first-images-release.png"),
)
)
response = chat.sample()
print(response.content)
Javascript
const xai = createXai({ apiKey: process.env.XAI_API_KEY });
const { text } = await generateText({
model: xai.responses('grok-4'),
messages: [{
role: 'user',
content: [
{ type: 'image', image: 'https://science.nasa.gov/wp-content/uploads/2023/09/web-first-images-release.png' },
{ type: 'text', text: "What's in this image?" },
],
}],
});
console.log(text);
Curl
curl https://api.x.ai/v1/responses \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $XAI_API_KEY" \
-d '{
"model": "grok-4",
"input": [{
"role": "user",
"content": [
{ "type": "input_image", "image_url": "https://science.nasa.gov/wp-content/uploads/2023/09/web-first-images-release.png" },
{ "type": "input_text", "text": "What's in this image?" },
],
}]
}'
To learn how to use Grok vision for more advanced use cases, check out Image Understanding.
What's next
Now that you've made your first request, explore what Grok can do:
Chat
Multi-turn conversations, reasoning, structured outputs, and streaming
→ Link
Voice
Build real-time voice agents with speech-to-speech capabilities
→ Link
Imagine
Generate and edit images and videos from text, images, or video inputs
→ Link
Resources
- Streaming - Stream responses in real time
- Files & Collections - Upload documents and build RAG pipelines
- Tools - Web search, X search, code execution, and function calling
- Models & Pricing - Compare available models and their capabilities
Last updated: March 2, 2026