Discover and implement EachLabs AI providers. Use when: checking for new EachLabs models, implementing EachLabs providers, updating providers.md status, or working with EachLabs API integrations.
Manage the lifecycle of EachLabs AI providers: discover new models via API and implement them as IMG.LY providers.
EachLabs provides a structured API for model discovery:
specs/providers/eachlabs/providers.mdspecs/providers/ (schemas, architecture)packages/plugin-ai-image-generation-web/src/eachlabs/packages/plugin-ai-video-generation-web/src/eachlabs/packages/plugin-ai-image-generation-web/README.mdpackages/plugin-ai-video-generation-web/README.mdhttps://api.eachlabs.ai
X-API-Key: <your-api-key>GET /v1/models - List all modelsGET /v1/model?slug=<slug> - Get model details including request_schemaPOST /v1/prediction - Create predictionGET /v1/prediction/{id} - Get prediction statusGET /v1/models?limit=500&offset=0&name=<filter>
Response:
{
"models": [
{
"title": "Flux 2 Pro",
"slug": "flux-2-pro",
"version": "0.0.1",
"output_type": "image"
}
]
}
GET /v1/model?slug=<model-slug>
Response includes request_schema:
{
"title": "Flux 2 Pro",
"slug": "flux-2-pro",
"version": "0.0.1",
"output_type": "image",
"request_schema": {
"type": "object",
"required": ["prompt"],
"properties": {
"prompt": {
"type": "string",
"default": "",
"description": "The prompt to generate an image from."
},
"image_size": {
"type": "string",
"default": "landscape_4_3",
"enum": ["square_hd", "square", "portrait_4_3", "portrait_16_9", "landscape_4_3", "landscape_16_9"]
}
}
}
}
POST /v1/prediction
Content-Type: application/json
X-API-Key: <api-key>
{
"model": "flux-2-pro",
"version": "0.0.1",
"input": { ... }
}
GET /v1/prediction/{id}
X-API-Key: <api-key>
Response:
{
"id": "...",
"status": "success|processing|starting|failed|cancelled",
"output": { ... },
"predict_time": 12.5,
"cost": 0.05
}
This skill operates in two phases:
Run the discovery script to get available models:
node .claude/skills/partner-providers-eachlabs/discover-models.mjs
This outputs a minimal JSON array with slug, title, and output_type for each model. Compare against specs/providers/eachlabs/providers.md to identify new models.
For detailed steps, see DISCOVERY_CHECKLIST.md.
Classify models by output_type:
image - Image generation (text-to-image, image-to-image)video - Video generation (text-to-video, image-to-video)audio - Audio generationtext - Text generationarray - Multi-output (e.g., multiple images)| Pattern | Capability |
|---|---|
-text-to-video |
text-to-video |
-image-to-video |
image-to-video |
image_url in required |
image-to-image or image-to-video |
Only prompt required, output=image |
text-to-image |
Only prompt required, output=video |
text-to-video |
## Discovery Results
### New Models Found
| Slug | Name | Type | Capability | Recommendation |
|------|------|------|------------|----------------|
| flux-2-pro | Flux 2 Pro | image | t2i | implement |
### Updated Models
| Slug | Change |
|------|--------|
| ... | ... |
### Summary
- X new models found
- Y recommended for implementation
- Z skipped (older versions, niche use cases)
After presenting results, ask: "Which models would you like me to implement?"
Only proceed after user approval. Follow IMPLEMENTATION_CHECKLIST.md to:
request_schemarequest_schema to OpenAPI format (add x-imgly-* extensions)eachlabs/index.tstranslations.jsonexamples/ai/src/eachlabsProviders.ts)specs/providers/eachlabs/providers.md status to "implemented"pnpm --filter "@imgly/plugin-ai-*" check:allEachLabs request_schema is JSON Schema format. Convert to OpenAPI with IMG.LY extensions:
Input (EachLabs):
{
"type": "object",
"properties": {
"prompt": {
"type": "string",
"description": "The prompt"
},
"image_size": {
"type": "string",
"enum": ["square", "landscape_4_3"]
}
}
}
Output (OpenAPI with extensions):
{
"openapi": "3.0.0",
"info": { "title": "EachLabs API", "version": "1.0.0" },
"components": {
"schemas": {
"ModelNameInput": {
"type": "object",
"properties": {
"prompt": {
"title": "Prompt",
"type": "string",
"description": "The prompt",
"x-imgly-builder": { "component": "TextArea" }
},
"image_size": {
"title": "Format",
"type": "string",
"enum": ["square", "landscape_4_3"],
"x-imgly-enum-labels": {
"square": "Square",
"landscape_4_3": "Landscape 4:3"
},
"x-imgly-builder": { "component": "Select" }
}
},
"x-fal-order-properties": ["prompt", "image_size"],
"required": ["prompt"]
}
}
},
"paths": {}
}
| JSON Schema Type | x-imgly-builder component |
|---|---|
string (long text) |
TextArea |
string (enum) |
Select |
string (url/image) |
Custom via renderCustomProperty |
boolean |
Switch |
integer/number |
Number |
When updating providers.md:
| Status | When to Use |
|---|---|
implemented |
Provider code exists and works |
planned |
Will implement (high priority) |
skipped |
Intentionally not implementing (older version, limited use) |
undecided |
Needs discussion |
discover-models.mjs - Discovery script (run to find new models)DISCOVERY_CHECKLIST.md - Step-by-step discovery processIMPLEMENTATION_CHECKLIST.md - Step-by-step implementation processspecs/providers/README.md - Overview of provider systemspecs/providers/architecture.md - How providers fit into the plugin systemspecs/providers/patterns/ui-guidelines.md - CRITICAL: Which parameters to expose/hide in UIspecs/providers/patterns/text-to-image.md - T2I implementation patternspecs/providers/patterns/image-to-image.md - I2I implementation patternspecs/providers/patterns/text-to-video.md - T2V implementation patternspecs/providers/patterns/image-to-video.md - I2V implementation patternspecs/providers/eachlabs/providers.md - Model inventory and status