Skip to content
Gumball API
Introduction

Documentation

Introduction

The Gumball API is a free, read-only REST API with data about The Amazing World of Gumball and The Wonderfully Weird World of Gumball. It serves characters, locations, episodes, seasons, songs, games and in-universe media as JSON.

There is no authentication, no API key and no sign-up. Every route is a GET request, so you can call it from a browser, a server or the terminal. Open any Try it panel on this page to send a real request and see the response.

Base URL

All requests start with the base URL below. Its root lists every available resource, which makes it a good first request.

Base URLhttps://gumball-api-server.vercel.app
GET/
Example response
{
  "name": "The Amazing World of Gumball API",
  "description": "A free, read-only REST API about The Amazing World of Gumball and The Wonderfully Weird World of Gumball. No authentication required.",
  "resources": {
    "characters": "/characters",
    "locations": "/locations",
    "episodes": "/episodes",
    "seasons": "/seasons",
    "songs": "/songs",
    "games": "/games",
    "media": "/media"
  }
}

Rate limit and caching

Each IP address can make up to 100 requests per minute. Every response reports your current usage in the headers below. When the limit is reached, the API answers with 429 Too Many Requests until the window resets.

HeaderTypeDescription
X-RateLimit-Limitinteger

Requests allowed per minute.

X-RateLimit-Remaininginteger

Requests left in the current window.

X-RateLimit-Resetinteger

Seconds until the window resets.

Lists and single items are cached for 5 minutes with Cache-Control: public, so repeated requests are fast. Random routes are never cached. Please cache responses on your side whenever possible.

Info and pagination

List routes return 20 items per page by default. Use page and limit to move through the results. Besides the items in data, every list response includes meta with totals and links with ready-to-use paths to other pages.

ParameterTypeDescription
pageinteger

The page to return, starting at 1.

limitinteger

Items per page, from 1 to 100. Defaults to 20.

KeyTypeDescription
dataarray

The items of the current page.

meta.pageinteger

The current page, starting at 1.

meta.limitinteger

The number of items per page.

meta.totalItemsinteger

The total number of items.

meta.totalPagesinteger

The total number of pages.

meta.hasNextPageboolean

Whether a next page exists.

meta.hasPreviousPageboolean

Whether a previous page exists.

links.selfstring

The path of the current page.

links.firststring

The path of the first page.

links.previousstring | null

The path of the previous page, if any.

links.nextstring | null

The path of the next page, if any.

links.laststring

The path of the last page.

GET /characters?page=2&limit=2
{
  "data": [
    {
      "id": 3,
      "slug": "anais-watterson",
      "name": "Anais Watterson",
      "fullName": "Anais Watterson",
      "aliases": [
        "Jimmy",
        "Runtus Decepticus",
        "The Anaihilator",
        "Clever Girl",
        "Pink One"
      ],
      "description": "The youngest member of the Watterson family and, by far, its most intelligent. Despite being only four years old, she speaks with an advanced vocabulary and attends Elmore Junior High in a higher grade than her older brothers, Gumball and Darwin.",
      "species": "Rabbit",
      "gender": "female",
      "age": 4,
      "occupation": "Student",
      "role": "main",
      "status": "alive",
      "animationStyle": "2d",
      "voiceActors": [
        "Kyla Kowalewski",
        "Kinza Syed Khan"
      ],
      "firstAppearance": {
        "id": 1,
        "slug": "the-dvd",
        "title": "The DVD",
        "code": "S01E01",
        "url": "/episodes/1"
      },
      "colors": [
        "#f9b6ba",
        "#ffffff"
      ],
      "image": "https://arturbomtempo-dev.github.io/arturbomtempo-cdn/assets/images/projects/gumball-api/characters/anais-watterson.webp",
      "url": "/characters/3",
      "createdAt": "2026-09-30T03:52:12.603Z",
      "updatedAt": "2026-09-30T13:59:03.490Z"
    },
    {
      "id": 4,
      "slug": "nicole-watterson",
      "name": "Nicole Watterson",
      "fullName": "Nicole Watterson",
      "aliases": [
        "Nicole Senicourt",
        "Mom"
      ],
      "description": "The mother of the Watterson family and its only truly responsible member. She works hard to support her family, is fiercely devoted to keeping them safe, and has a famously explosive temper when pushed too far.",
      "species": "Cat",
      "gender": "female",
      "age": 38,
      "occupation": "Rainbow Factory employee",
      "role": "main",
      "status": "alive",
      "animationStyle": "2d",
      "voiceActors": [
        "Teresa Gallagher"
      ],
      "firstAppearance": {
        "id": 1,
        "slug": "the-dvd",
        "title": "The DVD",
        "code": "S01E01",
        "url": "/episodes/1"
      },
      "colors": [
        "#4bc5e5",
        "#f7f7f7",
        "#989377",
        "#3c5c61",
        "#d2d4d3"
      ],
      "image": "https://arturbomtempo-dev.github.io/arturbomtempo-cdn/assets/images/projects/gumball-api/characters/nicole-watterson.webp",
      "url": "/characters/4",
      "createdAt": "2026-09-30T03:52:12.603Z",
      "updatedAt": "2026-09-30T13:59:03.490Z"
    }
  ],
  "meta": {
    "page": 2,
    "limit": 2,
    "totalItems": 245,
    "totalPages": 123,
    "hasNextPage": true,
    "hasPreviousPage": true
  },
  "links": {
    "self": "/characters?page=2&limit=2",
    "first": "/characters?page=1&limit=2",
    "previous": "/characters?page=1&limit=2",
    "next": "/characters?page=3&limit=2",
    "last": "/characters?page=123&limit=2"
  }
}

