# Pruna | P-Image LoRA | Text to Image Pruna P-Image LoRA is a text-to-image model that generates high-quality visuals from text prompts with custom LoRA weight support. ## API Information - **Model Slug:** p-image-lora-text-to-image - **Branded URL:** https://www.eachlabs.ai/pruna/p-image/p-image-lora-text-to-image - **Provider:** Pruna AI - **Category:** Text to Image - **Output Type:** image - **Status:** active - **Base Cost:** $0.005 per execution - **Estimated Processing Time:** 1 seconds - **Interactive Demo:** https://www.eachlabs.ai/ai-models/p-image-lora-text-to-image ## Pricing - **Charge Type:** dynamic - **Estimate:** $0.005 per execution - **Pricing Details:** default: $0.005 ## Input Schema | Parameter | Type | Required | Default | Constraints | Description | |-----------|------|----------|---------|-------------|-------------| | prompt | string | Yes | - | - | Text description of the image to generate. The model automatically enhances prompts for better results. | | lora_weights | string | No | - | - | HuggingFace URL to LoRA weights. Format: huggingface.co//[/]. Must be trained with p-image-trainer. | | lora_scale | number | No | 0.5 | -1–3 | How strongly to apply LoRA. Range: -1 to 3. 0.5 works well for most LoRAs. | | hf_api_token | string | No | - | - | HuggingFace API token for accessing private LoRA repositories. | | aspect_ratio | string | No | 16:9 | 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, custom | Aspect ratio for the generated image. 16:9: landscape (default). 9:16: portrait. 1:1: square. custom: use width/height params for exact dimensions. | | width | integer | No | - | 256–1440 | Custom width (256-1440, multiple of 16). Only when aspect_ratio=custom. | | height | integer | No | - | 256–1440 | Custom height in pixels (256-1440, must be multiple of 16). Only used when aspect_ratio is 'custom'. | | seed | integer | No | - | - | Random seed for reproducible generation. Fix the seed to get the same result every time. | | prompt_upsampling | boolean | No | - | - | Upsample prompt with LLM for enhanced results. | | disable_safety_checker | boolean | No | false | - | Disable safety checker for generated images. Default: false (safety checker enabled). | ## 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": "p-image-lora-text-to-image", "input": { "prompt": "A young woman in her mid-twenties sitting by a large window in a quiet cafe, late afternoon golden hour light streaming in from the left side, casting warm soft shadows across her face, she's looking slightly off-camera with a thoughtful and calm expression, loose natural hair falling over her shoulder, wearing a simple cream linen shirt, a half-finished cup of coffee on the wooden table beside her, shallow depth of field with the background blurred into warm bokeh, subtle film grain overlay, muted warm tones, Kodak Portra 400 film style, editorial portrait photography, photorealistic, 4K" } }' ``` ## 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 **Pruna | P-Image LoRA | Text to Image Overview** The **Pruna | P-Image LoRA | Text to Image** model from Pruna transforms text prompts into high-quality visuals using advanced LoRA technology, solving the challenge of efficient customization in text-to-image generation. Part of the P-Image family, this model leverages Low-Rank Adaptation for parameter-efficient fine-tuning, allowing users to adapt base model capabilities without extensive retraining. Its primary differentiator is the cost-effective training process that maintains high fidelity while supporting custom LoRA weights, making it ideal for developers and creators seeking flexible, API-driven image synthesis on platforms like each::labs. Available via the **Pruna | P-Image LoRA | Text to Image API**, it excels in generating detailed images from natural language descriptions, outperforming traditional fine-tuning in resource efficiency. Whether for prototyping concepts or producing stylized art, Pruna text-to-image delivers consistent results with minimal overhead, positioning it as a go-to for scalable workflows. ## 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.