Skip to content

xAI (Grok)

The xAI plugin provides AI text generation and vision analysis using xAI’s Grok models.

FeatureProviderDescription
Text GenerationGrokGenerate text with structured JSON output support
Vision AnalysisGrok VisionAnalyze images and extract information
Terminal window
pnpm add @teamflojo/floimg-xai

Get your API key from xAI Console.

Terminal window
export XAI_API_KEY=your-api-key

All providers support per-request API keys via the apiKey parameter, allowing users to provide their own keys.


Generate text using Grok with optional structured JSON output.

import createClient from '@teamflojo/floimg';
import { grokText } from '@teamflojo/floimg-xai';
const floimg = createClient();
floimg.registerTextProvider(grokText());
// Simple text generation
const result = await floimg.generateText({
provider: 'grok-text',
params: {
prompt: 'Write 3 creative image prompts for a cyberpunk cityscape',
}
});
console.log(result.content);
// Generate structured JSON
const result = await floimg.generateText({
provider: 'grok-text',
params: {
prompt: 'Generate image prompts for a tech product launch',
outputFormat: 'json',
jsonSchema: {
type: 'object',
properties: {
prompts: {
type: 'array',
items: { type: 'string' }
},
style: { type: 'string' },
mood: { type: 'string' }
}
}
}
});
console.log(result.parsed); // Typed JSON object
ParameterTypeRequiredDescription
promptstringYesText prompt for generation
systemPromptstringNoSystem prompt to guide behavior
contextstringNoAdditional context
outputFormat'text' | 'json'NoOutput format (default: 'text')
jsonSchemaobjectNoJSON schema for structured output
temperaturenumberNoCreativity (0-2, default: 0.7)
maxTokensnumberNoMax response tokens (default: 1000)
modelstringNoModel name (default: grok-2)
apiKeystringNoPer-request API key override
ModelDescription
grok-2Latest Grok 2 model (default)
grok-3-betaGrok 3 beta

Analyze images using Grok’s vision capabilities.

import createClient from '@teamflojo/floimg';
import { grokVision } from '@teamflojo/floimg-xai';
const floimg = createClient();
floimg.registerVisionProvider(grokVision());
// Analyze an image
const result = await floimg.analyzeImage({
provider: 'grok-vision',
blob: imageBlob,
params: {
prompt: 'What objects are in this image? Describe the scene.',
}
});
console.log(result.content);
// Get structured analysis
const result = await floimg.analyzeImage({
provider: 'grok-vision',
blob: imageBlob,
params: {
prompt: 'Analyze this image for content moderation',
outputFormat: 'json',
jsonSchema: {
type: 'object',
properties: {
objects: { type: 'array', items: { type: 'string' } },
people: { type: 'number' },
setting: { type: 'string' },
mood: { type: 'string' },
safeForWork: { type: 'boolean' }
}
}
}
});
console.log(result.parsed.safeForWork);
ParameterTypeRequiredDescription
promptstringNoWhat to analyze (default: “Describe this image”)
outputFormat'text' | 'json'NoOutput format (default: 'text')
jsonSchemaobjectNoJSON schema for structured output
maxTokensnumberNoMax response tokens (default: 1000)
modelstringNoModel name (default: grok-2-vision)
apiKeystringNoPer-request API key override
ModelDescription
grok-2-visionGrok 2 with vision (default)

Combine Grok text and vision in a workflow:

import createClient from '@teamflojo/floimg';
import { grokText, grokVision } from '@teamflojo/floimg-xai';
const floimg = createClient();
floimg.registerTextProvider(grokText());
floimg.registerVisionProvider(grokVision());
// 1. Analyze the input image
const analysis = await floimg.analyzeImage({
provider: 'grok-vision',
blob: inputImage,
params: {
prompt: 'Describe this image in detail, including mood and style',
}
});
// 2. Generate enhancement suggestions based on analysis
const suggestions = await floimg.generateText({
provider: 'grok-text',
params: {
prompt: 'Based on this image description, suggest 3 creative variations',
context: analysis.content,
outputFormat: 'json',
jsonSchema: {
type: 'object',
properties: {
variations: {
type: 'array',
items: {
type: 'object',
properties: {
name: { type: 'string' },
prompt: { type: 'string' },
style: { type: 'string' }
}
}
}
}
}
}
});
console.log(suggestions.parsed.variations);

The xAI API is OpenAI-compatible. Under the hood, the plugin uses the OpenAI SDK with xAI’s base URL (https://api.x.ai/v1).