Mad Libs GeneratorMad Libs Generator API

OnlineCredit Usage:1 per callRefreshed 1 month ago
avg: 134ms|p50: 129ms|p75: 137ms|p90: 147ms|p99: 166ms

Overview

To use Mad Libs Generator, you need an API key. You can get one by creating a free account and visiting your dashboard.

GET Endpoint

URL
https://api.apiverve.com/v1/madlibs

Example

How to call the Mad Libs Generator API in different programming languages.

cURL Request
curl -X GET \
  "https://api.apiverve.com/v1/madlibs?category=funny&count=1" \
  -H "X-API-Key: your_api_key_here"
JavaScript (Fetch API)
const response = await fetch('https://api.apiverve.com/v1/madlibs?category=funny&count=1', {
  method: 'GET',
  headers: {
    'X-API-Key': 'your_api_key_here',
    'Content-Type': 'application/json'
  }
});

const data = await response.json();
console.log(data);
Python (Requests)
import requests

headers = {
    'X-API-Key': 'your_api_key_here',
    'Content-Type': 'application/json'
}

response = requests.get('https://api.apiverve.com/v1/madlibs?category=funny&count=1', headers=headers)

data = response.json()
print(data)
Go (net/http)
package main

import (
    "fmt"
    "io"
    "net/http"

)

func main() {
    req, _ := http.NewRequest("GET", "https://api.apiverve.com/v1/madlibs?category=funny&count=1", nil)

    req.Header.Set("X-API-Key", "your_api_key_here")
    req.Header.Set("Content-Type", "application/json")

    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    body, _ := io.ReadAll(resp.Body)
    fmt.Println(string(body))
}
Example Response
{
  "status": "ok",
  "error": null,
  "data": {
    "stories": [
      {
        "title": "Restaurant Disaster",
        "template": "I went to a {adjective} restaurant called The {adjective} {noun}. The waiter was a {adjective} {animal} who kept {verb_ing} on the tables. I ordered {number} {adjective} {plural_noun} with a side of {adjective} {noun}. When the bill came, it said I owed {number} {plural_noun}!",
        "blanks": [
          {
            "id": 1,
            "type": "adjective",
            "label": "Adjective"
          },
          {
            "id": 2,
            "type": "adjective",
            "label": "Adjective"
          },
          {
            "id": 3,
            "type": "noun",
            "label": "Noun"
          },
          {
            "id": 4,
            "type": "adjective",
            "label": "Adjective"
          },
          {
            "id": 5,
            "type": "animal",
            "label": "Animal"
          },
          {
            "id": 6,
            "type": "verb_ing",
            "label": "Verb ending in -ing"
          },
          {
            "id": 7,
            "type": "number",
            "label": "Number"
          },
          {
            "id": 8,
            "type": "adjective",
            "label": "Adjective"
          },
          {
            "id": 9,
            "type": "plural_noun",
            "label": "Plural Noun"
          },
          {
            "id": 10,
            "type": "adjective",
            "label": "Adjective"
          },
          {
            "id": 11,
            "type": "noun",
            "label": "Noun"
          },
          {
            "id": 12,
            "type": "number",
            "label": "Number"
          },
          {
            "id": 13,
            "type": "plural_noun",
            "label": "Plural Noun"
          }
        ],
        "blankCount": 13,
        "category": "funny"
      }
    ],
    "count": 1,
    "category": "funny",
    "html": "<html><head><title>Mad Libs</title><style>body {font-family: Arial, sans-serif; padding: 20px; max-width: 800px; margin: 0 auto;}h1 {text-align: center; color: #E91E63;}.story-card {background: #fff; border: 2px solid #E91E63; padding: 25px; margin: 25px 0; border-radius: 15px;}.title {font-size: 24px; font-weight: bold; color: #E91E63; margin-bottom: 20px;}.blanks-section {background: #FCE4EC; padding: 20px; border-radius: 10px; margin-bottom: 20px;}.blanks-section h3 {margin-top: 0;}.blank-item {margin: 10px 0; display: flex; align-items: center;}.blank-label {min-width: 50px; font-weight: bold;}.blank-type {color: #666; margin-left: 10px;}.blank-input {flex: 1; padding: 8px; border: 1px solid #E91E63; border-radius: 5px; margin-left: 10px;}.story-template {line-height: 2; font-size: 16px;}.blank-marker {background: #E91E63; color: white; padding: 2px 8px; border-radius: 3px; font-weight: bold;}</style></head><body><h1>Mad Libs</h1><div class='story-card'><div class='title'>Restaurant Disaster</div><div class='blanks-section'><h3>Fill in the blanks:</h3><div class='blank-item'><span class='blank-label'>1.</span><span class='blank-type'>Adjective</span><input type='text' class='blank-input' placeholder='Enter adjective'></div><div class='blank-item'><span class='blank-label'>2.</span><span class='blank-type'>Adjective</span><input type='text' class='blank-input' placeholder='Enter adjective'></div><div class='blank-item'><span class='blank-label'>3.</span><span class='blank-type'>Noun</span><input type='text' class='blank-input' placeholder='Enter noun'></div><div class='blank-item'><span class='blank-label'>4.</span><span class='blank-type'>Adjective</span><input type='text' class='blank-input' placeholder='Enter adjective'></div><div class='blank-item'><span class='blank-label'>5.</span><span class='blank-type'>Animal</span><input type='text' class='blank-input' placeholder='Enter animal'></div><div class='blank-item'><span class='blank-label'>6.</span><span class='blank-type'>Verb ending in -ing</span><input type='text' class='blank-input' placeholder='Enter verb ending in -ing'></div><div class='blank-item'><span class='blank-label'>7.</span><span class='blank-type'>Number</span><input type='text' class='blank-input' placeholder='Enter number'></div><div class='blank-item'><span class='blank-label'>8.</span><span class='blank-type'>Adjective</span><input type='text' class='blank-input' placeholder='Enter adjective'></div><div class='blank-item'><span class='blank-label'>9.</span><span class='blank-type'>Plural Noun</span><input type='text' class='blank-input' placeholder='Enter plural noun'></div><div class='blank-item'><span class='blank-label'>10.</span><span class='blank-type'>Adjective</span><input type='text' class='blank-input' placeholder='Enter adjective'></div><div class='blank-item'><span class='blank-label'>11.</span><span class='blank-type'>Noun</span><input type='text' class='blank-input' placeholder='Enter noun'></div><div class='blank-item'><span class='blank-label'>12.</span><span class='blank-type'>Number</span><input type='text' class='blank-input' placeholder='Enter number'></div><div class='blank-item'><span class='blank-label'>13.</span><span class='blank-type'>Plural Noun</span><input type='text' class='blank-input' placeholder='Enter plural noun'></div></div><div class='story-template'>I went to a <span class='blank-marker'>1</span> restaurant called The <span class='blank-marker'>2</span> <span class='blank-marker'>3</span>. The waiter was a <span class='blank-marker'>4</span> <span class='blank-marker'>5</span> who kept <span class='blank-marker'>6</span> on the tables. I ordered <span class='blank-marker'>7</span> <span class='blank-marker'>8</span> <span class='blank-marker'>9</span> with a side of <span class='blank-marker'>10</span> <span class='blank-marker'>11</span>. When the bill came, it said I owed <span class='blank-marker'>12</span> <span class='blank-marker'>13</span>!</div></div></body></html>",
    "image": {
      "imageName": "25d0dd78-3ad1-4f14-a30f-f8bdd8ebcc33_madlibs.png",
      "format": ".png",
      "downloadURL": "https://storage.googleapis.com/apiverve/APIData/madlibs/25d0dd78-3ad1-4f14-a30f-f8bdd8ebcc33_madlibs.png?GoogleAccessId=635500398038-compute%40developer.gserviceaccount.com&Expires=1766010349&Signature=e4owJidlQu2GZKe1GSuClCNSpOX1UQkxdweeS08IVOxkNscZGNr33BdYhNSG%2BuVIZ2XdEeAc3o2%2BY2hxP01APjgqMgCe4QvHRBgbCLPUiueHaczDJ1m1ZBI41aRaYjM8kdB7M0iYLNhdgqogXTYs9Zc%2FaRj9a6txpLz7fb2YexgG0fXhkcZuGeCb1haQlMTHL1YZbh9zJIKgHSqMhKK3jqhf0stuIDXIWkWdiK6fbP1B2aZkomqwpbx3iQKwbhca8rwFMWjUMRN5fspY%2FRtNbS7kIWaznc07VaBloITlQktm%2FMMojDc6QSanGeegRKealslcO53diZRsdLTZvB3wAQ%3D%3D",
      "expires": 1766010349930
    }
  }
}