Sorting

Use the sort parameter with a field name for ascending order, or prefix it with - for descending order. Items without a value for that field always come last. Each resource documents its sortable fields.

GET /characters?sort=-name
GET /episodes?sort=usAirDate

Filtering

Every list route accepts filters as query parameters, and they can be combined freely. A few rules apply to all resources:

  • search is a case-insensitive partial match on the name or title.
  • Enum values are lowercase and kebab-case, such as stop-motion or school-facility.
  • ids takes a comma-separated list, such as ids=1,2,3, to fetch several items at once.
  • Unknown or invalid parameters are rejected with 400 Bad Request, so typos never go unnoticed.
GET /characters?species=cat&status=alive&sort=name

Related resources

Resources link to each other with small reference objects instead of bare ids. Each reference includes a url with the path to the full item.

EpisodeReference

KeyTypeDescription
idinteger

The id of the episode.

slugstring

The slug of the episode.

titlestring

The title of the episode.

codestring | null

Season and episode code, such as S01E01.

urlstring

The path of the episode.

CharacterReference

KeyTypeDescription
idinteger

The id of the character.

slugstring

The slug of the character.

namestring

The name of the character.

urlstring

The path of the character.

LocationReference

KeyTypeDescription
idinteger

The id of the location.

slugstring

The slug of the location.

namestring

The name of the location.

urlstring

The path of the location.

Images

Images are served as WebP files from a public CDN through the image field of each item. They are high quality and most character images have a transparent background, so they work on any color.

Errors

Errors use standard HTTP status codes and always return the same JSON shape.

KeyTypeDescription
statusCodeinteger

The HTTP status code.

errorstring

The HTTP status text.

messagestring | string[]

What went wrong. Validation errors list every problem.

pathstring

The requested path.

timestampdatetime

When the error happened.

GET /characters/9999
{
  "statusCode": 404,
  "error": "Not Found",
  "message": "Character with id 9999 not found",
  "path": "/characters/9999",
  "timestamp": "2026-10-01T12:00:00.000Z"
}
StatusMeaning
200The request succeeded.
400An id, slug or query parameter is invalid.
404The item or route does not exist.
429The rate limit was exceeded. Wait for the window to reset.
500Something went wrong on our side.

Characters

Every named character of the series, from the Watterson family to the one-episode residents of Elmore.

245 characters available.

Character schema

KeyTypeDescription
idinteger

The unique id of the character.

slugstring

A unique, URL-friendly identifier of the character.

namestring

The name the character is best known by.

fullNamestring | null

The full name, when known.

aliasesstring[]

Nicknames and alternative names.

descriptionstring | null

A short description.

speciesstring | null

The species or kind of being, such as Cat or Fish.

genderenum

The gender of the character.

  • male
  • female
  • other
  • unknown
ageinteger | null

The age in years, when stated in the show.

occupationstring | null

The main occupation.

roleenum

How important the character is to the series.

  • main
  • supporting
  • minor
statusenum

