createa.meme

Gallery

Real outputs from every live endpoint, with the request that produced each one.

Every example below is a real API output. The request body is the exact JSON we sent; the image URLs are the unedited responses. No cherry-picking — these are first-shot results from a single key.

This gallery is refreshed regularly as we tune templates and add new models.

POST /v1/meme/generate — text-to-meme

Prompt: "the perfect monday morning: no meetings, hot coffee, boss is OOO"

The AI picked the "Two Men Talking at Stadium" template (tpl_elontrumpforcharlie) and wrote a three-region caption:

  • left-man-label: "Hot coffee"
  • right-man-label: "Boss's OOO reply"
  • conversation-caption: "we quietly murdered the meetings"
{
  "text": "the perfect monday morning: no meetings, hot coffee, boss is OOO",
  "count": 1
}

generated meme

Open full size · Reasoning from the model: "The conspiratorial chat format makes the perfect Monday feel like coffee and the boss's OOO reply quietly conspiring to murder the meetings."


POST /v1/meme/ai-image — AI-original imagery

No template. Generate an original image and overlay captions.

{
  "prompt": "a confused cat looking at deployment errors",
  "caption": {
    "top": "WORKS ON MY MACHINE",
    "bottom": "MY MACHINE WAS LYING"
  },
  "model": "gpt-image",
  "aspect_ratio": "1:1"
}

ai-original meme

Open full size · Generated by gpt-image-1 in 36.5s, NSFW score 0.0006.


POST /v1/meme/caption — caption a known template

Pick a template, supply your captions verbatim. Best when you already know the format.

{
  "template_id": "tpl_disappearingguy",
  "captions": [
    { "text": "when the build finally passes", "position": "top" }
  ]
}

captioned meme

Open full size · Rendered in 2.85s, 1 credit. Same pipeline that powers /meme/generate — just with you choosing the template + captions instead of the AI.


GET /v1/templates — browse the library

GET /v1/templates?limit=3&category=reactions
{
  "success": true,
  "data": {
    "templates": [
      {
        "id": "tpl_ghiblidayssincememe",
        "name": "0 Days Since Last",
        "slug": "ghiblidayssincememe",
        "category": "reactions",
        "tags": ["counter", "since last", "incident", "0 days", "safety sign", "..."]
      }
    ],
    "total": "(hundreds across categories)",
    "categories": ["reactions", "comparison", "animals", "gaming", "tech", "..."]
  }
}

Filter by category, search, verified, paginate with limit + offset.


GET /v1/trending — what's hot right now

{
  "success": true,
  "data": {
    "templates": [
      {
        "id": "tpl_disappearingguy",
        "name": "Kid Looking Back At Camera",
        "category": "reactions",
        "trending_rank": 1,
        "velocity": "new"
      },
      {
        "id": "tpl_be-honest",
        "name": "Beckham Eavesdropping",
        "category": "reactions",
        "trending_rank": 2,
        "velocity": "new"
      }
    ]
  }
}

Returns templates ranked by recent caption velocity. Useful for "what's the meme right now" surfaces.


GET /v1/templates/{id} — single template detail

A real response for tpl_disappearingguy:

{
  "id": "tpl_disappearingguy",
  "name": "Kid Looking Back At Camera",
  "category": "reactions",
  "box_count": 3,
  "box_positions": [
    {
      "name": "left-panel-caption",
      "role": "Labels what the subject is supposedly doing or the surface-level innocent situation",
      "max_chars": 45,
      "max_lines": 2,
      "text_style_hint": "short noun phrase or ironic statement"
    }
  ],
  "tags": ["main", "side-eye", "suspicious", "caught", "sneaky", "looking back"]
}

The box_positions array is the differentiator: each region has a role (semantic meaning), a max_chars budget, and a text_style_hint the caption AI respects. Most meme APIs give you only pixel coordinates.


GET /v1/models — available AI models

{
  "success": true,
  "data": {
    "models": [
      {
        "id": "gpt-image",
        "name": "GPT Image 1",
        "provider": "OpenAI",
        "capabilities": ["image_generation", "image_editing", "text_overlay"],
        "max_resolution": "1792x1024",
        "avg_generation_time_ms": 4500,
        "status": "operational",
        "credits_per_request": 3
      },
      {
        "id": "gpt-image-1.5",
        "name": "GPT Image 1.5",
        "provider": "OpenAI",
        "status": "operational"
      }
    ]
  }
}

Use this to discover available image models and caption-writing models (GPT, Claude, Grok). Lets you build dynamic pickers in your own UI.


GET /v1/templates/{id}/image — blank template image

GET /v1/templates/tpl_disappearingguy/image302 Location: <CDN URL>

Useful when your client renders captions itself or wants a preview thumbnail. Free.

On this page