# Toontown Rewritten

> Access live Toontown Rewritten game data through the keyless public API: Cog invasions, district population and status, the Silly Meter, Field Offices, adoptable Doodles, Goofy Speedway racing leaderboards, the Cavalcade, Cartoonival donations, game status, news posts, release notes, and download mirrors. No account or API key required.

App · Gaming · 16 actions. Web page: https://docs.lodol.com/docs/integrations/toontown-rewritten

## Actions

### Get active field offices

List every currently active Field Office by ZoneID, with its difficulty (stars), remaining annexes, and whether it is open.

**Inputs**: None.

**Outputs**

- `fieldOffices` (object)

**Example output**

```json
{
  "fieldOffices": {
    "fieldOffices": {
      "4100": {
        "annexes": 38,
        "department": "s",
        "difficulty": 2,
        "open": true
      },
      "5100": {
        "annexes": 80,
        "department": "s",
        "difficulty": 1,
        "open": true
      }
    },
    "lastUpdated": 1778702517
  }
}
```

### Get active invasions

List the Cog invasions currently active in each district, with the invading Cog type, progress, and start time.

**Inputs**: None.

**Outputs**

- `invasions` (object)

**Example output**

```json
{
  "invasions": {
    "error": null,
    "invasions": {
      "Kaboom Cliffs": {
        "asOf": 1778702527,
        "progress": "2158/8000",
        "startTimestamp": 1778700988,
        "type": "Downsizer"
      },
      "Zoink Falls": {
        "asOf": 1778702523,
        "progress": "2500/8000",
        "startTimestamp": 1778700549,
        "type": "Mr. Hollywood (Skelecog)"
      }
    },
    "lastUpdated": 1778702533
  }
}
```

### Get adoptable doodles

List every Doodle currently available for adoption across all districts, grouped by Playground, with each Doodle's DNA, traits, and jellybean cost. Use 'Render doodle image' to turn a DNA string into an image.

**Inputs**: None.

**Outputs**

- `doodles` (object)

**Example output**

```json
{
  "doodles": {
    "Zapwood": {
      "The Brrrgh": [
        {
          "cost": 3335,
          "dna": "64000203000401080200",
          "traits": [
            "Sometimes Tired",
            "Sometimes Bored"
          ]
        }
      ],
      "Toontown Central": [
        {
          "cost": 216,
          "dna": "64000000020107080100",
          "traits": [
            "Often Grumpy",
            "Often Lonely",
            "Sometimes Affectionate"
          ]
        }
      ]
    }
  }
}
```

### Get Cartoonival donations

Get the running total of tokens donated to Riggy's Cartoonival fund this year.

**Inputs**: None.

**Outputs**

- `donations` (object)

**Example output**

```json
{
  "donations": {
    "tokensDonated": 12345678
  }
}
```

### Get Cavalcade status

Get the current status of the Cavalcade parade, including whether it is running and the street it is currently on.

**Inputs**: None.

**Outputs**

- `cavalcade` (object)

**Example output**

```json
{
  "cavalcade": {
    "paradeLocation": 2200,
    "paradeLocationString": "Silly Street",
    "paradeStatus": "active"
  }
}
```

### Get game status

Check whether Toontown Rewritten is open, along with the timestamps of the most recent login cookie and gameserver auth.

**Inputs**: None.

**Outputs**

- `status` (object)

**Example output**

```json
{
  "status": {
    "banner": null,
    "lastCookieIssuedAt": 1778702498,
    "lastGameAuthAt": 1778702504,
    "open": true
  }
}
```

### Get latest news post

Get the most recently released news post.

**Inputs**: None.

**Outputs**

- `news` (object)

**Example output**

```json
{
  "news": {
    "author": "The Toontown Team",
    "body": "<p>Creative Toons of the World, we need <strong>YOU</strong>!</p>",
    "date": "April 23, 2026 at 12:00 PM",
    "image": "https://cdn.toontownrewritten.com/media/news-site/img/26-4-23_art_recruitment.png",
    "postId": 1100,
    "title": "Join Toontown Rewritten's Art Department!"
  }
}
```

### Get news post by ID

Get a specific news post by its ID. Returns nothing if no post has that ID.

**Inputs**

- News post (`post_id`, text, required): Pick a news post, or reference a post ID from a previous step.

**Outputs**

- `news` (object)

**Example output**

```json
{
  "news": {
    "author": "The Toontown Team",
    "body": "<p>Creative Toons of the World, we need <strong>YOU</strong>!</p>",
    "date": "April 23, 2026 at 12:00 PM",
    "image": null,
    "postId": 1100,
    "title": "Join Toontown Rewritten's Art Department!"
  }
}
```

### Get population

Get the current total population of Toontown Rewritten plus a per-district breakdown of population and district status.

**Inputs**: None.

**Outputs**

- `population` (object)

**Example output**