Whether the character is alive.

  • alive
  • deceased
  • undead
  • unknown
animationStyleenum

How the character is animated.

  • 2d
  • cgi
  • stop-motion
  • puppet
  • live-action
  • mixed-media
  • other
voiceActorsstring[]

The actors who voiced the character.

firstAppearanceEpisodeReference | null

The episode where the character first appears.

colorsstring[]

The main colors of the character, as hex codes.

imagestring

URL of the character image (WebP).

urlstring

The path of the character in the API, such as /characters/1.

createdAtdatetime

When the item was added to the API, in ISO 8601.

updatedAtdatetime

When the item was last updated, in ISO 8601.

Get all characters

Returns a paginated list of characters, 20 per page by default.

GET/characters
ParameterTypeDescription
pageinteger

The page to return, starting at 1.

limitinteger

Items per page, from 1 to 100. Defaults to 20.

sortstring

Field to sort by. Prefix it with - for descending order. Defaults to id.

  • id
  • -id
  • name
  • -name
  • createdAt
  • -createdAt
  • updatedAt
  • -updatedAt

Get a single character

Returns one character by its numeric id.

GET/characters/{id}
Example response
{
  "id": 1,
  "slug": "gumball-watterson",
  "name": "Gumball Watterson",
  "fullName": "Gumball Tristopher Watterson",
  "aliases": [
    "Gummypuss",
    "G-Ball",
    "Zach"
  ],
  "description": "The protagonist of the series: a twelve-year-old blue cat who attends Elmore Junior High with his adoptive brother Darwin and his sister Anais. Energetic, impulsive and endlessly overconfident, he constantly gets his family into absurd situations, and he starts dating Penny as of \"The Shell.\"",
  "species": "Cat",
  "gender": "male",
  "age": 12,
  "occupation": "Student",
  "role": "main",
  "status": "alive",
  "animationStyle": "2d",
  "voiceActors": [
    "Logan Grove",
    "Jacob Hopkins",
    "Nicolas Cantu",
    "Duke Cutler",
    "Alkaio Thiele"
  ],
  "firstAppearance": {
    "id": 1,
    "slug": "the-dvd",
    "title": "The DVD",
    "code": "S01E01",
    "url": "/episodes/1"
  },
  "colors": [
    "#4ac2e4",
    "#ffffff",
    "#3e5156",
    "#f4d8b2"
  ],
  "image": "https://arturbomtempo-dev.github.io/arturbomtempo-cdn/assets/images/projects/gumball-api/characters/gumball-watterson.webp",
  "url": "/characters/1",
  "createdAt": "2026-09-30T03:52:12.603Z",
  "updatedAt": "2026-09-30T13:59:03.490Z"
}

Get a character by slug

Slugs are stable, human-readable identifiers, handy for URLs in your own app.

GET/characters/slug/{slug}

Get random characters

Returns an array of random characters. Random responses are never cached, so every request returns a new selection.

GET/characters/random
ParameterTypeDescription
countinteger

How many items to return, from 1 to 20. Defaults to 1.

Filter characters

Combine any of these query parameters with each other, with pagination and with sorting.

ParameterTypeDescription
searchstring

Case-insensitive partial match on the name and full name.

speciesstring

Exact species, case-insensitive.

genderenum

Filter by gender.

  • male
  • female
  • other
  • unknown
roleenum

Filter by role.

  • main
  • supporting
  • minor
statusenum

Filter by status.

  • alive
  • deceased
  • undead
  • unknown
animationStyleenum

Filter by animation style.

  • 2d
  • cgi
  • stop-motion
  • puppet
  • live-action
  • mixed-media
  • other
voiceActorstring

Exact name of one of the voice actors.

firstAppearanceIdinteger

Id of the episode where it first appears.

idsinteger[]

Comma-separated list of ids, up to 100.

sortstring

Field to sort by. Prefix it with - for descending order. Defaults to id.

  • id
  • -id
  • name
  • -name
  • createdAt
  • -createdAt
  • updatedAt
  • -updatedAt
GET /characters?species=cat&role=main

Locations

Places of the Gumball universe, organized in a hierarchy: a classroom belongs to a school, which belongs to Elmore.

112 locations available.

Location schema

KeyTypeDescription
idinteger

The unique id of the location.

slugstring

A unique, URL-friendly identifier of the location.

namestring

The name of the location.

