Generate a new component
curl --request POST \
--url https://api.yalg.ai/v1/components/generate \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"prompt": "Create a clean animated metric card for a 9:16 video.",
"category": "metric"
}
'const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
prompt: 'Create a clean animated metric card for a 9:16 video.',
category: 'metric'
})
};
fetch('https://api.yalg.ai/v1/components/generate', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.yalg.ai/v1/components/generate"
payload = {
"prompt": "Create a clean animated metric card for a 9:16 video.",
"category": "metric"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"id": "018f9f51-4b89-778f-9c0b-fd4626f47326",
"name": "Metric comparison card",
"category": "metric",
"isPublic": false,
"isValidated": true,
"createdAt": "2026-06-20T17:24:39.000Z",
"updatedAt": "2026-06-20T17:24:39.000Z"
}{
"statusCode": 400,
"message": "Validation failed",
"error": "Bad Request",
"code": "validation_failed"
}{
"statusCode": 401,
"message": "Invalid or missing API key",
"error": "Unauthorized",
"code": "unauthorized"
}{
"statusCode": 403,
"message": "Access denied",
"error": "Forbidden",
"code": "forbidden"
}{
"statusCode": 409,
"message": "Resource conflict",
"error": "Conflict",
"code": "conflict"
}{
"statusCode": 429,
"message": "Rate limit exceeded",
"error": "Too Many Requests",
"code": "rate_limit_exceeded",
"retryAfter": 60
}{
"statusCode": 500,
"message": "Internal server error",
"error": "Internal Server Error",
"code": "internal_server_error"
}components
Generate a new component
Generate a new component using AI based on user prompt
POST
/
v1
/
components
/
generate
Generate a new component
curl --request POST \
--url https://api.yalg.ai/v1/components/generate \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"prompt": "Create a clean animated metric card for a 9:16 video.",
"category": "metric"
}
'const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
prompt: 'Create a clean animated metric card for a 9:16 video.',
category: 'metric'
})
};
fetch('https://api.yalg.ai/v1/components/generate', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.yalg.ai/v1/components/generate"
payload = {
"prompt": "Create a clean animated metric card for a 9:16 video.",
"category": "metric"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"id": "018f9f51-4b89-778f-9c0b-fd4626f47326",
"name": "Metric comparison card",
"category": "metric",
"isPublic": false,
"isValidated": true,
"createdAt": "2026-06-20T17:24:39.000Z",
"updatedAt": "2026-06-20T17:24:39.000Z"
}{
"statusCode": 400,
"message": "Validation failed",
"error": "Bad Request",
"code": "validation_failed"
}{
"statusCode": 401,
"message": "Invalid or missing API key",
"error": "Unauthorized",
"code": "unauthorized"
}{
"statusCode": 403,
"message": "Access denied",
"error": "Forbidden",
"code": "forbidden"
}{
"statusCode": 409,
"message": "Resource conflict",
"error": "Conflict",
"code": "conflict"
}{
"statusCode": 429,
"message": "Rate limit exceeded",
"error": "Too Many Requests",
"code": "rate_limit_exceeded",
"retryAfter": 60
}{
"statusCode": 500,
"message": "Internal server error",
"error": "Internal Server Error",
"code": "internal_server_error"
}Authorizations
ApiKeyAuthbearer
YALG Developer API key. Send it in the x-api-key header from a server-side environment only.
Body
application/json
Natural language description of the component to generate
Required string length:
10 - 2000Example:
"A stat card that displays a percentage with a circular progress indicator"
Category for the component
Available options:
text, stat, transition, cta, custom Example:
"stat"
Name for the component
Maximum string length:
200Example:
"Circular Progress Card"
Tags for searchability
Example:
["stat", "progress", "circular"]
Theme ID to use for generation context
Whether the component should be public
Response
Component generated successfully
- Option 1
- Option 2
Generated visual component.
Component identifier.
Example:
"018f9f40-7d7b-7712-9b0f-2e5d9fd5df3f"
Example:
"Metric counter"
Example:
"chart"
Generated component source code.
Example:
false
Example:
true
Example:
"2026-06-20T17:24:39.000Z"
Example:
"2026-06-20T17:24:39.000Z"