Official Memelord API
Super Official Top Secret Memelord AI Meme API for Hackers
Get 50 free API credits when you join Memelord.com
Sign UpAuthentication
All API requests require an API key in the Authorization header.
Get your API key: Visit Developer Settings to create and manage your API keys.
GET KEY
Credits
Each API call consumes credits from your account balance. Credit costs vary by endpoint:
| Endpoint | Credits per request |
|---|---|
| POST /api/v1/ai-meme | 1 credit per meme |
| POST /api/v1/ai-meme/edit | 1 credit per edit |
| POST /api/v1/ai-video-meme | 5 credits per video |
| POST /api/v1/ai-video-meme/edit | 5 credits per edit |
Note: The count parameter multiplies the credit cost. For example, generating 3 video memes in one request costs 15 credits.
01Quick Start
Generate a rendered meme and get back a download URL:
curl -X POST https://www.memelord.com/api/v1/ai-meme \
-H "Authorization: Bearer mlord_live_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"prompt": "developer fixing bugs at 3am"}'Endpoint:
POST /api/v1/ai-meme— Generates and renders memes, returns hosted download URLs with template metadata.POST /api/v1/ai-meme/edit— Edit the text of an existing meme using AI
02Endpoint
Generates memes with text overlays and returns signed download URLs with template metadata.
Credits: Each meme costs 1 credit. When using the count parameter, total cost = count x 1.
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
| prompt | string | Yes | Topic or idea for the meme |
| count | number | No | Number of memes (default: 1, max: 10) |
| category | string | No | "trending" or "classic" |
| include_nsfw | boolean | No | Include NSFW templates (default: true) |
Response (200)
{
"success": true,
"prompt": "when the code works on the first try",
"total_generated": 2,
"results": [
{
"success": true,
"url": "https://...signed-download-url...",
"expires_in": 86400,
"template_name": "Drake Hotline Bling",
"template_id": "abc-123"
}
]
}03Edit Endpoint
Edit the text of an existing meme. Provide the original template data and an instruction describing what to change.
Credits: Each edit costs 1 credit.
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
| instruction | string | Yes | What to change about the meme text |
| template_id | string | Yes | Template asset ID from the original generation response |
| template_data | object | Yes | Layout data with render_mode, width, height, and optional template/caption/expanded_height |
| target_index | number | No | Index of text box to target (>= 1) |
Response (200)
{
"success": true,
"url": "https://...signed-download-url...",
"expires_in": 86400,
"template_id": "abc-123",
"template_data": {
"render_mode": "template",
"width": 800,
"height": 600,
"template": [...],
"caption": null,
"expanded_height": null
},
"edit_summary": "Changed the top text to reference JavaScript"
}Example
curl -X POST https://www.memelord.com/api/v1/ai-meme/edit \
-H "Authorization: Bearer mlord_live_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"instruction": "make it about javascript instead",
"template_id": "abc-123",
"template_data": {
"render_mode": "template",
"width": 800,
"height": 600,
"template": [...]
}
}'Tip: Pass the template_id and template_data from the original /api/v1/ai-meme response directly into the edit request.
04Example Outputs






01Overview
Generate captioned video memes from your prompt. Videos are selected from the template library, captioned automatically, and rendered. Results are delivered via webhook.
Endpoint:
POST /api/v1/ai-video-meme— Generate video memes with AI captionsPOST /api/v1/ai-video-meme/edit— Edit the caption of an existing video memeGET /api/video/render/remote?jobId=...— Poll render job status
Credits: Each video meme costs 5 credits. When using the count parameter, total cost = count x 5 (e.g. 3 videos = 15 credits).
02Request
| Parameter | Type | Required | Description |
|---|---|---|---|
| prompt | string | Yes | Topic or idea for the video meme |
| count | number | No | Number of video memes (default: 1, max: 5) |
| webhookUrl | string | No | URL to receive results when renders complete |
| webhookSecret | string | No | HMAC-SHA256 secret for webhook verification |
| category | string | No | "trending" or "classic" |
| template_id | string | No | Specific video template asset ID |
Immediate Response (200)
{
"success": true,
"prompt": "when the code works on the first try",
"total_requested": 1,
"jobs": [
{
"job_id": "render-1740524400000-abc12",
"template_name": "Surprised Pikachu Video",
"template_id": "abc-123",
"caption": "When the code works on the first try"
}
],
"message": "Render jobs started. Results will be POSTed to webhookUrl."
}03Webhook Payload
Each render job POSTs its result to your webhookUrl when complete.
{
"jobId": "render-1740524400000-abc12",
"success": true,
"mp4Url": "https://...signed-url...",
"templateName": "Surprised Pikachu Video",
"templateId": "abc-123",
"caption": "When the code works on the first try",
"stats": { "renderTimeMs": 12340, "outputSizeMB": "2.34" }
}Note: MP4 URLs expire after 7 days. Poll job status via GET /api/video/render/remote?jobId=... as a fallback.
04Edit Endpoint
Edit the caption of an existing video meme. Provide the original caption and an instruction describing what to change.
| Parameter | Type | Required | Description |
|---|---|---|---|
| instruction | string | Yes | What to change about the caption |
| template_id | string | Yes | Video template asset ID |
| caption | string | Yes | Current caption text to edit |
| audio_overlay_url | string | No | Audio URL to overlay (mutes base video audio) |
| webhookUrl | string | No | URL to receive result when render completes |
Edit Response (200)
{
"success": true,
"job_id": "render-1740524400000-xyz99",
"template_name": "Surprised Pikachu Video",
"template_id": "abc-123",
"original_caption": "When the code works on the first try",
"edited_caption": "When the code works but you don't know why",
"edit_summary": "Updated caption text",
"message": "Render job started. Poll GET /api/video/render/remote?jobId=... for status."
}05Polling Job Status
Poll for render job status when not using webhooks. Returns different shapes based on job state:
Pending
{ "status": "pending", "jobId": "render-..." }Completed
{
"status": "completed",
"jobId": "render-...",
"mp4Url": "https://...signed-url...",
"storagePath": "user-id/exports/ai-video-meme-1740524400000.mp4"
}Failed
{ "status": "failed", "jobId": "render-...", "error": "Render timed out" }06Examples
Generate a video meme
curl -X POST https://www.memelord.com/api/v1/ai-video-meme \
-H "Authorization: Bearer mlord_live_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "when the code works on the first try",
"count": 2,
"webhookUrl": "https://your-server.com/webhook"
}'Generate with a specific template
curl -X POST https://www.memelord.com/api/v1/ai-video-meme \
-H "Authorization: Bearer mlord_live_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "debugging at 3am",
"template_id": "abc-123"
}'Edit an existing caption
curl -X POST https://www.memelord.com/api/v1/ai-video-meme/edit \
-H "Authorization: Bearer mlord_live_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"instruction": "make it about javascript instead",
"template_id": "abc-123",
"caption": "When the code works on the first try"
}'Generate with custom audio overlay
curl -X POST https://www.memelord.com/api/v1/ai-video-meme/edit \
-H "Authorization: Bearer mlord_live_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"instruction": "keep it the same",
"template_id": "abc-123",
"caption": "When the beat drops",
"audio_overlay_url": "https://example.com/song.mp3"
}'Poll for results (no webhook)
curl https://www.memelord.com/api/video/render/remote?jobId=render-1740524400000-abc12 \ -H "Authorization: Bearer mlord_live_YOUR_API_KEY"
07Example Outputs
Generated with prompt: "something funny about startups"