descriptionstring | null

A short description.

typeenum

The kind of place.

  • town
  • residence
  • school
  • school-facility
  • shop
  • restaurant
  • business
  • public-service
  • leisure
  • transport
  • nature
  • other-realm
  • other
parentLocationReference | null

The location that contains this one.

firstAppearanceEpisodeReference | null

The episode where the location first appears.

imagestring

URL of the location image (WebP).

urlstring

The path of the location in the API, such as /locations/1.

createdAtdatetime

When the item was added to the API, in ISO 8601.

updatedAtdatetime

When the item was last updated, in ISO 8601.

Get all locations

Returns a paginated list of locations, 20 per page by default.

GET/locations
ParameterTypeDescription
pageinteger

The page to return, starting at 1.

limitinteger

Items per page, from 1 to 100. Defaults to 20.

sortstring

Field to sort by. Prefix it with - for descending order. Defaults to id.

  • id
  • -id
  • name
  • -name
  • createdAt
  • -createdAt
  • updatedAt
  • -updatedAt

Get a single location

Returns one location by its numeric id.

GET/locations/{id}
Example response
{
  "id": 1,
  "slug": "elmore",
  "name": "Elmore",
  "description": "The fictional California town where most of the series takes place, with an estimated \"weird\" population of 20,000. It works much like any other town, except that anything in it, from food to furniture, can come to life.",
  "type": "town",
  "parent": null,
  "firstAppearance": {
    "id": 1,
    "slug": "the-dvd",
    "title": "The DVD",
    "code": "S01E01",
    "url": "/episodes/1"
  },
  "image": "https://arturbomtempo-dev.github.io/arturbomtempo-cdn/assets/images/projects/gumball-api/locations/elmore.webp",
  "url": "/locations/1",
  "createdAt": "2026-09-30T04:25:12.603Z",
  "updatedAt": "2026-09-30T13:59:03.490Z"
}

Get a location by slug

Slugs are stable, human-readable identifiers, handy for URLs in your own app.

GET/locations/slug/{slug}

Get random locations

Returns an array of random locations. Random responses are never cached, so every request returns a new selection.

GET/locations/random
ParameterTypeDescription
countinteger

How many items to return, from 1 to 20. Defaults to 1.

Filter locations

Combine any of these query parameters with each other, with pagination and with sorting.

ParameterTypeDescription
searchstring

Case-insensitive partial match on the name.

typeenum

Filter by type.

  • town
  • residence
  • school
  • school-facility
  • shop
  • restaurant
  • business
  • public-service
  • leisure
  • transport
  • nature
  • other-realm
  • other
parentIdinteger

Id of the parent location.

firstAppearanceIdinteger

Id of the episode where it first appears.

idsinteger[]

Comma-separated list of ids, up to 100.

sortstring

Field to sort by. Prefix it with - for descending order. Defaults to id.

  • id
  • -id
  • name
  • -name
  • createdAt
  • -createdAt
  • updatedAt
  • -updatedAt
GET /locations?type=school-facility

Episodes

All episodes, specials, shorts and pilots, with air dates, credits and links to the previous and next episode.

305 episodes available.

Episode schema

KeyTypeDescription
idinteger

The unique id of the episode.

slugstring

A unique, URL-friendly identifier of the episode.

titlestring

The title of the episode.

descriptionstring | null

A short synopsis.

seriesenum

The series the episode belongs to.

  • amazing-world
  • wonderfully-weird-world
typeenum

The kind of episode.

  • episode
  • special
  • short
  • pilot
  • film
statusenum

Whether the episode was released.

  • released
  • unreleased
  • scrapped
seasoninteger | null

The season number.

episodeNumberinteger | null

The number of the episode within its season.

overallNumberinteger | null

The number of the episode across the whole series.

codestring | null

Season and episode code, such as S01E01.

productionCodestring | null

The production code.

usAirDatedate | null

First US air date.

ukAirDatedate | null

First UK air date.

writersstring[]

The writers of the episode.

storyboardArtistsstring[]

The storyboard artists of the episode.

previousEpisodeReference | null

The previous episode in order.

nextEpisodeReference | null

The next episode in order.

imagestring

URL of the episode image (WebP).

urlstring

The path of the episode in the API, such as /episodes/1.

createdAtdatetime

When the item was added to the API, in ISO 8601.

