TMNT API Documentation
Everything you need to build your own TMNT-powered application!
Overview
The TMNT API provides programmatic access to comprehensive data about the Teenage Mutant Ninja Turtles universe. This RESTful API returns JSON responses and requires no authentication for public endpoints.
📄 API Specifications
Download the complete API specification for use with tools like Swagger UI, Postman, or code generators:
🚀 Fast & Reliable
Powered by Vercel Edge Config for ultra-low latency worldwide
📦 No Auth Required
Public API with no authentication needed for basic usage
🔄 Always Up-to-Date
Regularly maintained with accurate TMNT data
Authentication
The TMNT API is currently open and requires no authentication. Simply make requests to the endpoints and receive data!
Note: Rate limiting may apply for excessive usage. See Rate Limiting section.
Base URL
https://www.turtletime.dev/api/v1
All API endpoints are relative to this base URL.
API Endpoints
🐢 Turtles
Get all ninja turtles
Example Request
curl https://www.turtletime.dev/api/v1/turtles
Example Response
[
{
"name": "leonardo",
"full_name": "Leonardo",
"color": "blue",
"weapon": "Katana",
"personality": "Leader, disciplined, responsible",
"favorite_pizza": "Pepperoni",
"catchphrase": "We strike hard and fade away into the night",
"image_url": "/images/leonardo.svg"
},
{
"name": "donatello",
"full_name": "Donatello",
"color": "purple",
"weapon": "Bo Staff",
"personality": "Tech genius, inventor, problem solver",
"favorite_pizza": "Hawaiian",
"catchphrase": "Does machine!",
"image_url": "/images/donatello.svg"
}
// ... more turtles
]
Get a specific turtle by name
Parameter | Type | Description |
---|---|---|
name |
string | Turtle name (leonardo, donatello, raphael, michelangelo) |
Example Request
curl https://www.turtletime.dev/api/v1/turtles/leonardo
👹 Villains
Get all villains
Example Response Schema
{
"name": "string",
"real_name": "string",
"description": "string",
"abilities": ["string"],
"first_appearance": "string",
"arch_enemy_of": "string | null",
"image_url": "string"
}
Get a specific villain by name
Parameter | Type | Description |
---|---|---|
name |
string | Villain name (shredder, krang, bebop, rocksteady, baxter_stockman) |
📺 Episodes
Get episodes with optional filtering and pagination
Query Parameter | Type | Description |
---|---|---|
season |
integer | Filter by season number (optional) |
limit |
integer | Number of results per page (default: 10) |
offset |
integer | Number of results to skip (default: 0) |
Example Request
curl "https://www.turtletime.dev/api/v1/episodes?season=1&limit=5"
💬 Quotes
Get a random TMNT quote
Example Response
{
"id": 1,
"text": "Cowabunga!",
"character": "Michelangelo",
"context": "Battle cry"
}
⚔️ Weapons
Get all turtle weapons
Response Schema
{
"name": "string",
"type": "string",
"wielder": "string",
"description": "string",
"special_moves": ["string"]
}
Response Format
All responses are returned in JSON format with appropriate content-type headers.
Success Response
HTTP/1.1 200 OK
Content-Type: application/json
{
// Response data
}
Error Response
HTTP/1.1 404 Not Found
Content-Type: application/json
{
"detail": "Turtle 'splinter' not found"
}
HTTP Status Codes
Code | Description |
---|---|
200 |
Success - Request completed successfully |
400 |
Bad Request - Invalid parameters |
404 |
Not Found - Resource doesn't exist |
422 |
Unprocessable Entity - Validation error |
500 |
Internal Server Error - Something went wrong |
Code Examples
JavaScript (Fetch API)
// Get all turtles
async function getTurtles() {
try {
const response = await fetch('https://www.turtletime.dev/api/v1/turtles');
const turtles = await response.json();
console.log(turtles);
} catch (error) {
console.error('Error:', error);
}
}
// Get specific turtle
async function getTurtle(name) {
try {
const response = await fetch(`https://www.turtletime.dev/api/v1/turtles/${name}`);
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
const turtle = await response.json();
console.log(turtle);
} catch (error) {
console.error('Error:', error);
}
}
Python (requests)
import requests
BASE_URL = "https://www.turtletime.dev/api/v1"
# Get all turtles
def get_turtles():
response = requests.get(f"{BASE_URL}/turtles")
if response.status_code == 200:
return response.json()
else:
raise Exception(f"API request failed with status {response.status_code}")
# Get specific turtle
def get_turtle(name):
response = requests.get(f"{BASE_URL}/turtles/{name}")
if response.status_code == 200:
return response.json()
elif response.status_code == 404:
raise Exception(f"Turtle '{name}' not found")
else:
raise Exception(f"API request failed with status {response.status_code}")
# Example usage
if __name__ == "__main__":
# Get all turtles
turtles = get_turtles()
print(f"Found {len(turtles)} turtles")
# Get Leonardo
leo = get_turtle("leonardo")
print(f"{leo['full_name']} uses {leo['weapon']}")
cURL
# Get all turtles
curl https://www.turtletime.dev/api/v1/turtles
# Get specific turtle
curl https://www.turtletime.dev/api/v1/turtles/leonardo
# Get all villains
curl https://www.turtletime.dev/api/v1/villains
# Get episodes from season 1
curl "https://www.turtletime.dev/api/v1/episodes?season=1"
# Get random quote
curl https://www.turtletime.dev/api/v1/quotes/random
# Pretty print with jq
curl https://www.turtletime.dev/api/v1/turtles | jq '.'
PHP
<?php
$baseUrl = "https://www.turtletime.dev/api/v1";
// Get all turtles
function getTurtles() {
global $baseUrl;
$response = file_get_contents("$baseUrl/turtles");
return json_decode($response, true);
}
// Get specific turtle
function getTurtle($name) {
global $baseUrl;
$context = stream_context_create([
"http" => ["ignore_errors" => true]
]);
$response = file_get_contents("$baseUrl/turtles/$name", false, $context);
$httpCode = substr($http_response_header[0], 9, 3);
if ($httpCode == "200") {
return json_decode($response, true);
} elseif ($httpCode == "404") {
throw new Exception("Turtle '$name' not found");
} else {
throw new Exception("API request failed with status $httpCode");
}
}
// Example usage
try {
// Get all turtles
$turtles = getTurtles();
echo "Found " . count($turtles) . " turtles\n";
// Get Leonardo
$leo = getTurtle("leonardo");
echo $leo['full_name'] . " uses " . $leo['weapon'] . "\n";
} catch (Exception $e) {
echo "Error: " . $e->getMessage() . "\n";
}
?>
Rate Limiting
To ensure fair usage and maintain service quality:
- No authentication required for normal usage
- Reasonable usage limits apply (1000 requests per hour)
- Responses include caching headers for optimal performance
- If you need higher limits, please contact us
Support & Feedback
Having issues or need help?
- Visit our Support Center for FAQs and contact information
- Check the code examples above
- Report issues on GitHub
- API status: Health Check Endpoint