# GPT Image | v2 | Text to Image GPT Image 2 produces higher-fidelity images with stronger prompt understanding, improved compositional consistency, more physically accurate lighting, and enhanced fine-detail rendering. ## API Information - **Model Slug:** gpt-image-v2-text-to-image - **Branded URL:** https://www.eachlabs.ai/openai/gpt-image/gpt-image-v2-text-to-image - **Provider:** OpenAI - **Category:** Text to Image - **Output Type:** array - **Status:** active - **Version:** 0.0.1 - **Base Cost:** gpt-image-2: $5 per 1M text input tokens, $10 per 1M image input tokens, $40 per 1M text output tokens, and $30 per 1M image output tokens. - **Estimated Processing Time:** 120 seconds - **Last Updated:** 2026-07-13 - **Interactive Demo:** https://www.eachlabs.ai/ai-models/gpt-image-v2-text-to-image ## Pricing - **Charge Type:** dynamic - **Pricing Details:** gpt-image-2: $5 per 1M text input tokens, $10 per 1M image input tokens, $40 per 1M text output tokens, and $30 per 1M image output tokens. ### Pricing Rules | Condition | Pricing | | --- | --- | | Rule 1 | gpt-image-2: $5 per 1M text input tokens, $10 per 1M image input tokens, $40 per 1M text output tokens, and $30 per 1M image output tokens. | | Default (fallback) | Fallback if token breakdown unavailable (medium 1024x1024 equivalent) | ## Input Schema No input parameters documented. ## Example Request ```bash curl -X POST https://api.eachlabs.ai/v1/prediction/ \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "gpt-image-v2-text-to-image", "input": {} }' ``` ## Output Schema Response returned by `GET /v1/prediction/{id}` when the job completes: ```json { "status": "success", "predictionID": "string", "output": "array", "metrics": { "predict_time": "number (seconds)" } } ``` ## Polling ```bash curl https://api.eachlabs.ai/v1/prediction/{PREDICTION_ID} \ -H "Authorization: Bearer YOUR_API_KEY" ``` | Status | Meaning | |--------|---------| | `processing` | Still running — poll again | | `success` | Done — read `output` | | `error` | Failed — read `message` / `details` | ## Webhook (alternative to polling) Pass `"webhook_url": "https://your.host/path"` in the create request. Eachlabs POSTs this payload when the job ends: ```json { "exec_id": "prediction-uuid", "status": "succeeded", "output": "https://...", "error": "" } ``` `status` is `"succeeded"` or `"failed"`. `exec_id` equals the `predictionID` from create. Return 2xx within 30 seconds. ## Errors Error body: `{ "status": "error", "message": "...", "details": "..." }` | Code | Meaning | |------|---------| | `400` | Invalid input | | `401` | Missing / invalid `Authorization` bearer token | | `404` | Unknown model or prediction id | | `429` | Rate limit — 100 creates / min, 10 concurrent per key | | `5xx` | Retry with backoff | ## Overview **GPT Image | v2 | Text to Image Overview** GPT Image | v2 | Text to Image, from OpenAI's gpt-image family, transforms text prompts into high-fidelity images with exceptional photorealism and precise text rendering. This text-to-image model solves the challenge of generating visually accurate content for marketing, design, and product visualization, where traditional AI often struggles with legible text and realistic details. Its primary differentiator is a quality-first architecture that delivers pixel-perfect text in dense paragraphs, multilingual layouts, and infographics, alongside brand-consistent product photography with accurate labels and logos. Available via APIs like those on each::labs, GPT Image | v2 | Text to Image sets a new standard for OpenAI text-to-image generation, prioritizing fidelity over speed for professional outputs. ## Usage Notes - API Base URL: `https://api.eachlabs.ai/v1` - Authentication: send `Authorization: Bearer YOUR_API_KEY`. Generate a key from the Eachlabs dashboard at https://www.eachlabs.ai/dashboard/api-keys. - File-typed parameters (`*_url`, `image_url`, `video_url`, `audio_url`, etc.) accept publicly-reachable HTTPS URLs only. Upload your asset first (GCS / S3 / your CDN) and pass the resulting URL. Data-URIs and localhost URLs are rejected. - For structured parameters (arrays / objects) send real JSON values, not stringified payloads. - Monetary values are reported in USD; per-token / per-megapixel rates may be billed in micro-cents internally. - Prefer `webhook_url` over polling for long-running predictions — see the Webhook Callback section.