Skip to main content

Quick Start

Get started with xAI in under 2 minutes:
from portkey_ai import Portkey

# 1. Install: pip install portkey-ai
# 2. Add @x-ai provider in model catalog
# 3. Use it:

portkey = Portkey(api_key="PORTKEY_API_KEY")

response = portkey.chat.completions.create(
    model="@x-ai/grok-beta",
    messages=[{"role": "user", "content": "Hello!"}]
)

print(response.choices[0].message.content)
import Portkey from 'portkey-ai'

// 1. Install: npm install portkey-ai
// 2. Add @x-ai provider in model catalog
// 3. Use it:

const portkey = new Portkey({
    apiKey: "PORTKEY_API_KEY"
})

const response = await portkey.chat.completions.create({
    model: "@x-ai/grok-beta",
    messages: [{ role: "user", content: "Hello!" }]
})

console.log(response.choices[0].message.content)
from openai import OpenAI
from portkey_ai import PORTKEY_GATEWAY_URL

# 1. Install: pip install openai portkey-ai
# 2. Add @x-ai provider in model catalog
# 3. Use it:

client = OpenAI(
    api_key="PORTKEY_API_KEY",  # Portkey API key
    base_url=PORTKEY_GATEWAY_URL
)

response = client.chat.completions.create(
    model="@x-ai/grok-beta",
    messages=[{"role": "user", "content": "Hello!"}]
)

print(response.choices[0].message.content)
import OpenAI from "openai"
import { PORTKEY_GATEWAY_URL } from "portkey-ai"

// 1. Install: npm install openai portkey-ai
// 2. Add @x-ai provider in model catalog
// 3. Use it:

const client = new OpenAI({
    apiKey: "PORTKEY_API_KEY",  // Portkey API key
    baseURL: PORTKEY_GATEWAY_URL
})

const response = await client.chat.completions.create({
    model: "@x-ai/grok-beta",
    messages: [{ role: "user", content: "Hello!" }]
})

console.log(response.choices[0].message.content)
# 1. Add @x-ai provider in model catalog
# 2. Use it:

curl https://api.portkey.ai/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "x-portkey-api-key: $PORTKEY_API_KEY" \
  -d '{
    "model": "@x-ai/grok-beta",
    "messages": [{"role": "user", "content": "Hello!"}]
  }'

Add Provider in Model Catalog

Before making requests, add xAI to your Model Catalog:
  1. Go to Model Catalog → Add Provider
  2. Select xAI
  3. Enter your xAI API key
  4. Name your provider (e.g., x-ai)

Complete Setup Guide

See all setup options and detailed configuration instructions

xAI Capabilities

Tool Calling (Function Calling)

from portkey_ai import Portkey

portkey = Portkey(api_key="PORTKEY_API_KEY")

tools = [{
    "type": "function",
    "function": {
        "name": "getWeather",
        "description": "Get the current weather",
        "parameters": {
            "type": "object",
            "properties": {
                "location": {"type": "string", "description": "City and state"},
                "unit": {"type": "string", "enum": ["celsius", "fahrenheit"]}
            },
            "required": ["location"]
        }
    }
}]

response = portkey.chat.completions.create(
    model="@x-ai/grok-beta",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "What's the weather like in Delhi?"}
    ],
    tools=tools,
    tool_choice="auto"
)

print(response.choices[0].finish_reason)
import Portkey from 'portkey-ai';

const portkey = new Portkey({
    apiKey: 'PORTKEY_API_KEY'
});

const tools = [{
    type: "function",
    function: {
        name: "getWeather",
        description: "Get the current weather",
        parameters: {
            type: "object",
            properties: {
                location: { type: "string", description: "City and state" },
                unit: { type: "string", enum: ["celsius", "fahrenheit"] }
            },
            required: ["location"]
        }
    }
}];

const response = await portkey.chat.completions.create({
    model: "@x-ai/grok-beta",
    messages: [
        { role: "system", content: "You are a helpful assistant." },
        { role: "user", content: "What's the weather like in Delhi?" }
    ],
    tools,
    tool_choice: "auto"
});

console.log(response.choices[0].finish_reason);
curl https://api.portkey.ai/v1/chat/completions \
     -H "Content-Type: application/json" \
    -H "x-portkey-api-key: $PORTKEY_API_KEY" \
    -H "x-portkey-provider: @x-ai" \
     -d '{
       "model": "grok-beta",
       "messages": [
         {"role": "system", "content": "You are a helpful assistant."},
            {"role": "user", "content": "What'\''s the weather like in Delhi?"}
       ],
       "tools": [{
         "type": "function",
         "function": {
           "name": "getWeather",
           "description": "Get the current weather",
           "parameters": {
             "type": "object",
             "properties": {
               "location": {"type": "string", "description": "City and state"},
               "unit": {"type": "string", "enum": ["celsius", "fahrenheit"]}
             },
             "required": ["location"]
           }
         }
       }],
       "tool_choice": "auto"
     }'

Vision

Process images with Grok’s vision capabilities:
from portkey_ai import Portkey

portkey = Portkey(api_key="PORTKEY_API_KEY")

response = portkey.chat.completions.create(
    model="@x-ai/grok-beta",
    messages=[{
            "role": "user",
            "content": [
                {"type": "text", "text": "What's in this image?"},
                {
                    "type": "image_url",
                "image_url": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg"
        }
        ]
    }],
    max_tokens=300
)

print(response.choices[0].message.content)
import Portkey from 'portkey-ai';

const portkey = new Portkey({
    apiKey: 'PORTKEY_API_KEY'
});

const response = await portkey.chat.completions.create({
    model: "@x-ai/grok-beta",
    messages: [{
      role: "user",
      content: [
        { type: "text", text: "What's in this image?" },
        {
          type: "image_url",
                image_url: "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg"
            }
        ]
    }],
    max_tokens: 300
});

console.log(response.choices[0].message.content);
curl https://api.portkey.ai/v1/chat/completions \
     -H "Content-Type: application/json" \
    -H "x-portkey-api-key: $PORTKEY_API_KEY" \
    -H "x-portkey-provider: @x-ai" \
     -d '{
       "model": "grok-beta",
        "messages": [{
           "role": "user",
           "content": [
             {"type": "text", "text": "What'\''s in this image?"},
             {
               "type": "image_url",
               "image_url": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg"
             }
           ]
        }],
       "max_tokens": 300
     }'

Supported Models

xAI offers powerful models through Grok:
ModelContext LengthDescription
grok-beta131,072 tokensLatest Grok model with enhanced capabilities
grok-2-121232,768 tokensPrevious generation Grok model
Check xAI’s documentation for the latest model information.

Next Steps

Gateway Configs

Add fallbacks, load balancing, and more

Observability

Monitor and trace your xAI requests

Guardrails

Enforce input/output checks on requests

Prompt Library

Manage and version your prompts
For complete SDK documentation:

SDK Reference

Complete Portkey SDK documentation

FAQs

Sign up at xAI and generate your API key from the console.
xAI typically provides free credits to start. Contact their support team for additional credits.
Check your current rate limits in the xAI console. Use Portkey’s load balancing to distribute requests across multiple providers.
Last modified on February 4, 2026