updatedAtdatetime

When the item was last updated, in ISO 8601.

Get all episodes

Returns a paginated list of episodes, 20 per page by default.

GET/episodes
ParameterTypeDescription
pageinteger

The page to return, starting at 1.

limitinteger

Items per page, from 1 to 100. Defaults to 20.

sortstring

Field to sort by. Prefix it with - for descending order. Defaults to id.

  • id
  • -id
  • title
  • -title
  • overallNumber
  • -overallNumber
  • usAirDate
  • -usAirDate
  • createdAt
  • -createdAt
  • updatedAt
  • -updatedAt

Get a single episode

Returns one episode by its numeric id.

GET/episodes/{id}
Example response
{
  "id": 1,
  "slug": "the-dvd",
  "title": "The DVD",
  "description": "Gumball and Darwin will do anything to avoid paying the late fee on an overdue DVD, no matter how extreme their schemes get.",
  "series": "amazing-world",
  "type": "episode",
  "status": "released",
  "season": 1,
  "episodeNumber": 1,
  "overallNumber": 1,
  "code": "S01E01",
  "productionCode": null,
  "usAirDate": "2011-05-03",
  "ukAirDate": "2011-09-05",
  "writers": [
    "Ben Bocquelet",
    "Jon Foster",
    "James Lamont"
  ],
  "storyboardArtists": [
    "Benjamin Marsaud"
  ],
  "previous": null,
  "next": {
    "id": 2,
    "slug": "the-responsible",
    "title": "The Responsible",
    "code": "S01E02",
    "url": "/episodes/2"
  },
  "image": "https://arturbomtempo-dev.github.io/arturbomtempo-cdn/assets/images/projects/gumball-api/episodes/the-dvd.webp",
  "url": "/episodes/1",
  "createdAt": "2026-09-30T05:03:47.171Z",
  "updatedAt": "2026-09-30T05:03:47.171Z"
}

Get an episode by slug

Slugs are stable, human-readable identifiers, handy for URLs in your own app.

GET/episodes/slug/{slug}

Get random episodes

Returns an array of random episodes. Random responses are never cached, so every request returns a new selection.

GET/episodes/random
ParameterTypeDescription
countinteger

How many items to return, from 1 to 20. Defaults to 1.

Filter episodes

Combine any of these query parameters with each other, with pagination and with sorting.

ParameterTypeDescription
searchstring

Case-insensitive partial match on the title.

seriesenum

Filter by series.

  • amazing-world
  • wonderfully-weird-world
typeenum

Filter by type.

  • episode
  • special
  • short
  • pilot
  • film
statusenum

Filter by status.

  • released
  • unreleased
  • scrapped
seasoninteger

Season number.

writerstring

Exact name of one of the writers.

storyboardArtiststring

Exact name of one of the storyboard artists.

airedFromdate

Aired in the US on or after this date (YYYY-MM-DD).

airedTodate

Aired in the US on or before this date (YYYY-MM-DD).

idsinteger[]

Comma-separated list of ids, up to 100.

sortstring

Field to sort by. Prefix it with - for descending order. Defaults to id.

  • id
  • -id
  • title
  • -title
  • overallNumber
  • -overallNumber
  • usAirDate
  • -usAirDate
  • createdAt
  • -createdAt
  • updatedAt
  • -updatedAt
GET /episodes?season=1&sort=-usAirDate

Seasons

The six seasons of The Amazing World of Gumball and the seasons of The Wonderfully Weird World of Gumball.

8 seasons available.

Season schema

KeyTypeDescription
idinteger

The unique id of the season.

slugstring

A unique, URL-friendly identifier of the season.

numberinteger

The season number across both series.

titlestring

The title of the season.

descriptionstring | null

A short overview.

seriesenum

The series the season belongs to.

  • amazing-world
  • wonderfully-weird-world
seriesSeasonNumberinteger

The season number within its series.

statusenum

Whether the season is completed, airing or upcoming.

  • completed
  • airing
  • upcoming
episodeCountinteger | null

The planned number of episodes.

releasedEpisodeCountinteger

The number of episodes already released.

networksstring[]

The networks that aired it.

usPremiereDatedate | null

US premiere date.

usFinaleDatedate | null

US finale date.

ukPremiereDatedate | null

UK premiere date.

ukFinaleDatedate | null

UK finale date.

episodesstring