```json
{
  "population": {
    "error": null,
    "lastUpdated": 1778702505,
    "populationByDistrict": {
      "Kaboom Cliffs": 54,
      "Splat Summit": 291,
      "Zapwood": 353,
      "Zoink Falls": 81
    },
    "statusByDistrict": {
      "Kaboom Cliffs": "online",
      "Splat Summit": "online",
      "Zapwood": "online",
      "Zoink Falls": "online"
    },
    "totalPopulation": 1164
  }
}
```

### Get racing leaderboards

Get the Goofy Speedway racing leaderboards across all districts for today, the current week, the previous week, and all time.

**Inputs**: None.

**Outputs**

- `leaderboards` (object)

**Example output**

```json
{
  "leaderboards": {
    "all_time": {
      "range": [
        1778616000,
        1778702400
      ]
    },
    "current_week": {
      "range": [
        1778616000,
        1778702400
      ]
    },
    "previous_week": {
      "range": [
        1778011200,
        1778097600
      ]
    },
    "today": {
      "Zapwood": {
        "Airborne Acres": [
          [
            "Flippy",
            "7413040101001600168b270d000d0d0104003400",
            38.42
          ]
        ]
      },
      "range": [
        1778616000,
        1778702400
      ]
    }
  }
}
```

### Get release note by ID

Get a specific release note, including its full body, by its note ID.

**Inputs**

- Release note (`note_id`, text, required): Pick a release note, or reference a note ID from a previous step.

**Outputs**

- `releaseNote` (object)

**Example output**

```json
{
  "releaseNote": {
    "body": "=General\n* Changed the battle accuracy system's 95% hard cap to now be a soft cap.",
    "date": "April 2, 2026 at 12:08 PM",
    "noteId": 505,
    "slug": "ttr-live-v4.4.4.4.4.4.4.4a"
  }
}
```

### Get Silly Meter status

Get the current state of the Silly Meter: its HP, the three Silly Team rewards on offer, the active winner, and the next update time.

**Inputs**: None.

**Outputs**

- `sillyMeter` (object)

**Example output**

```json
{
  "sillyMeter": {
    "asOf": 1778702541,
    "hp": 4212472,
    "nextUpdateTimestamp": 1778703300,
    "rewardDescriptions": [
      "Earn double experience for Lure gags in all battles!",
      "Double your fun (and money) with double jellybeans!",
      "Earn double experience for Trap gags in all battles!"
    ],
    "rewardPoints": [
      null,
      null,
      null
    ],
    "rewards": [
      "Double Lure Experience",
      "Double Jellybeans",
      "Double Trap Experience"
    ],
    "state": "Active",
    "winner": null
  }
}
```

### List download mirrors

List the base URLs of the download mirrors for the game's patch files.

**Inputs**: None.

**Outputs**

- `mirrors` (list)

**Example output**

```json
{
  "mirrors": [
    "https://download.toontownrewritten.com/patches/"
  ]
}
```

### List news posts

List released news posts in reverse chronological order. Use the page size and page number to page through older posts.

**Inputs**

- Page size (`limit`, number): How many posts to return per page. At least 1. Default: `10`.
- Page number (`page`, number): Zero-indexed page number (0 is the newest page). At least 0. Default: `0`.

**Outputs**

- `news` (list)

**Example output**

```json
{
  "news": [
    {
      "author": "The Toontown Team",
      "body": "<p>Creative Toons of the World, we need <strong>YOU</strong>!</p>",
      "date": "April 23, 2026 at 12:00 PM",
      "image": "https://cdn.toontownrewritten.com/media/news-site/img/26-4-23_art_recruitment.png",
      "postId": 1100,
      "title": "Join Toontown Rewritten's Art Department!"
    }
  ]
}
```

### List release notes

List release-note summaries (version slug and date, without bodies), newest first.

**Inputs**: None.

**Outputs**

- `releaseNotes` (list)

**Example output**

```json
{
  "releaseNotes": [
    {
      "date": "April 2, 2026 at 12:08 PM",
      "noteId": 505,
      "slug": "ttr-live-v4.4.4.4.4.4.4.4a"
    }
  ]
}
```

### Render doodle image

Build an image URL for a Doodle from its DNA string (from 'Get adoptable doodles'). A square size such as 256x256 or 512x512 is recommended.

**Inputs**

- Doodle DNA (`dna`, text, required): The Doodle's DNA string, as returned by 'Get adoptable doodles'.
- Width (`width`, number): Image width in pixels. From 128 to 2048. Default: `512`.
- Height (`height`, number): Image height in pixels. From 128 to 2048. Default: `512`.
- Image format (`extension`, text): The image format to render. One of: `webp`, `png`. Default: `webp`.

**Outputs**

- `imageUrl` (text)

**Example output**

```json
{
  "imageUrl": "https://rendition.toontownrewritten.com/render/64000000020107080100/doodle/512x512.webp"
}
```
