Image Generation
Learn how to generate images using TurboAPI.
TurboAPI provides unified access to leading image generation models including DALL-E 3, Midjourney, and Stable Diffusion.
Generate Images
import { TurboAPIClient } from '@turboapiai/sdk';
const client = new TurboAPIClient({
apiKey: process.env.TURBOAPI_API_KEY,
});
// Generate an image using an image generation API
const task = await client.call.createAndWait('api-slug', {
prompt: 'A beautiful sunset over mountains with golden light',
});
console.log(task.output);
Image to Image
Transform existing images:
const task = await client.call.createAndWait('api-slug', {
image_url: 'https://example.com/input.jpg',
prompt: 'Turn this into a painting style',
});
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
input_params | object | Yes | API-specific input parameters |
webhook_url | string | No | Callback URL for async completion |
idempotency_key | string | No | Idempotency key to prevent duplicate tasks |
Task-Based Execution
All API calls return a task object:
// Create a task and wait for completion
const task = await client.call.createAndWait('api-slug', {
input_param: 'value',
});
console.log('Task output:', task.output);
console.log('Task status:', task.status);
You can also create a task and check its status later:
// Create a task asynchronously
const task = await client.call.create('api-slug', {
input_param: 'value',
});
// Check status later
const status = await client.call.get(task.id);
console.log(status.output);
Response
{
"id": "task_123",
"status": "completed",
"output": {
"url": "https://...",
"revised_prompt": "..."
},
"created_at": "2025-01-01T00:00:00Z"
}
Advanced Features
Negative Prompts
Tell the model what NOT to generate:
const task = await client.call.createAndWait('api-slug', {
prompt: 'A beautiful portrait',
negative_prompt: 'blurry, low quality, distorted, extra limbs',
});
Image Variations
Generate variations based on an existing image:
const task = await client.call.createAndWait('api-slug', {
image: imageBuffer,
});
Image Inpainting
Edit specific regions of an image:
const task = await client.call.createAndWait('api-slug', {
image: originalImageBuffer,
mask: maskBuffer, // Transparent areas will be regenerated
prompt: 'Add a rainbow to the sky',
});
Prompt Tips
Be Specific
Good: A fluffy golden retriever running through a sunny park with green grass
Bad: Dog
Mention Style
Good: Cyberpunk city at night, neon lights reflecting on wet streets
Bad: City night
Use Quality Keywords
Good: High quality photo, 8K resolution, professional photography
Bad: Just draw something
Code Examples
Batch Generation
async function generateMultipleImages(prompts: string[]) {
const results = await Promise.all(
prompts.map((prompt) =>
client.call.createAndWait('api-slug', { prompt })
)
);
return results;
}
const prompts = [
'A beach at sunset',
'A mountain cabin in the snow',
'A rainy city street',
];
const images = await generateMultipleImages(prompts);
Download and Process
import { writeFile } from 'fs/promises';
async function downloadOutput(url: string, filename: string) {
const response = await fetch(url);
const buffer = await response.arrayBuffer();
await writeFile(filename, Buffer.from(buffer));
console.log(`Output saved to ${filename}`);
}
// Usage
const task = await client.call.createAndWait('api-slug', {
prompt: 'Colorful butterfly',
});
if (task.output?.url) {
await downloadOutput(task.output.url, 'butterfly.png');
}
Best Practices
- Be specific in your prompt
- Mention style (photorealistic, oil painting, anime)
- Specify lighting (golden hour, neon, natural)
- Include composition details (portrait, landscape, close-up)
Tip: Start with simple prompts and iterate based on results.
Image generation may take some time, especially with high quality settings. Please be patient.