Path that lists the episodes of the season.

imagestring

URL of the season image (WebP).

urlstring

The path of the season in the API, such as /seasons/1.

createdAtdatetime

When the item was added to the API, in ISO 8601.

updatedAtdatetime

When the item was last updated, in ISO 8601.

Get all seasons

Returns a paginated list of seasons, 20 per page by default.

GET/seasons
ParameterTypeDescription
pageinteger

The page to return, starting at 1.

limitinteger

Items per page, from 1 to 100. Defaults to 20.

sortstring

Field to sort by. Prefix it with - for descending order. Defaults to number.

  • id
  • -id
  • number
  • -number
  • title
  • -title
  • usPremiereDate
  • -usPremiereDate
  • createdAt
  • -createdAt
  • updatedAt
  • -updatedAt

Get a single season

Returns one season by its numeric id.

GET/seasons/{id}
Example response
{
  "id": 1,
  "slug": "season-1",
  "number": 1,
  "title": "Season 1",
  "description": "The debut season of The Amazing World of Gumball, introducing Gumball, Darwin and the rest of the Watterson family. It premiered in the US on May 3, 2011 with \"The DVD\" and wrapped up 36 episodes later with \"The Fight.\"",
  "series": "amazing-world",
  "seriesSeasonNumber": 1,
  "status": "completed",
  "episodeCount": 36,
  "releasedEpisodeCount": 36,
  "networks": [
    "Cartoon Network"
  ],
  "usPremiereDate": "2011-05-03",
  "usFinaleDate": "2012-03-13",
  "ukPremiereDate": "2011-09-05",
  "ukFinaleDate": "2012-04-01",
  "episodes": "/episodes?season=1",
  "image": "https://arturbomtempo-dev.github.io/arturbomtempo-cdn/assets/images/projects/gumball-api/seasons/season-1.webp",
  "url": "/seasons/1",
  "createdAt": "2026-09-30T13:34:03.707Z",
  "updatedAt": "2026-09-30T13:34:03.707Z"
}

Get a season by slug

Slugs are stable, human-readable identifiers, handy for URLs in your own app.

GET/seasons/slug/{slug}

Get random seasons

Returns an array of random seasons. Random responses are never cached, so every request returns a new selection.

GET/seasons/random
ParameterTypeDescription
countinteger

How many items to return, from 1 to 10. Defaults to 1.

Filter seasons

Combine any of these query parameters with each other, with pagination and with sorting.

ParameterTypeDescription
searchstring

Case-insensitive partial match on the title.

seriesenum

Filter by series.

  • amazing-world
  • wonderfully-weird-world
statusenum

Filter by status.

  • completed
  • airing
  • upcoming
idsinteger[]

Comma-separated list of ids, up to 100.

sortstring

Field to sort by. Prefix it with - for descending order. Defaults to number.

  • id
  • -id
  • number
  • -number
  • title
  • -title
  • usPremiereDate
  • -usPremiereDate
  • createdAt
  • -createdAt
  • updatedAt
  • -updatedAt
GET /seasons?series=amazing-world

Songs

Songs performed in the show, from the opening theme to the musical numbers of each episode.

156 songs available.

Song schema

KeyTypeDescription
idinteger

The unique id of the song.

slugstring

A unique, URL-friendly identifier of the song.

titlestring

The title of the song.

descriptionstring | null

A short description.

typeenum

The kind of song.

  • episode
  • theme
  • web
episodeEpisodeReference | null

The episode where the song is performed.

charactersCharacterReference[]

The characters who sing it.

vocalistsstring[]

The real-world vocalists.

genresstring[]

Musical genres.

durationstring | null

Duration formatted as m:ss.

durationSecondsinteger | null

Duration in seconds.

musicalKeystring | null

The musical key.

imagestring | null

URL of the song image (WebP).

urlstring

The path of the song in the API, such as /songs/1.

createdAtdatetime

When the item was added to the API, in ISO 8601.

updatedAtdatetime

When the item was last updated, in ISO 8601.

Get all songs

Returns a paginated list of songs, 20 per page by default.

GET/songs
ParameterTypeDescription
pageinteger

The page to return, starting at 1.

limitinteger

Items per page, from 1 to 100. Defaults to 20.

sortstring

