System
服务状态和在线文档。
/
接口列表页面。
Response Example
{
"contentType": "text/html",
"status": 200
}
/openapi.json
OpenAPI JSON。
Response Example
{
"openapi": "3.0.3",
"info": {
"title": "ImageDescriptionGenerator API",
"version": "0.1.0"
},
"paths": {}
}
/health
健康检查。
Response Example
{
"success": true,
"data": {
"service": "api-imagedescriptiongenerator",
"status": "ok"
},
"message": ""
}
Website API - /api/v1
给主站 imagedescriptiongenerator.online 调用。
/api/v1/users/anonymous
打开网站时创建或恢复匿名用户;登录用户调用时返回登录用户资料和 credits。
Request Example
{
"anonymousToken": "localStorage 中保存的 anonymousToken,可选",
"deviceFingerprint": "前端设备指纹 hash,建议传",
"client": {
"timezone": "Asia/Shanghai",
"screenWidth": 1440,
"screenHeight": 900,
"deviceMemory": 8,
"hardwareConcurrency": 12,
"platform": "Win32"
}
}
Response Example
{
"success": true,
"data": {
"anonymousId": "anonymous-session-uuid",
"anonymousToken": "server-signed-token",
"isNewUser": true,
"freeQuota": {
"limit": 3,
"used": 0,
"remaining": 3
},
"confidenceScore": 100,
"riskScore": 8,
"restoredBy": "new"
},
"message": ""
}
Alternate Response
{
"success": true,
"data": {
"authenticated": true,
"userType": "registered",
"userId": "auth-user-uuid",
"email": "[email protected]",
"profile": {
"id": "auth-user-uuid",
"email": "[email protected]",
"displayName": "User Name",
"avatarUrl": "https://...",
"authProvider": "google"
},
"signupBonus": {
"granted": false,
"amount": 0
},
"credits": {
"balance": 5
}
},
"message": ""
}
/api/v1/users/merge-anonymous
登录后合并匿名用户数据;已合并或没有匿名身份时会跳过。
Request Example
{
"anonymousToken": "localStorage 中保存的 anonymousToken",
"anonymousId": "anonymous-session-uuid",
"reason": "login"
}
Response Example
{
"success": true,
"data": {
"anonymousId": "anonymous-session-uuid",
"userId": "auth-user-uuid",
"merged": true,
"signupBonus": {
"granted": true,
"amount": 5
},
"credits": {
"balance": 5
}
},
"message": ""
}
/api/v1/events
网站行为事件上报,用于后台查看用户访问路径。
Request Example
{
"anonymousId": "anonymous-session-uuid",
"sessionId": "browser-session-id",
"eventName": "page_view",
"step": "进入首页",
"pagePath": "/en/image-description-generator",
"pageTitle": "Image Description Generator",
"locale": "en",
"tool": "image-description",
"metadata": {}
}
Response Example
{
"success": true,
"data": {
"accepted": true,
"stored": true,
"sessionId": "browser-session-id"
},
"message": ""
}
/api/v1/generations
创建图片生成任务。匿名用户消耗 lifetime 免费 3 次;登录用户按 credits 规则扣费。
Request Example
{
"anonymousId": "anonymous-session-uuid",
"tool": "alt-text",
"locale": "en",
"quality": "standard",
"imageUrl": "https://example.com/photo.jpg",
"imageStoragePath": "uploads/xxx.webp",
"imageHash": "sha256...",
"mimeType": "image/webp",
"fileSize": 123456,
"originalFileName": "loud-kids-club-poster.webp",
"toolOptions": {
"purpose": "seo",
"tokenLength": "concise",
"keywords": [
"streetwear hoodie",
"kids fashion",
"poster"
],
"outputFormats": [
"plain_text",
"html_img",
"markdown"
],
"strictVisibleOnly": true
}
}
Response Example
{
"success": true,
"data": {
"jobId": "generation-job-uuid",
"status": "queued",
"billing": {
"mode": "anonymous_free",
"creditsCharged": 0,
"freeQuota": {
"limit": 3,
"used": 1,
"remaining": 2
}
}
},
"message": ""
}
Error Response
{
"success": false,
"code": "ANONYMOUS_FREE_LIMIT_REACHED",
"message": "You've used your 3 free generations. Sign up to get 5 credits.",
"details": {
"nextAction": "signup",
"freeQuota": {
"limit": 3,
"used": 3,
"remaining": 0
}
}
}
/api/v1/generations/:id
查询生成任务结果。
Response Example
{
"success": true,
"data": {
"jobId": "generation-job-uuid",
"status": "completed",
"tool": "alt-text",
"result": {
"recommendedAltText": "Loud Kids Club street style poster with a model in a blue smiley hoodie holding a lollipop",
"htmlImgTag": "<img src=\"loud-kids-club-poster.webp\" alt=\"Loud Kids Club street style poster with a model in a blue smiley hoodie holding a lollipop\" />",
"markdown": ""
},
"error": null
},
"message": ""
}
/api/v1/me/credits
获取当前登录用户积分余额。
Response Example
{
"success": true,
"data": {
"userId": "auth-user-uuid",
"balance": 5,
"signupBonus": {
"granted": false,
"amount": 0
}
},
"message": ""
}
/api/v1/pricing?site=imagedescriptiongenerator&type=subscription&locale=en
获取公开价格配置;subscription 和 credits 按后台启用状态返回。
Response Example
{
"success": true,
"data": {
"site": "imagedescriptiongenerator",
"currency": "USD",
"locale": "en",
"sections": [
{
"type": "subscription",
"enabled": true,
"plans": []
}
],
"plans": [
{
"id": "pricing-plan-uuid",
"planType": "subscription",
"slug": "basic-monthly",
"name": "Basic",
"price": 5.94,
"priceLabel": "$5.94/mo",
"billingInterval": "month",
"credits": 180,
"status": "enabled",
"purchasable": true,
"discount": {
"showDiscount": true,
"percentage": 40,
"discountedPrice": 3.56,
"daysRemaining": 7
},
"availableLocales": [
"en",
"zh",
"ja"
]
}
]
},
"message": ""
}
/api/v1/color-page/categories?locale=en
获取 Color Page 首页分类;name/description 按 locale 本地化。
Request Fields
| 字段 | 类型/位置 | 必填 | 说明 |
|---|---|---|---|
| locale | query | 否 | 返回文案语言:en、zh、ja、ko、es、fr、de、ru、pt、it、zh-TW、hi、id、th、vi。 |
Response Fields
| 字段 | 类型/位置 | 必填 | 说明 |
|---|---|---|---|
| data.locale | string | 是 | 本次请求使用的目标语言。 |
| data.items[].slug | string | 是 | 分类 slug。 |
| data.items[].name | string | 是 | 本地化后的分类名称。 |
| data.items[].description | string | 是 | 本地化后的分类描述。 |
| data.items[].availableLocales | string[] | 是 | 已配置语言列表。 |
Response Example
{
"success": true,
"data": {
"locale": "en",
"items": [
{
"id": "category-uuid",
"slug": "trending",
"name": "Trending",
"description": "Popular coloring page creations",
"sortOrder": 20,
"locale": "en",
"availableLocales": [
"en",
"zh",
"ja"
],
"createdAt": "2026-06-11T08:00:00.000Z"
}
]
},
"message": ""
}
/api/v1/color-page/images?category=trending&locale=en&page=1&pageSize=20&sort=popular
获取 Color Page 图片;图片标题、描述和分类信息按 locale 本地化。
Request Fields
| 字段 | 类型/位置 | 必填 | 说明 |
|---|---|---|---|
| category | query | 否 | 分类 slug。 |
| categoryId | query | 否 | 分类 UUID;与 category 二选一。 |
| locale | query | 否 | 返回文案语言。 |
| page/pageSize | query | 否 | 分页参数。 |
| sort | query | 否 | newest、popular、order。 |
Response Fields
| 字段 | 类型/位置 | 必填 | 说明 |
|---|---|---|---|
| data.locale | string | 是 | 本次请求使用的目标语言。 |
| data.items[].title | string | 是 | 本地化后的图片标题。 |
| data.items[].description | string | 是 | 本地化后的图片描述。 |
| data.items[].category.name | string | 是 | 本地化后的分类名称。 |
| data.items[].availableLocales | string[] | 是 | 该图片已配置语言列表。 |
Response Example
{
"success": true,
"data": {
"locale": "en",
"page": 1,
"pageSize": 20,
"total": 42,
"items": [
{
"id": "image-uuid",
"categoryId": "category-uuid",
"title": "Sunset Coloring Page",
"name": "Sunset Coloring Page",
"description": "A printable sunset coloring page for kids.",
"imageUrl": "https://storage.example.com/color-page/sunset.png",
"thumbnailUrl": "https://storage.example.com/color-page/sunset.png",
"downloadCount": 128,
"sortOrder": 10,
"locale": "en",
"availableLocales": [
"en",
"zh"
],
"createdAt": "2026-06-11T08:00:00.000Z",
"category": {
"id": "category-uuid",
"slug": "trending",
"name": "Trending",
"description": "Popular coloring page creations"
}
}
]
},
"message": ""
}
/api/v1/checkout/creem
创建 Creem checkout。
Request Example
{
"packSlug": "starter"
}
Response Example
{
"success": true,
"data": {
"orderId": "order-uuid",
"checkoutUrl": "https://checkout.creem.io/..."
},
"message": ""
}
/api/v1/webhooks/creem
Creem webhook 回调。
Response Example
{
"success": true,
"data": {
"received": true,
"eventId": "evt_xxx",
"eventType": "payment.completed"
},
"message": ""
}
Admin API - /api/admin
给后台 admin.imagedescriptiongenerator.online 调用。
/api/admin/login
管理员登录。
Request Example
{
"username": "admin",
"password": "admin888"
}
Response Example
{
"success": true,
"data": {
"username": "admin",
"role": "super_admin"
},
"message": ""
}
/api/admin/logout
管理员退出。
Response Example
{
"success": true,
"data": {
"loggedOut": true
},
"message": ""
}
/api/admin/dashboard/stats
首页核心指标和用户/收入趋势。
Response Example
{
"success": true,
"data": {
"totals": {
"users": 100,
"revenue": 6900
},
"today": {
"users": 3,
"revenue": 69
},
"charts": {
"revenue": [],
"users": []
}
},
"message": ""
}
/api/admin/users
用户列表。
Response Example
{
"success": true,
"data": {
"items": []
},
"message": ""
}
/api/admin/users/:id/events
用户网站事件曲线和访问路径。
Response Example
{
"success": true,
"data": {
"items": []
},
"message": ""
}
/api/admin/pricing-plans
价格方案列表。
Response Example
{
"success": true,
"data": {
"items": []
},
"message": ""
}
/api/admin/pricing-plans/:id/translations
价格方案多语言。
Response Example
{
"success": true,
"data": {
"items": []
},
"message": ""
}
/api/admin/color-page-categories
Color Page 分类列表。
Response Example
{
"success": true,
"data": {
"items": []
},
"message": ""
}
/api/admin/color-page-categories/:id/translations
Color Page 分类多语言。
Response Example
{
"success": true,
"data": {
"items": [
{
"locale": "en",
"name": "Trending",
"description": "Popular coloring page creations"
}
]
},
"message": ""
}
/api/admin/color-page-categories/:id/translations/:locale
保存 Color Page 分类某个语言。
Request Example
{
"name": "Trending",
"description": "Popular coloring page creations"
}
Response Example
{
"success": true,
"data": {
"locale": "en",
"name": "Trending"
},
"message": ""
}
/api/admin/color-page-categories/:id/translations/:locale
删除 Color Page 分类某个语言。
Response Example
{
"success": true,
"data": {
"deleted": true
},
"message": ""
}
/api/admin/color-page-images
Color Page 图片列表。
Response Example
{
"success": true,
"data": {
"items": []
},
"message": ""
}
/api/admin/color-page-images/:id/translations
Color Page 图片多语言。
Response Example
{
"success": true,
"data": {
"items": [
{
"locale": "en",
"title": "Sunset Coloring Page",
"description": "A printable sunset coloring page for kids."
}
]
},
"message": ""
}
/api/admin/color-page-images/:id/translations/:locale
保存 Color Page 图片某个语言。
Request Example
{
"title": "Sunset Coloring Page",
"description": "A printable sunset coloring page for kids."
}
Response Example
{
"success": true,
"data": {
"locale": "en",
"title": "Sunset Coloring Page"
},
"message": ""
}
/api/admin/color-page-images/:id/translations/:locale
删除 Color Page 图片某个语言。
Response Example
{
"success": true,
"data": {
"deleted": true
},
"message": ""
}