Authentication

The Mad Libs Generator API requires authentication via API key. Include your API key in the request header:

Required Header
X-API-Key: your_api_key_here

Learn more about authentication →

Interactive API Playground

Test the Mad Libs Generator API directly in your browser with live requests and responses.

Parameters

The following parameters are available for the Mad Libs Generator API:

Some Mad Libs Generator parameters marked with Premium are available exclusively on paid plans.View pricing

Generate Mad Libs

ParameterTypeRequiredDescriptionDefaultExample
categoryPremiumstringoptional
Story category
Supported values: randomadventurefunnyfairytalescifi
randomfunny
countPremiumintegeroptional
Number of stories
Range: 1 - 5
11

Response

The Mad Libs Generator API returns responses in JSON, XML, YAML, and CSV formats. The JSON response is shown in the Example section above; alternative formats below.

Other Response Formats

XML Response
200 OK
<?xml version="1.0" encoding="UTF-8"?>
<response>
  <status>ok</status>
  <error xsi:nil="true" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
  <data>
    <stories>
      <storie>
        <title>Restaurant Disaster</title>
        <template>I went to a {adjective} restaurant called The {adjective} {noun}. The waiter was a {adjective} {animal} who kept {verb_ing} on the tables. I ordered {number} {adjective} {plural_noun} with a side of {adjective} {noun}. When the bill came, it said I owed {number} {plural_noun}!</template>
        <blanks>
          <blank>
            <id>1</id>
            <type>adjective</type>
            <label>Adjective</label>
          </blank>
          <blank>
            <id>2</id>
            <type>adjective</type>
            <label>Adjective</label>
          </blank>
          <blank>
            <id>3</id>
            <type>noun</type>
            <label>Noun</label>
          </blank>
          <blank>
            <id>4</id>
            <type>adjective</type>
            <label>Adjective</label>
          </blank>
          <blank>
            <id>5</id>
            <type>animal</type>
            <label>Animal</label>
          </blank>
          <blank>
            <id>6</id>
            <type>verb_ing</type>
            <label>Verb ending in -ing</label>
          </blank>
          <blank>
            <id>7</id>
            <type>number</type>
            <label>Number</label>
          </blank>
          <blank>
            <id>8</id>
            <type>adjective</type>
            <label>Adjective</label>
          </blank>
          <blank>
            <id>9</id>
            <type>plural_noun</type>
            <label>Plural Noun</label>
          </blank>
          <blank>
            <id>10</id>
            <type>adjective</type>
            <label>Adjective</label>
          </blank>
          <blank>
            <id>11</id>
            <type>noun</type>
            <label>Noun</label>
          </blank>
          <blank>
            <id>12</id>
            <type>number</type>
            <label>Number</label>
          </blank>
          <blank>
            <id>13</id>
            <type>plural_noun</type>
            <label>Plural Noun</label>
          </blank>
        </blanks>
        <blankCount>13</blankCount>
        <category>funny</category>
      </storie>
    </stories>
    <count>1</count>
    <category>funny</category>
    <html>&lt;html&gt;&lt;head&gt;&lt;title&gt;Mad Libs&lt;/title&gt;&lt;style&gt;body {font-family: Arial, sans-serif; padding: 20px; max-width: 800px; margin: 0 auto;}h1 {text-align: center; color: #E91E63;}.story-card {background: #fff; border: 2px solid #E91E63; padding: 25px; margin: 25px 0; border-radius: 15px;}.title {font-size: 24px; font-weight: bold; color: #E91E63; margin-bottom: 20px;}.blanks-section {background: #FCE4EC; padding: 20px; border-radius: 10px; margin-bottom: 20px;}.blanks-section h3 {margin-top: 0;}.blank-item {margin: 10px 0; display: flex; align-items: center;}.blank-label {min-width: 50px; font-weight: bold;}.blank-type {color: #666; margin-left: 10px;}.blank-input {flex: 1; padding: 8px; border: 1px solid #E91E63; border-radius: 5px; margin-left: 10px;}.story-template {line-height: 2; font-size: 16px;}.blank-marker {background: #E91E63; color: white; padding: 2px 8px; border-radius: 3px; font-weight: bold;}&lt;/style&gt;&lt;/head&gt;&lt;body&gt;&lt;h1&gt;Mad Libs&lt;/h1&gt;&lt;div class=&apos;story-card&apos;&gt;&lt;div class=&apos;title&apos;&gt;Restaurant Disaster&lt;/div&gt;&lt;div class=&apos;blanks-section&apos;&gt;&lt;h3&gt;Fill in the blanks:&lt;/h3&gt;&lt;div class=&apos;blank-item&apos;&gt;&lt;span class=&apos;blank-label&apos;&gt;1.&lt;/span&gt;&lt;span class=&apos;blank-type&apos;&gt;Adjective&lt;/span&gt;&lt;input type=&apos;text&apos; class=&apos;blank-input&apos; placeholder=&apos;Enter adjective&apos;&gt;&lt;/div&gt;&lt;div class=&apos;blank-item&apos;&gt;&lt;span class=&apos;blank-label&apos;&gt;2.&lt;/span&gt;&lt;span class=&apos;blank-type&apos;&gt;Adjective&lt;/span&gt;&lt;input type=&apos;text&apos; class=&apos;blank-input&apos; placeholder=&apos;Enter adjective&apos;&gt;&lt;/div&gt;&lt;div class=&apos;blank-item&apos;&gt;&lt;span class=&apos;blank-label&apos;&gt;3.&lt;/span&gt;&lt;span class=&apos;blank-type&apos;&gt;Noun&lt;/span&gt;&lt;input type=&apos;text&apos; class=&apos;blank-input&apos; placeholder=&apos;Enter noun&apos;&gt;&lt;/div&gt;&lt;div class=&apos;blank-item&apos;&gt;&lt;span class=&apos;blank-label&apos;&gt;4.&lt;/span&gt;&lt;span class=&apos;blank-type&apos;&gt;Adjective&lt;/span&gt;&lt;input type=&apos;text&apos; class=&apos;blank-input&apos; placeholder=&apos;Enter adjective&apos;&gt;&lt;/div&gt;&lt;div class=&apos;blank-item&apos;&gt;&lt;span class=&apos;blank-label&apos;&gt;5.&lt;/span&gt;&lt;span class=&apos;blank-type&apos;&gt;Animal&lt;/span&gt;&lt;input type=&apos;text&apos; class=&apos;blank-input&apos; placeholder=&apos;Enter animal&apos;&gt;&lt;/div&gt;&lt;div class=&apos;blank-item&apos;&gt;&lt;span class=&apos;blank-label&apos;&gt;6.&lt;/span&gt;&lt;span class=&apos;blank-type&apos;&gt;Verb ending in -ing&lt;/span&gt;&lt;input type=&apos;text&apos; class=&apos;blank-input&apos; placeholder=&apos;Enter verb ending in -ing&apos;&gt;&lt;/div&gt;&lt;div class=&apos;blank-item&apos;&gt;&lt;span class=&apos;blank-label&apos;&gt;7.&lt;/span&gt;&lt;span class=&apos;blank-type&apos;&gt;Number&lt;/span&gt;&lt;input type=&apos;text&apos; class=&apos;blank-input&apos; placeholder=&apos;Enter number&apos;&gt;&lt;/div&gt;&lt;div class=&apos;blank-item&apos;&gt;&lt;span class=&apos;blank-label&apos;&gt;8.&lt;/span&gt;&lt;span class=&apos;blank-type&apos;&gt;Adjective&lt;/span&gt;&lt;input type=&apos;text&apos; class=&apos;blank-input&apos; placeholder=&apos;Enter adjective&apos;&gt;&lt;/div&gt;&lt;div class=&apos;blank-item&apos;&gt;&lt;span class=&apos;blank-label&apos;&gt;9.&lt;/span&gt;&lt;span class=&apos;blank-type&apos;&gt;Plural Noun&lt;/span&gt;&lt;input type=&apos;text&apos; class=&apos;blank-input&apos; placeholder=&apos;Enter plural noun&apos;&gt;&lt;/div&gt;&lt;div class=&apos;blank-item&apos;&gt;&lt;span class=&apos;blank-label&apos;&gt;10.&lt;/span&gt;&lt;span class=&apos;blank-type&apos;&gt;Adjective&lt;/span&gt;&lt;input type=&apos;text&apos; class=&apos;blank-input&apos; placeholder=&apos;Enter adjective&apos;&gt;&lt;/div&gt;&lt;div class=&apos;blank-item&apos;&gt;&lt;span class=&apos;blank-label&apos;&gt;11.&lt;/span&gt;&lt;span class=&apos;blank-type&apos;&gt;Noun&lt;/span&gt;&lt;input type=&apos;text&apos; class=&apos;blank-input&apos; placeholder=&apos;Enter noun&apos;&gt;&lt;/div&gt;&lt;div class=&apos;blank-item&apos;&gt;&lt;span class=&apos;blank-label&apos;&gt;12.&lt;/span&gt;&lt;span class=&apos;blank-type&apos;&gt;Number&lt;/span&gt;&lt;input type=&apos;text&apos; class=&apos;blank-input&apos; placeholder=&apos;Enter number&apos;&gt;&lt;/div&gt;&lt;div class=&apos;blank-item&apos;&gt;&lt;span class=&apos;blank-label&apos;&gt;13.&lt;/span&gt;&lt;span class=&apos;blank-type&apos;&gt;Plural Noun&lt;/span&gt;&lt;input type=&apos;text&apos; class=&apos;blank-input&apos; placeholder=&apos;Enter plural noun&apos;&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&apos;story-template&apos;&gt;I went to a &lt;span class=&apos;blank-marker&apos;&gt;1&lt;/span&gt; restaurant called The &lt;span class=&apos;blank-marker&apos;&gt;2&lt;/span&gt; &lt;span class=&apos;blank-marker&apos;&gt;3&lt;/span&gt;. The waiter was a &lt;span class=&apos;blank-marker&apos;&gt;4&lt;/span&gt; &lt;span class=&apos;blank-marker&apos;&gt;5&lt;/span&gt; who kept &lt;span class=&apos;blank-marker&apos;&gt;6&lt;/span&gt; on the tables. I ordered &lt;span class=&apos;blank-marker&apos;&gt;7&lt;/span&gt; &lt;span class=&apos;blank-marker&apos;&gt;8&lt;/span&gt; &lt;span class=&apos;blank-marker&apos;&gt;9&lt;/span&gt; with a side of &lt;span class=&apos;blank-marker&apos;&gt;10&lt;/span&gt; &lt;span class=&apos;blank-marker&apos;&gt;11&lt;/span&gt;. When the bill came, it said I owed &lt;span class=&apos;blank-marker&apos;&gt;12&lt;/span&gt; &lt;span class=&apos;blank-marker&apos;&gt;13&lt;/span&gt;!&lt;/div&gt;&lt;/div&gt;&lt;/body&gt;&lt;/html&gt;</html>
    <image>
      <imageName>25d0dd78-3ad1-4f14-a30f-f8bdd8ebcc33_madlibs.png</imageName>
      <format>.png</format>
      <downloadURL>https://storage.googleapis.com/apiverve/APIData/madlibs/25d0dd78-3ad1-4f14-a30f-f8bdd8ebcc33_madlibs.png?GoogleAccessId=635500398038-compute%40developer.gserviceaccount.com&amp;Expires=1766010349&amp;Signature=e4owJidlQu2GZKe1GSuClCNSpOX1UQkxdweeS08IVOxkNscZGNr33BdYhNSG%2BuVIZ2XdEeAc3o2%2BY2hxP01APjgqMgCe4QvHRBgbCLPUiueHaczDJ1m1ZBI41aRaYjM8kdB7M0iYLNhdgqogXTYs9Zc%2FaRj9a6txpLz7fb2YexgG0fXhkcZuGeCb1haQlMTHL1YZbh9zJIKgHSqMhKK3jqhf0stuIDXIWkWdiK6fbP1B2aZkomqwpbx3iQKwbhca8rwFMWjUMRN5fspY%2FRtNbS7kIWaznc07VaBloITlQktm%2FMMojDc6QSanGeegRKealslcO53diZRsdLTZvB3wAQ%3D%3D</downloadURL>
      <expires>1766010349930</expires>
    </image>
  </data>
</response>
YAML Response
200 OK
status: ok
error: null
data:
  stories:
    - title: Restaurant Disaster
      template: >-
        I went to a {adjective} restaurant called The {adjective} {noun}. The
        waiter was a {adjective} {animal} who kept {verb_ing} on the tables. I
        ordered {number} {adjective} {plural_noun} with a side of {adjective}
        {noun}. When the bill came, it said I owed {number} {plural_noun}!
      blanks:
        - id: 1
          type: adjective
          label: Adjective
        - id: 2
          type: adjective
          label: Adjective
        - id: 3
          type: noun
          label: Noun
        - id: 4
          type: adjective
          label: Adjective
        - id: 5
          type: animal
          label: Animal
        - id: 6
          type: verb_ing
          label: Verb ending in -ing
        - id: 7
          type: number
          label: Number
        - id: 8
          type: adjective
          label: Adjective
        - id: 9
          type: plural_noun
          label: Plural Noun
        - id: 10
          type: adjective
          label: Adjective
        - id: 11
          type: noun
          label: Noun
        - id: 12
          type: number
          label: Number
        - id: 13
          type: plural_noun
          label: Plural Noun
      blankCount: 13
      category: funny
  count: 1
  category: funny
  html: >-
    <html><head><title>Mad Libs</title><style>body {font-family: Arial,
    sans-serif; padding: 20px; max-width: 800px; margin: 0 auto;}h1 {text-align:
    center; color: #E91E63;}.story-card {background: #fff; border: 2px solid
    #E91E63; padding: 25px; margin: 25px 0; border-radius: 15px;}.title
    {font-size: 24px; font-weight: bold; color: #E91E63; margin-bottom:
    20px;}.blanks-section {background: #FCE4EC; padding: 20px; border-radius:
    10px; margin-bottom: 20px;}.blanks-section h3 {margin-top: 0;}.blank-item
    {margin: 10px 0; display: flex; align-items: center;}.blank-label
    {min-width: 50px; font-weight: bold;}.blank-type {color: #666; margin-left:
    10px;}.blank-input {flex: 1; padding: 8px; border: 1px solid #E91E63;
    border-radius: 5px; margin-left: 10px;}.story-template {line-height: 2;
    font-size: 16px;}.blank-marker {background: #E91E63; color: white; padding:
    2px 8px; border-radius: 3px; font-weight: bold;}</style></head><body><h1>Mad
    Libs</h1><div class='story-card'><div class='title'>Restaurant
    Disaster</div><div class='blanks-section'><h3>Fill in the blanks:</h3><div
    class='blank-item'><span class='blank-label'>1.</span><span
    class='blank-type'>Adjective</span><input type='text' class='blank-input'
    placeholder='Enter adjective'></div><div class='blank-item'><span
    class='blank-label'>2.</span><span class='blank-type'>Adjective</span><input
    type='text' class='blank-input' placeholder='Enter adjective'></div><div
    class='blank-item'><span class='blank-label'>3.</span><span
    class='blank-type'>Noun</span><input type='text' class='blank-input'
    placeholder='Enter noun'></div><div class='blank-item'><span
    class='blank-label'>4.</span><span class='blank-type'>Adjective</span><input
    type='text' class='blank-input' placeholder='Enter adjective'></div><div
    class='blank-item'><span class='blank-label'>5.</span><span
    class='blank-type'>Animal</span><input type='text' class='blank-input'
    placeholder='Enter animal'></div><div class='blank-item'><span
    class='blank-label'>6.</span><span class='blank-type'>Verb ending in
    -ing</span><input type='text' class='blank-input' placeholder='Enter verb
    ending in -ing'></div><div class='blank-item'><span
    class='blank-label'>7.</span><span class='blank-type'>Number</span><input
    type='text' class='blank-input' placeholder='Enter number'></div><div
    class='blank-item'><span class='blank-label'>8.</span><span
    class='blank-type'>Adjective</span><input type='text' class='blank-input'
    placeholder='Enter adjective'></div><div class='blank-item'><span
    class='blank-label'>9.</span><span class='blank-type'>Plural
    Noun</span><input type='text' class='blank-input' placeholder='Enter plural
    noun'></div><div class='blank-item'><span
    class='blank-label'>10.</span><span
    class='blank-type'>Adjective</span><input type='text' class='blank-input'
    placeholder='Enter adjective'></div><div class='blank-item'><span
    class='blank-label'>11.</span><span class='blank-type'>Noun</span><input
    type='text' class='blank-input' placeholder='Enter noun'></div><div
    class='blank-item'><span class='blank-label'>12.</span><span
    class='blank-type'>Number</span><input type='text' class='blank-input'
    placeholder='Enter number'></div><div class='blank-item'><span
    class='blank-label'>13.</span><span class='blank-type'>Plural
    Noun</span><input type='text' class='blank-input' placeholder='Enter plural
    noun'></div></div><div class='story-template'>I went to a <span
    class='blank-marker'>1</span> restaurant called The <span
    class='blank-marker'>2</span> <span class='blank-marker'>3</span>. The
    waiter was a <span class='blank-marker'>4</span> <span
    class='blank-marker'>5</span> who kept <span class='blank-marker'>6</span>
    on the tables. I ordered <span class='blank-marker'>7</span> <span
    class='blank-marker'>8</span> <span class='blank-marker'>9</span> with a
    side of <span class='blank-marker'>10</span> <span
    class='blank-marker'>11</span>. When the bill came, it said I owed <span
    class='blank-marker'>12</span> <span
    class='blank-marker'>13</span>!</div></div></body></html>
  image:
    imageName: 25d0dd78-3ad1-4f14-a30f-f8bdd8ebcc33_madlibs.png
    format: .png
    downloadURL: >-
      https://storage.googleapis.com/apiverve/APIData/madlibs/25d0dd78-3ad1-4f14-a30f-f8bdd8ebcc33_madlibs.png?GoogleAccessId=635500398038-compute%40developer.gserviceaccount.com&Expires=1766010349&Signature=e4owJidlQu2GZKe1GSuClCNSpOX1UQkxdweeS08IVOxkNscZGNr33BdYhNSG%2BuVIZ2XdEeAc3o2%2BY2hxP01APjgqMgCe4QvHRBgbCLPUiueHaczDJ1m1ZBI41aRaYjM8kdB7M0iYLNhdgqogXTYs9Zc%2FaRj9a6txpLz7fb2YexgG0fXhkcZuGeCb1haQlMTHL1YZbh9zJIKgHSqMhKK3jqhf0stuIDXIWkWdiK6fbP1B2aZkomqwpbx3iQKwbhca8rwFMWjUMRN5fspY%2FRtNbS7kIWaznc07VaBloITlQktm%2FMMojDc6QSanGeegRKealslcO53diZRsdLTZvB3wAQ%3D%3D
    expires: 1766010349930
CSV Response
200 OK
keyvalue
stories[{title:Restaurant Disaster,template:I went to a {adjective} restaurant called The {adjective} {noun}. The waiter was a {adjective} {animal} who kept {verb_ing} on the tables. I ordered {number} {adjective} {plural_noun} with a side of {adjective} {noun}. When the bill came, it said I owed {number} {plural_noun}!,blanks:[{id:1,type:adjective,label:Adjective},{id:2,type:adjective,label:Adjective},{id:3,type:noun,label:Noun},{id:4,type:adjective,label:Adjective},{id:5,type:animal,label:Animal},{id:6,type:verb_ing,label:Verb ending in -ing},{id:7,type:number,label:Number},{id:8,type:adjective,label:Adjective},{id:9,type:plural_noun,label:Plural Noun},{id:10,type:adjective,label:Adjective},{id:11,type:noun,label:Noun},{id:12,type:number,label:Number},{id:13,type:plural_noun,label:Plural Noun}],blankCount:13,category:funny}]
count1
categoryfunny
html<html><head><title>Mad Libs</title><style>body {font-family: Arial, sans-serif; padding: 20px; max-width: 800px; margin: 0 auto;}h1 {text-align: center; color: #E91E63;}.story-card {background: #fff; border: 2px solid #E91E63; padding: 25px; margin: 25px 0; border-radius: 15px;}.title {font-size: 24px; font-weight: bold; color: #E91E63; margin-bottom: 20px;}.blanks-section {background: #FCE4EC; padding: 20px; border-radius: 10px; margin-bottom: 20px;}.blanks-section h3 {margin-top: 0;}.blank-item {margin: 10px 0; display: flex; align-items: center;}.blank-label {min-width: 50px; font-weight: bold;}.blank-type {color: #666; margin-left: 10px;}.blank-input {flex: 1; padding: 8px; border: 1px solid #E91E63; border-radius: 5px; margin-left: 10px;}.story-template {line-height: 2; font-size: 16px;}.blank-marker {background: #E91E63; color: white; padding: 2px 8px; border-radius: 3px; font-weight: bold;}</style></head><body><h1>Mad Libs</h1><div class='story-card'><div class='title'>Restaurant Disaster</div><div class='blanks-section'><h3>Fill in the blanks:</h3><div class='blank-item'><span class='blank-label'>1.</span><span class='blank-type'>Adjective</span><input type='text' class='blank-input' placeholder='Enter adjective'></div><div class='blank-item'><span class='blank-label'>2.</span><span class='blank-type'>Adjective</span><input type='text' class='blank-input' placeholder='Enter adjective'></div><div class='blank-item'><span class='blank-label'>3.</span><span class='blank-type'>Noun</span><input type='text' class='blank-input' placeholder='Enter noun'></div><div class='blank-item'><span class='blank-label'>4.</span><span class='blank-type'>Adjective</span><input type='text' class='blank-input' placeholder='Enter adjective'></div><div class='blank-item'><span class='blank-label'>5.</span><span class='blank-type'>Animal</span><input type='text' class='blank-input' placeholder='Enter animal'></div><div class='blank-item'><span class='blank-label'>6.</span><span class='blank-type'>Verb ending in -ing</span><input type='text' class='blank-input' placeholder='Enter verb ending in -ing'></div><div class='blank-item'><span class='blank-label'>7.</span><span class='blank-type'>Number</span><input type='text' class='blank-input' placeholder='Enter number'></div><div class='blank-item'><span class='blank-label'>8.</span><span class='blank-type'>Adjective</span><input type='text' class='blank-input' placeholder='Enter adjective'></div><div class='blank-item'><span class='blank-label'>9.</span><span class='blank-type'>Plural Noun</span><input type='text' class='blank-input' placeholder='Enter plural noun'></div><div class='blank-item'><span class='blank-label'>10.</span><span class='blank-type'>Adjective</span><input type='text' class='blank-input' placeholder='Enter adjective'></div><div class='blank-item'><span class='blank-label'>11.</span><span class='blank-type'>Noun</span><input type='text' class='blank-input' placeholder='Enter noun'></div><div class='blank-item'><span class='blank-label'>12.</span><span class='blank-type'>Number</span><input type='text' class='blank-input' placeholder='Enter number'></div><div class='blank-item'><span class='blank-label'>13.</span><span class='blank-type'>Plural Noun</span><input type='text' class='blank-input' placeholder='Enter plural noun'></div></div><div class='story-template'>I went to a <span class='blank-marker'>1</span> restaurant called The <span class='blank-marker'>2</span> <span class='blank-marker'>3</span>. The waiter was a <span class='blank-marker'>4</span> <span class='blank-marker'>5</span> who kept <span class='blank-marker'>6</span> on the tables. I ordered <span class='blank-marker'>7</span> <span class='blank-marker'>8</span> <span class='blank-marker'>9</span> with a side of <span class='blank-marker'>10</span> <span class='blank-marker'>11</span>. When the bill came, it said I owed <span class='blank-marker'>12</span> <span class='blank-marker'>13</span>!</div></div></body></html>
image{imageName:25d0dd78-3ad1-4f14-a30f-f8bdd8ebcc33_madlibs.png,format:.png,downloadURL:https://storage.googleapis.com/apiverve/APIData/madlibs/25d0dd78-3ad1-4f14-a30f-f8bdd8ebcc33_madlibs.png?GoogleAccessId=635500398038-compute%40developer.gserviceaccount.com&Expires=1766010349&Signature=e4owJidlQu2GZKe1GSuClCNSpOX1UQkxdweeS08IVOxkNscZGNr33BdYhNSG%2BuVIZ2XdEeAc3o2%2BY2hxP01APjgqMgCe4QvHRBgbCLPUiueHaczDJ1m1ZBI41aRaYjM8kdB7M0iYLNhdgqogXTYs9Zc%2FaRj9a6txpLz7fb2YexgG0fXhkcZuGeCb1haQlMTHL1YZbh9zJIKgHSqMhKK3jqhf0stuIDXIWkWdiK6fbP1B2aZkomqwpbx3iQKwbhca8rwFMWjUMRN5fspY%2FRtNbS7kIWaznc07VaBloITlQktm%2FMMojDc6QSanGeegRKealslcO53diZRsdLTZvB3wAQ%3D%3D,expires:1766010349930}

Response Structure

All API responses follow a consistent structure with the following fields:

FieldTypeDescriptionExample
statusstringIndicates whether the request was successful ("ok") or failed ("error")ok
errorstring | nullContains error message if status is "error", otherwise nullnull
dataobject | nullContains the API response data if successful, otherwise null{...}

Learn more about response formats →

Response Data Fields

When the request is successful, the data object contains the following fields:

FieldTypeSample ValueDescription
[ ] Array items:array[1]Array of objects
-
â”” titlestring"Restaurant Disaster"
-
â”” templatestring"I went to a {adjective} restaurant called The {adjective} {noun}. The waiter was a {adjective} {animal} who kept {verb_ing} on the tables. I ordered {number} {adjective} {plural_noun} with a side of {adjective} {noun}. When the bill came, it said I owed {number} {plural_noun}!"
-
[ ] Array items:array[13]Array of objects
-
â”” idnumber1
-
â”” typestring"adjective"
-
â”” labelstring"Adjective"
-
â”” blankCountnumber13
-
â”” categorystring"funny"
-
countnumber1
-
categorystring"funny"
-
htmlstring"<html><head><title>Mad Libs</title><style>body {font-family: Arial, sans-serif; padding: 20px; max-width: 800px; margin: 0 auto;}h1 {text-align: center; color: #E91E63;}.story-card {background: #fff; border: 2px solid #E91E63; padding: 25px; margin: 25px 0; border-radius: 15px;}.title {font-size: 24px; font-weight: bold; color: #E91E63; margin-bottom: 20px;}.blanks-section {background: #FCE4EC; padding: 20px; border-radius: 10px; margin-bottom: 20px;}.blanks-section h3 {margin-top: 0;}.blank-item {margin: 10px 0; display: flex; align-items: center;}.blank-label {min-width: 50px; font-weight: bold;}.blank-type {color: #666; margin-left: 10px;}.blank-input {flex: 1; padding: 8px; border: 1px solid #E91E63; border-radius: 5px; margin-left: 10px;}.story-template {line-height: 2; font-size: 16px;}.blank-marker {background: #E91E63; color: white; padding: 2px 8px; border-radius: 3px; font-weight: bold;}</style></head><body><h1>Mad Libs</h1><div class='story-card'><div class='title'>Restaurant Disaster</div><div class='blanks-section'><h3>Fill in the blanks:</h3><div class='blank-item'><span class='blank-label'>1.</span><span class='blank-type'>Adjective</span><input type='text' class='blank-input' placeholder='Enter adjective'></div><div class='blank-item'><span class='blank-label'>2.</span><span class='blank-type'>Adjective</span><input type='text' class='blank-input' placeholder='Enter adjective'></div><div class='blank-item'><span class='blank-label'>3.</span><span class='blank-type'>Noun</span><input type='text' class='blank-input' placeholder='Enter noun'></div><div class='blank-item'><span class='blank-label'>4.</span><span class='blank-type'>Adjective</span><input type='text' class='blank-input' placeholder='Enter adjective'></div><div class='blank-item'><span class='blank-label'>5.</span><span class='blank-type'>Animal</span><input type='text' class='blank-input' placeholder='Enter animal'></div><div class='blank-item'><span class='blank-label'>6.</span><span class='blank-type'>Verb ending in -ing</span><input type='text' class='blank-input' placeholder='Enter verb ending in -ing'></div><div class='blank-item'><span class='blank-label'>7.</span><span class='blank-type'>Number</span><input type='text' class='blank-input' placeholder='Enter number'></div><div class='blank-item'><span class='blank-label'>8.</span><span class='blank-type'>Adjective</span><input type='text' class='blank-input' placeholder='Enter adjective'></div><div class='blank-item'><span class='blank-label'>9.</span><span class='blank-type'>Plural Noun</span><input type='text' class='blank-input' placeholder='Enter plural noun'></div><div class='blank-item'><span class='blank-label'>10.</span><span class='blank-type'>Adjective</span><input type='text' class='blank-input' placeholder='Enter adjective'></div><div class='blank-item'><span class='blank-label'>11.</span><span class='blank-type'>Noun</span><input type='text' class='blank-input' placeholder='Enter noun'></div><div class='blank-item'><span class='blank-label'>12.</span><span class='blank-type'>Number</span><input type='text' class='blank-input' placeholder='Enter number'></div><div class='blank-item'><span class='blank-label'>13.</span><span class='blank-type'>Plural Noun</span><input type='text' class='blank-input' placeholder='Enter plural noun'></div></div><div class='story-template'>I went to a <span class='blank-marker'>1</span> restaurant called The <span class='blank-marker'>2</span> <span class='blank-marker'>3</span>. The waiter was a <span class='blank-marker'>4</span> <span class='blank-marker'>5</span> who kept <span class='blank-marker'>6</span> on the tables. I ordered <span class='blank-marker'>7</span> <span class='blank-marker'>8</span> <span class='blank-marker'>9</span> with a side of <span class='blank-marker'>10</span> <span class='blank-marker'>11</span>. When the bill came, it said I owed <span class='blank-marker'>12</span> <span class='blank-marker'>13</span>!</div></div></body></html>"
-
imageobject{...}
-
â”” imageNamestring"25d0dd78-3ad1-4f14-a30f-f8bdd8ebcc33_madlibs.png"
-
â”” formatstring".png"
-
â”” downloadURLstring"https://storage.googleapis.com/apiverve/APIData/madlibs/25d0dd78-3ad1-4f14-a30f-f8bdd8ebcc33_madlibs.png?GoogleAccessId=635500398038-compute%40developer.gserviceaccount.com&Expires=1766010349&Signature=e4owJidlQu2GZKe1GSuClCNSpOX1UQkxdweeS08IVOxkNscZGNr33BdYhNSG%2BuVIZ2XdEeAc3o2%2BY2hxP01APjgqMgCe4QvHRBgbCLPUiueHaczDJ1m1ZBI41aRaYjM8kdB7M0iYLNhdgqogXTYs9Zc%2FaRj9a6txpLz7fb2YexgG0fXhkcZuGeCb1haQlMTHL1YZbh9zJIKgHSqMhKK3jqhf0stuIDXIWkWdiK6fbP1B2aZkomqwpbx3iQKwbhca8rwFMWjUMRN5fspY%2FRtNbS7kIWaznc07VaBloITlQktm%2FMMojDc6QSanGeegRKealslcO53diZRsdLTZvB3wAQ%3D%3D"
-
â”” expiresnumber1766010349930
-

Headers

Only X-API-Key is required. Optional headers include Accept for response format negotiation (JSON, XML, or YAML), User-Agent, and X-Request-ID for request tracing. See all request headers →

GraphQL AccessALPHA

Access Mad Libs Generator through GraphQL to combine it with other API calls in a single request. Query only the mad libs generator data you need with precise field selection, and orchestrate complex data fetching workflows.

Test Mad Libs Generator in the GraphQL Explorer to confirm availability and experiment with queries.

Credit Cost: Each API called in your GraphQL query consumes its standard credit cost.

GraphQL Endpoint
POST https://api.apiverve.com/v1/graphql
GraphQL Query Example
query {
  madlibs(
    input: {
      category: "funny"
      count: 1
    }
  ) {
    stories
    count
    category
    html
    image {
      imageName
      format
      downloadURL
      expires
    }
  }
}

Note: Authentication is handled via the x-api-key header in your GraphQL request, not as a query parameter.

CORS Support

The Mad Libs Generator API accepts cross-origin requests from any origin, so it can be called directly from browser-based applications without a proxy. See CORS support →

Rate Limiting

Mad Libs Generator requests are throttled per minute on the Free plan and unthrottled on paid plans. Exceeding the limit returns 429 Too Many Requests; rate-limit usage is reported in the X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset response headers. See per-plan limits and best practices →

Error Codes

The Mad Libs Generator API uses standard HTTP status codes — 200 on success, 400 for invalid parameters, 401 for missing or invalid keys, 403 for insufficient credits, 429 for rate-limit exhaustion, and 500/503 for server-side issues. Each error response includes an X-Request-ID header you can quote when contacting support. See full error handling guide →

SDKs for Mad Libs Generator

Official Mad Libs Generator packages on npm, PyPI, NuGet, and JitPack — plus a Postman collection and an OpenAPI spec. See the SDK guide →

No-Code Integrations

Mad Libs Generator works with Zapier, Make, Pipedream, n8n, and Power Automate using the same API key. See setup guides →

Frequently Asked Questions

How do I get an API key for Mad Libs Generator?
Sign up for a free account at dashboard.apiverve.com. Your API key will be automatically generated and available in your dashboard. The same key works for Mad Libs Generator and all other APIVerve APIs. The free plan includes 1,000 credits plus a 500 credit bonus.
How many credits does Mad Libs Generator cost?

Each successful Mad Libs Generator API call consumes credits based on plan tier. Check the pricing section above for the exact credit cost. Failed requests and errors don't consume credits, so you only pay for successful mad libs generator lookups.

Can I use Mad Libs Generator in production?

The free plan is for testing and development only. For production use of Mad Libs Generator, upgrade to a paid plan (Starter, Pro, or Mega) which includes commercial use rights, no attribution requirements, and guaranteed uptime SLAs. All paid plans are production-ready.

Can I use Mad Libs Generator from a browser?
Yes! The Mad Libs Generator API supports CORS with wildcard configuration, so you can call it directly from browser-based JavaScript without needing a proxy server. See the CORS section above for details.
What happens if I exceed my Mad Libs Generator credit limit?

When you reach your monthly credit limit, Mad Libs Generator API requests will return an error until you upgrade your plan or wait for the next billing cycle. You'll receive notifications at 80% and 95% usage to give you time to upgrade if needed.

What's Next?

Continue your journey with these recommended resources

Was this page helpful?