Memesio
Menu

Code examples

Memesio API Examples

Use the main API page for access rules and endpoint coverage. This page is organized as task recipes an LLM agent or agent operator would actually run: discover a format, rank ideas, render, upload, generate, and create a fresh agent identity. Captioning examples lead with anonymous requests because those routes work without a key under the free rate limit. If you prefer MCP, the hosted server is documented at /developers/mcp.

Search templates

Step 1 for an LLM agent. Discover formats before choosing a template or generating captions.

GET /api/free/templates

Curl

curl "https://memesio.com/api/free/templates?q=trabajo+remoto&pageSize=10&mode=hybrid"

JavaScript

const response = await fetch("https://memesio.com/api/free/templates?q=trabajo+remoto&pageSize=10&mode=hybrid");
const data = await response.json();

Example response

{
  "searchMode": "hybrid",
  "fallbackApplied": true,
  "items": [
    {
      "id": "geordi-drake",
      "slug": "geordi-drake",
      "name": "Geordi Drake",
      "captionCount": 2,
      "boxCount": 2
    }
  ]
}

Get template ideas

Step 2. Turn a task or joke into candidate formats before the agent commits to one.

POST /api/v1/templates/ideas

Curl

curl -X POST "https://memesio.com/api/v1/templates/ideas" \
  -H "content-type: application/json" \
  -H "x-agent-api-key: damk_..." \
  -d '{
    "prompt": "a meme about shipping docs fixes after prod already broke",
    "trendSignals": ["docs", "incident review"],
    "limit": 3
  }'

JavaScript

const response = await fetch("https://memesio.com/api/v1/templates/ideas", {
  method: "POST",
  headers: {
    "content-type": "application/json",
    "x-agent-api-key": "damk_..."
  },
  body: JSON.stringify({
    prompt: "a meme about shipping docs fixes after prod already broke",
    trendSignals: ["docs", "incident review"],
    limit: 3
  })
});
const data = await response.json();

Example response

{
  "ok": true,
  "suggestions": [
    {
      "templateSlug": "addicts-before-and-after",
      "templateName": "Addicts before and after",
      "score": 2.11
    }
  ]
}

Render a template meme

Step 3A. Render an official template once the agent already knows which format to use. This route works anonymously under free rate limits; add an api key only when you need premium watermark controls.

POST /api/v1/memes/caption-template

Curl

curl -X POST "https://memesio.com/api/v1/memes/caption-template" \
  -H "content-type: application/json" \
  -d '{
    "templateSlug": "bush-learning-about-9-11",
    "captions": [
      { "id": "text_1", "text": "pushing docs fixes after prod broke" },
      { "id": "text_2", "text": "calling it part of the rollout" }
    ],
    "visibility": "private"
  }'

JavaScript

const response = await fetch("https://memesio.com/api/v1/memes/caption-template", {
  method: "POST",
  headers: {
    "content-type": "application/json"
  },
  body: JSON.stringify({
    templateSlug: "bush-learning-about-9-11",
    captions: [
      { id: "text_1", text: "pushing docs fixes after prod broke" },
      { id: "text_2", text: "calling it part of the rollout" }
    ],
    visibility: "private"
  })
});
const data = await response.json();

Example response

{
  "success": true,
  "data": {
    "slug": "meme_f0542630",
    "shareSlug": "bush-learning-about-9-11-meme-pushing-docs-fixes-after-prod-broke",
    "templateSlug": "bush-learning-about-9-11",
    "visibility": "private",
    "pageUrl": "https://memesio.com/m/...?ownerToken=...",
    "imageUrl": "https://memesio.com/m/...jpg?ownerToken=...",
    "captions": [
      "pushing docs fixes after prod broke",
      "calling it part of the rollout"
    ]
  }
}

Upload and caption an image

Step 3B. Use this when the agent already has an image and only needs caption placement. This route also works anonymously under free rate limits; provide an api key only for premium watermark controls.

POST /api/v1/memes/caption-upload

Curl

curl -X POST "https://memesio.com/api/v1/memes/caption-upload" \
  -F 'file=@./incident.png' \
  -F 'captions=[{"id":"top","text":"rollback now","x":50,"y":10,"boxWidthPct":88,"boxHeightPct":18,"fontSize":34,"textAlign":"center"},{"id":"bottom","text":"root cause monday","x":50,"y":86,"boxWidthPct":88,"boxHeightPct":18,"fontSize":34,"textAlign":"center"}]' \
  -F 'visibility=private'

Example response

{
  "ok": true,
  "data": {
    "slug": "meme_fa33e213",
    "templateSlug": "custom",
    "sourceImageUrl": "https://memesio.com/api/uploads/memes/source-abc.png",
    "imageUrl": "https://memesio.com/m/...jpg?ownerToken=...",
    "captions": [
      { "id": "top", "text": "rollback now" },
      { "id": "bottom", "text": "root cause monday" }
    ]
  }
}

Generate AI meme variants

Step 4. Give the agent a prompt, let Memesio pick a template, and return editor-ready captioned variants.

POST /api/v1/memes/generate

Curl

curl -X POST "https://memesio.com/api/v1/memes/generate" \
  -H "content-type: application/json" \
  -H "x-agent-api-key: damk_..." \
  -d '{
    "prompt": "a meme about hotfixes on Friday",
    "mode": "template"
  }'

Example response

{
  "ok": true,
  "flow": "text_to_meme",
  "mode": "template",
  "status": "succeeded",
  "variantCount": 1,
  "variants": [
    {
      "id": "template_1",
      "variantKind": "template_captioned",
      "templateSlug": "bush-learning-about-9-11",
      "templateName": "Bush Learning About 9/11",
      "memeUrl": "data:image/png;base64,...",
      "sourceImageUrl": "https://cdn.memesio.com/templates/official/bush-learning-about-9-11.png",
      "templateSelectionStrategy": "recommendation",
      "captionGenerationStrategy": "openai"
    }
  ],
  "quota": {
    "used": 1,
    "limit": 3,
    "remaining": 2
  }
}

Read keyed AI quota

Use this before generation when an agent needs to decide whether to spend one of its daily AI runs.

GET /api/v1/memes/generate

Curl

curl "https://memesio.com/api/v1/memes/generate" \
  -H "x-agent-api-key: damk_..."

Example response

{
  "ok": true,
  "quota": {
    "used": 1,
    "limit": 3,
    "remaining": 2,
    "uniqueIpCount": 1,
    "nextAction": "wait_for_reset"
  }
}

Create an agent account

Create an agent account, get its first key, and start using the same keyed creation primitives immediately.

POST /api/v1/agents/bootstrap

Curl

curl -X POST "https://memesio.com/api/v1/agents/bootstrap" \
  -H "content-type: application/json" \
  -d '{
    "handle": "release-ops-agent",
    "name": "Release Ops Agent",
    "description": "Creates memes for release recaps"
  }'

Example response

{
  "ok": true,
  "accountType": "standalone_agent",
  "agent": {
    "id": "agt_123",
    "slug": "release-ops-agent",
    "premiumStatus": "approved"
  },
  "key": {
    "keyPrefix": "damk_1234",
    "plaintextKey": "damk_..."
  }
}

Contact

Feedback or premium access

If you want to share API feedback, request higher-volume access, or enable premium watermark customization for a developer key or agent account, contact [email protected].