# Luma Photon | Reframe Image Luma Photon Reframe Image is an AI model designed for intelligent image reframing. It adjusts the framing, perspective, and composition of photos while preserving quality and key details, making visuals more engaging and better suited for different formats. ## API Information - **Model Slug:** luma-photon-reframe-image - **Branded URL:** https://www.eachlabs.ai/luma/luma-reframe/luma-photon-reframe-image - **Provider:** Luma - **Category:** Image to Image - **Output Type:** image - **Status:** active - **Version:** 0.0.1 - **Base Cost:** Fixed pricing: $0.019 per request - **Estimated Processing Time:** 70 seconds - **Last Updated:** 2026-04-16 - **Interactive Demo:** https://www.eachlabs.ai/ai-models/luma-photon-reframe-image ## Pricing - **Charge Type:** dynamic - **Estimated Price (default example):** $0.0190 - **Pricing Details:** Fixed pricing: $0.019 per request ### Pricing Rules | Condition | Pricing | | --- | --- | | Rule 1 | Fixed pricing: $0.019 per request | ## Input Schema | Parameter | Type | Required | Default | Constraints | Description | |-----------|------|----------|---------|-------------|-------------| | image_url | string | Yes | - | - | URL of the input image to reframe | | aspect_ratio | string | Yes | 16:9 | 1:1,16:9,9:16,4:3,3:4,21:9,9:21 | The aspect ratio of the reframed image | | prompt | string | No | - | - | Optional prompt for reframing | | grid_position_x | integer | No | - | - | X position of the grid for reframing | | grid_position_y | integer | No | - | - | Y position of the grid for reframing | | x_end | integer | No | - | - | End X coordinate for reframing | | x_start | integer | No | - | - | Start X coordinate for reframing | | y_end | integer | No | - | - | End Y coordinate for reframing | | y_start | integer | No | - | - | Start Y coordinate for reframing | ## 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": "luma-photon-reframe-image", "input": { "aspect_ratio": "16:9", "image_url": "https://storage.googleapis.com/magicpoint/inputs/luma-photon-reframe-image-input.png" } }' ``` ## Output Schema Response returned by `GET /v1/prediction/{id}` when the job completes: ```json { "status": "success", "predictionID": "string", "output": "string (URL of generated image)", "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 **luma-photon-reframe-image — Image-to-Image AI Model** luma-photon-reframe-image, from Luma's luma-reframe family, revolutionizes **image-to-image** workflows by intelligently adjusting framing, perspective, and composition while preserving photo quality and key details. This makes it ideal for adapting visuals to new formats without losing fidelity, solving common pain points in photo editing for e-commerce and social media. Developers and creators searching for "AI image editor API" or "Luma image-to-image" tools will find luma-photon-reframe-image delivers precise reframing that enhances engagement across platforms. ## 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.