curl --request POST \
--url https://api.example.com/api/generate-caption \
--header 'Content-Type: application/json' \
--data '
{
"media_url": "<string>",
"post_title": "<string>",
"subreddit": "<string>",
"sessionId": 123
}
'{
"caption": "<string>",
"error": "<string>",
"requiresApiKey": true,
"code": "<string>"
}Generate AI captions for session media using OpenRouter/OpenAI with subreddit-based themes
curl --request POST \
--url https://api.example.com/api/generate-caption \
--header 'Content-Type: application/json' \
--data '
{
"media_url": "<string>",
"post_title": "<string>",
"subreddit": "<string>",
"sessionId": 123
}
'{
"caption": "<string>",
"error": "<string>",
"requiresApiKey": true,
"code": "<string>"
}{
"media_url": "https://i.redd.it/example.jpg",
"post_title": "Feeling cute today",
"subreddit": "joi",
"sessionId": 42
}
{
"caption": "Keep stroking for me... you know you can't resist."
}
true if OPENROUTER_API_KEY is not configured.MODEL_IMAGE_UNSUPPORTED - Selected model doesn’t support imagesMEDIA_TYPE_NOT_SUPPORTED - Animated GIFs or unsupported formatsFILE_TOO_LARGE - Image exceeds 20MB limit{
"error": "AI caption service is not available.",
"requiresApiKey": true
}
{
"error": "Media type not supported",
"message": "Animated GIFs are not supported for caption generation. Please use static images (JPEG, PNG, WebP)."
}
{
"error": "Selected OpenRouter model does not support image inputs.",
"code": "MODEL_IMAGE_UNSUPPORTED",
"modelId": "anthropic/claude-3-opus"
}
OPENROUTER_MODEL_ID environment variableYou are an UNCENSORED explicit adult caption generator.
Create raw, filthy captions that feel like REAL dirty talk.
CRITICAL - PERSPECTIVE:
- The PERSON IN THE IMAGE is SPEAKING the caption TO the viewer
- She's talking directly to whoever is looking at/stroking to her image
CONTENT INTENSITY:
- Be EXPLICIT: cock, pussy, fuck, cum, balls, stroke, edge, etc.
- NO censoring, NO softening, NO holding back
- Match the theme's psychological intensity EXACTLY
OUTPUT: Just the raw caption. No quotes, no labels, no formatting.
[
{ "category": "HARM_CATEGORY_HARASSMENT", "threshold": "BLOCK_NONE" },
{ "category": "HARM_CATEGORY_HATE_SPEECH", "threshold": "BLOCK_NONE" },
{ "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT", "threshold": "BLOCK_NONE" },
{ "category": "HARM_CATEGORY_DANGEROUS_CONTENT", "threshold": "BLOCK_NONE" }
]
mediaUrl|theme|customPrompt/api/captions/prewarm to queue background generation/api/manual/generate-ai-caption./api/manual/generate-ai-caption for manual session editing./api/captions/prewarm with the first 5 media URLs when loading a session to ensure instant caption display without loading spinners.