forked from mito-systems/sol-mem-gen
48 lines
1.2 KiB
TypeScript
48 lines
1.2 KiB
TypeScript
import { NextRequest, NextResponse } from 'next/server'
|
|
import OpenAI from "openai";
|
|
|
|
if (!process.env.XAI_API_KEY) {
|
|
throw new Error('XAI_API_KEY is not configured in environment variables')
|
|
}
|
|
|
|
const GROK_API_URL = 'https://api.openai.com/v1'
|
|
|
|
export async function POST(req: NextRequest): Promise<NextResponse> {
|
|
try {
|
|
const { prompt } = await req.json()
|
|
|
|
if (!prompt) {
|
|
return NextResponse.json(
|
|
{ error: 'Prompt is required' },
|
|
{ status: 400 }
|
|
)
|
|
}
|
|
|
|
const openai = new OpenAI({
|
|
apiKey: process.env.XAI_API_KEY,
|
|
baseURL: GROK_API_URL,
|
|
});
|
|
|
|
const image = await openai.images.generate({ model: "dall-e-3", prompt: prompt });
|
|
|
|
|
|
// Extract the image URL from Grok's response
|
|
const imageUrl = image.data[0].url
|
|
|
|
if (!imageUrl) {
|
|
console.error('No image in response:', data)
|
|
throw new Error('No image generated in Grok API result')
|
|
}
|
|
|
|
return NextResponse.json({ imageUrl })
|
|
} catch (error) {
|
|
console.error('Grok generation error:', error)
|
|
return NextResponse.json(
|
|
{ error: error instanceof Error ? error.message : 'Failed to generate image' },
|
|
{ status: 500 }
|
|
)
|
|
}
|
|
}
|
|
|
|
export const dynamic = 'force-dynamic'
|