Field to sort by. Prefix it with - for descending order. Defaults to id.

  • id
  • -id
  • title
  • -title
  • durationSeconds
  • -durationSeconds
  • createdAt
  • -createdAt
  • updatedAt
  • -updatedAt

Get a single song

Returns one song by its numeric id.

GET/songs/{id}
Example response
{
  "id": 1,
  "slug": "opening-theme",
  "title": "Opening theme",
  "description": "The theme song of the series. Most countries air the full introduction, while the United States usually airs a shortened version. The Wonderfully Weird World of Gumball introduced a new version.",
  "type": "theme",
  "episode": {
    "id": 1,
    "slug": "the-dvd",
    "title": "The DVD",
    "code": "S01E01",
    "url": "/episodes/1"
  },
  "characters": [],
  "vocalists": [],
  "genres": [],
  "duration": "0:20",
  "durationSeconds": 20,
  "musicalKey": "G major",
  "image": "https://arturbomtempo-dev.github.io/arturbomtempo-cdn/assets/images/projects/gumball-api/songs/opening-theme.webp",
  "url": "/songs/1",
  "createdAt": "2026-09-30T13:47:38.110Z",
  "updatedAt": "2026-09-30T13:47:38.110Z"
}

Get a song by slug

Slugs are stable, human-readable identifiers, handy for URLs in your own app.

GET/songs/slug/{slug}

Get random songs

Returns an array of random songs. Random responses are never cached, so every request returns a new selection.

GET/songs/random
ParameterTypeDescription
countinteger

How many items to return, from 1 to 20. Defaults to 1.

Filter songs

Combine any of these query parameters with each other, with pagination and with sorting.

ParameterTypeDescription
searchstring

Case-insensitive partial match on the title.

typeenum

Filter by type.

  • episode
  • theme
  • web
episodeIdinteger

Id of the episode.

seasoninteger

Season number of the episode.

characterIdinteger

Id of a character who sings it.

vocaliststring

Exact name of one of the vocalists.

genrestring

Exact name of one of the genres.

idsinteger[]

Comma-separated list of ids, up to 100.

sortstring

Field to sort by. Prefix it with - for descending order. Defaults to id.

  • id
  • -id
  • title
  • -title
  • durationSeconds
  • -durationSeconds
  • createdAt
  • -createdAt
  • updatedAt
  • -updatedAt
GET /songs?characterId=1&sort=-durationSeconds

Games

Official games set exclusively in the Gumball universe, from browser games to mobile apps.

81 games available.

Game schema

KeyTypeDescription
idinteger

The unique id of the game.

slugstring

A unique, URL-friendly identifier of the game.

titlestring

The title of the game.

descriptionstring | null

A short description.

platformsenum[]

The platforms the game was released on.

  • web
  • mobile
  • roblox
  • voice-assistant
statusenum

Whether the game is still available.

  • available
  • discontinued
  • unknown
releaseDatedate | null

The release date.

releaseYearinteger | null

The release year.

developersstring[]

The studios behind the game.

imagestring

URL of the game image (WebP).

urlstring

The path of the game in the API, such as /games/1.

createdAtdatetime

When the item was added to the API, in ISO 8601.

updatedAtdatetime

When the item was last updated, in ISO 8601.

Get all games

Returns a paginated list of games, 20 per page by default.

GET/games
ParameterTypeDescription
pageinteger

The page to return, starting at 1.

limitinteger

Items per page, from 1 to 100. Defaults to 20.

sortstring

Field to sort by. Prefix it with - for descending order. Defaults to id.

  • id
  • -id
  • title
  • -title
  • releaseDate
  • -releaseDate
  • createdAt
  • -createdAt
  • updatedAt
  • -updatedAt

Get a single game

Returns one game by its numeric id.

GET/games/{id}
Example response
{
  "id": 1,
  "slug": "school-house-rush",
  "title": "School House Rush",
  "description": "A 2D side-scrolling platformer in which Gumball and Darwin save students trapped in a flooded Elmore Junior High and fix the broken pipe outside.",
  "platforms": [
    "web"
  ],
  "status": "discontinued",
  "releaseDate": "2012-01-30",
  "releaseYear": 2012,
  "developers": [],
  "image": "https://arturbomtempo-dev.github.io/arturbomtempo-cdn/assets/images/projects/gumball-api/games/school-house-rush.webp",
  "url": "/games/1",
  "createdAt": "2026-09-30T16:15:16.273Z",
  "updatedAt": "2026-09-30T16:15:16.273Z"
}

