ideabrowser.com — find trending startup ideas with real demand
Try itnpx skills add https://github.com/letz-ai/letzai-skill --skill letzai-apiThis skill enables Claude to help users integrate with the LetzAI API for AI-powered image and video generation, editing, and upscaling. Users can also leverage custom-trained AI models (persons, objects, styles) via the @modelname syntax.
https://api.letz.aiconst headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer YOUR_API_KEY'
};
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer YOUR_API_KEY'
}
Endpoint: POST /images
Required Parameters:
prompt (string): Text description of the desired image. Can include @modelname to use trained models.Optional Parameters:
baseModel: AI model to use
"gemini-3-pro-image-preview" - Nano Banana Pro (recommended)"flux2-max" - Flux2 Max"seedream-4-5-251128" - SeeDream 4.5mode: Resolution mode (varies by model)
"default", "2k", "4k""1k", "hd""2k", "4k"width / height: Image dimensions (520-2160px)Workflow:
/images with parametersid in responseGET /images/{id} every 3 secondsstatus === "ready", access imageVersions.originalFor code examples, see examples/image_generation.js
Endpoint: POST /videos
Required Parameters:
prompt (string): Text description of the desired videoimageUrl: URL of source imageoriginalImageCompletionId: ID from previous image generationOptional Parameters:
settings.mode: Video model
"default" - Default model"veo31" - VEO 3.1"kling26" - Kling 2.6"wan25" - Wan 2.5settings.duration: Video length in seconds (2-12 depending on model)Workflow:
/videos with parametersid in responseGET /videos/{id} every 2-3 secondsstatus === "ready", access videoPathsFor code examples, see examples/video_generation.py
Endpoint: POST /image-edits
Required Parameters:
mode: Edit mode
"context" - AI editing (primary mode)"skin" - Skin fixprompt: Edit instruction (e.g., "change background to beach")imageUrl: URL of source imageinputImageUrls[]: Array of source image URLs (max 9)originalImageCompletionId: ID of previously generated LetzAI imageOptional Parameters:
settings.model: "gemini-3-pro-image-preview", "flux2-max", "seedream-4-5-251128"settings.resolution: "2k" (HD) or "4k" (Ultra HD)settings.aspect_ratio: "1:1", "16:9", "9:16", "4:3", "3:4", "21:9", "9:21"baseModel: Alternative to settings.modelwebhookUrl: Optional callback URLorganizationId: Optional org ID for billingWorkflow:
/image-edits with parametersid in responseGET /image-edits/{id} every 3 secondsstatus === "ready", access generatedImageCompletion.imageVersions.originalNote: Inpainting (mode: "in") and Outpainting (mode: "out") are deprecated - use Context Editing instead.
Endpoint: POST /upscales
Required Parameters:
imageUrl: URL of source imageimageCompletionId: ID from previous image generationOptional Parameters:
strength: Upscale factor (1-3)Workflow:
/upscales with parametersid in responseGET /upscales/{id} every 3 secondsstatus === "ready", access upscaled imageLetzAI users can train custom AI models on persons, objects, or styles via the web interface. These trained models can be used in prompts via the @modelname syntax.
List Models Endpoint: GET /models
Query Parameters:
page: int (default: 1)limit: int (default: 10)sortBy: "createdAt" | "usages"sortOrder: "ASC" | "DESC"class: "person" | "object" | "style"Get Model Details: GET /models/{id}
Model Classes:
person: Trained on photos of a specific personobject: Trained on product/object imagesstyle: Trained on artistic style examplesUsing Models in Prompts:
Tag models with @modelname syntax:
@john_doe on the beach at sunset - Use a person modelA product photo featuring @my_product - Use an object modelPortrait in @vintage_style aesthetic - Use a style modelNote: Model training is done via the LetzAI web interface (letz.ai), not via API.
POST /images with appropriate baseModel@modelname in the promptGET /images/{id} every 3s until readyimageVersions.original URLGET /models to list available trained models (filter by class if needed)@modelname in the prompt when generating imagesPOST /imagesPOST /image-edits with mode="context"GET /image-edits/{id} every 3s until readygeneratedImageCompletion.imageVersions.original/imagesPOST /videos with desired settingsGET /videos/{id} every 2-3s until readyvideoPathsPOST /upscales with desired strengthGET /upscales/{id} every 3s until readyLetzAI uses asynchronous generation. After any POST request, you must poll the corresponding GET endpoint until the job completes.
| Status | Meaning |
|---|---|
new | Job created, queued for processing |
in progress / generating | Currently processing |
ready | Complete - fetch URLs from response |
failed | Error occurred - check error message |
For detailed polling implementation, see examples/polling_pattern.md
| Feature | Model | Credits |
|---|---|---|
| Image Gen | Nano Banana Pro | 80/160/240 (1k/HD/4K) |
| Image Gen | Flux2 Max | 60/120 (1k/HD) |
| Image Gen | SeeDream | 80/160 (HD/4K) |
| Editing | Same as above | Same pricing |
| Video | Default | 60 cr/sec (2-6 sec) |
| Video | VEO 3.1 | 1500-6000 cr (8 sec) |
| Video | Kling 2.6 | 750-1500 cr (5-10 sec) |
| Upscale | All | 40 cr |
| Status | Meaning | Solution |
|---|---|---|
| 401 | Invalid or missing API key | Check Authorization header format |
| 402 | Insufficient credits | Top up at letz.ai/subscription |
| 400 | Invalid parameters | Verify baseModel, mode, dimensions |
| 404 | Resource not found | Check the ID is correct |
| 429 | Rate limited | Implement exponential backoff |
| 500 | Server error | Retry after delay |
{
"error": "Error description",
"code": "ERROR_CODE"
}
| Endpoint | Method | Purpose |
|---|---|---|
/images | GET | List user's images |
/images | POST | Create image (prompt, baseModel, mode, width, height) |
/images/{id} | GET | Get image status & URLs (poll every 3s) |
/images/{id}/interruption | PUT | Stop image generation |
/images/{id}/privacy | PUT | Change image privacy |
/videos | GET | List user's videos |
/videos | POST | Create video (prompt, imageUrl, settings) |
/videos/{id} | GET | Get video status & URLs (poll every 2-3s) |
/videos/{id}/interruption | PUT | Stop video generation |
/videos/{id}/privacy | PUT | Change video privacy |
/image-edits | GET | List user's edits |
/image-edits | POST | Edit image (mode, prompt, imageUrl/inputImageUrls, settings) |
/image-edits/{id} | GET | Get edit status & URLs (poll every 3s) |
/upscales | POST | Upscale image (imageUrl/imageUrls, strength, mode, size) |
/upscales/{id} | GET | Get upscale status & URLs (poll every 3s) |
/models | GET | List trained AI models (filter by class: person/object/style) |
/models/{id} | GET | Get specific model details |
imageVersions.original, imageVersions["1920x1920"], imageVersions["640x640"]generatedImageCompletion.imageVersions.originalvideoPaths object, videoVersions arraynew, in progress/generating, ready, failed