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

Last updated: March 2, 2026