Please don't submit pull requests or patches here
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Cadey Ratio a98f5fcd3a modernize nimble file 7 years ago
client don't fail in nim for hiatus 8 years ago
public/static update nim docs 8 years ago
run add run artifacts 8 years ago
.dockerignore Initial commit 8 years ago
.gitattributes vendor the clients 8 years ago
.gitignore fix gitignore and permissions 8 years ago
Dockerfile Fix for Nim 0.12 8 years ago
LICENSE Initial commit 8 years ago
Makefile Serve /all 8 years ago Update README 8 years ago
episode.nim split off episode manipulation code into its own module 8 years ago
fim.list more horse 7 years ago
ponyapi.nim typo 8 years ago
ponyapi.nimble modernize nimble file 7 years ago
stats.nim Collect and report statistics about usage of the api server 8 years ago


A simple API for episodes of My Little Pony: Friendship is Magic to be run inside a container.

API Usage

An episode will have the following data type:

      "air_date": 1286735400,
      "episode": 1,
      "is_movie": false,
      "name": "Friendship is Magic Part 1",
      "season": 1

This represents Season 1, Episode 1 of My Little Pony: Friendship Is Magic. The air_date column represents the date and time that the episode was originally shown on The Hub (now Discovery Family Network). If is_movie is set and the season number is 99, the episode record should be treated as a movie.

Usage Limits

None. Don't make the server it's running on crash and we'll all be good.



The canonical route base for PonyAPI is This now supports HTTP/2.0 using Caddy and SSL using Let's Encrypt. If you get SSL errors, please be sure your system certificate lists are up to date. Example usage:

$ curl
  "episode": {
    "air_date": 1286735400,
    "episode": 1,
    "is_movie": false,
    "name": "Friendship is Magic Part 1",
    "season": 1

Bare Replies

As of 882b5b1, PonyAPI will accept an X-API-Options header that when set to bare will return the API replies without the episode or episodes header. Functionality is otherwise unchanged, however an error will still be shown if something goes wrong, and that will parse differently. This API will return 200 if and only if everything went to plan.

An example:

$ curl --header "X-API-Options: bare"
    "name": "Do Princesses Dream of Magic Sheep?",
    "air_date": 1436628600,
    "season": 5,
    "episode": 13,
    "is_movie": false

This will also be triggered if you set the query parameter options to bare.


Returns all information about all episodes. This returns an array of Episode objects as defined above.


Returns the episode of My Little Pony: Friendship is Magic that will air next.


Returns the episode of My Little Pony: Friendship is Magic that most recently aired.


Returns all information about episodes in the given season number or a 404 reply if no episodes could be found. To get all information about the movies shown, set the season as 99.


Returns all information about the episode with the given season and episode number. If the episode cannot be found, this will return a 404.


Returns a random episode record from the list of episodes.

This must be given a query paramater q containing the text to search for. Not including this will return a 406 reply. This will search the list of episode records for any episodes whose names match the given search terms. This is case-insensitive. If no episodes can be found, this will return a 404 reply.


Contributions will be judged by their technical merit. No politics on project forums.

All code is licensed under the MIT license.