Get a game by slug

Slugs are stable, human-readable identifiers, handy for URLs in your own app.

GET/games/slug/{slug}

Get random games

Returns an array of random games. Random responses are never cached, so every request returns a new selection.

GET/games/random
ParameterTypeDescription
countinteger

How many items to return, from 1 to 20. Defaults to 1.

Filter games

Combine any of these query parameters with each other, with pagination and with sorting.

ParameterTypeDescription
searchstring

Case-insensitive partial match on the title.

platformenum

Filter by platform.

  • web
  • mobile
  • roblox
  • voice-assistant
statusenum

Filter by status.

  • available
  • discontinued
  • unknown
developerstring

Exact name of one of the developers.

releaseYearinteger

Release year.

idsinteger[]

Comma-separated list of ids, up to 100.

sortstring

Field to sort by. Prefix it with - for descending order. Defaults to id.

  • id
  • -id
  • title
  • -title
  • releaseDate
  • -releaseDate
  • createdAt
  • -createdAt
  • updatedAt
  • -updatedAt
GET /games?platform=mobile&status=available

Media

Movies, shows, books and games that exist inside the Gumball universe, many of them parodies of real ones.

16 media items available.

Media schema

KeyTypeDescription
idinteger

The unique id of the media item.

slugstring

A unique, URL-friendly identifier of the media item.

titlestring

The title of the media item.

descriptionstring | null

A short description.

typeenum

The kind of media.

  • tv-show
  • movie
  • comic
  • book
  • app
  • video-game
  • video
parodyOfstring | null

The real-world work it parodies.

firstAppearanceEpisodeReference | null

The episode where it first appears.

imagestring

URL of the media image (WebP).

urlstring

The path of the media item in the API, such as /media/1.

createdAtdatetime

When the item was added to the API, in ISO 8601.

updatedAtdatetime

When the item was last updated, in ISO 8601.

Get all media

Returns a paginated list of media items, 20 per page by default.

GET/media
ParameterTypeDescription
pageinteger

The page to return, starting at 1.

limitinteger

Items per page, from 1 to 100. Defaults to 20.

sortstring

Field to sort by. Prefix it with - for descending order. Defaults to id.

  • id
  • -id
  • title
  • -title
  • createdAt
  • -createdAt
  • updatedAt
  • -updatedAt

Get a single media item

Returns one media item by its numeric id.

GET/media/{id}
Example response
{
  "id": 1,
  "slug": "alligators-on-a-train",
  "title": "Alligators on a Train",
  "description": "The action movie Nicole rents from Laser Video in \"The DVD.\" After Gumball accidentally ruins the disc, he and Darwin try to remake the entire film themselves to avoid paying the late fee.",
  "type": "movie",
  "parodyOf": "Snakes on a Plane",
  "firstAppearance": {
    "id": 1,
    "slug": "the-dvd",
    "title": "The DVD",
    "code": "S01E01",
    "url": "/episodes/1"
  },
  "image": "https://arturbomtempo-dev.github.io/arturbomtempo-cdn/assets/images/projects/gumball-api/in-universe-media/alligators-on-a-train.webp",
  "url": "/media/1",
  "createdAt": "2026-10-01T00:54:23.135Z",
  "updatedAt": "2026-10-01T00:54:23.135Z"
}

Get a media item by slug

Slugs are stable, human-readable identifiers, handy for URLs in your own app.

GET/media/slug/{slug}

Get random media

Returns an array of random media items. Random responses are never cached, so every request returns a new selection.

GET/media/random
ParameterTypeDescription
countinteger

How many items to return, from 1 to 20. Defaults to 1.

Filter media

Combine any of these query parameters with each other, with pagination and with sorting.

ParameterTypeDescription
searchstring

Case-insensitive partial match on the title.

typeenum

Filter by type.

  • tv-show
  • movie
  • comic
  • book
  • app
  • video-game
  • video
firstAppearanceIdinteger

Id of the episode where it first appears.

idsinteger[]

Comma-separated list of ids, up to 100.

sortstring

Field to sort by. Prefix it with - for descending order. Defaults to id.

  • id
  • -id
  • title
  • -title
  • createdAt
  • -createdAt
  • updatedAt
  • -updatedAt
GET /media?type=movie