Dangodeck API

A fast, professional REST API for anime TCG cards. JSON responses, fuzzy search, pagination, filtering, and Redis-backed caching. Interactive Swagger is available at /docs/api.

Base URL

All endpoints are served under the /api prefix.

https://dangodeck.nett.to/api

Authentication

The public API requires no authentication. All read endpoints are open. Please be considerate and cache where possible.

Rate Limit

Requests are limited to 120 requests per minute per IP. Exceeding the limit returns 429 Too Many Requests.

Response Shape

Every successful response is wrapped in a consistent envelope.

{
  "success": true,
  "data": { /* card or list */ }
}
GET

Random Card (rolled stats)

/api/cards/random

Returns a random card with a randomly rolled rarity, level (1-100), evo (1-3) and ascension (0-5). The "stats" field holds the calculated stats; "baseStats", "params" and "multipliers" show the breakdown. Great for game bots.

curl -s "https://dangodeck.nett.to/api/cards/random"
const res = await fetch("https://dangodeck.nett.to/api/cards/random");
const { data } = await res.json();
console.log(data);
const res = await fetch("https://dangodeck.nett.to/api/cards/random");
const { data } = (await res.json()) as { data: unknown };
console.log(data);
import requests

res = requests.get("https://dangodeck.nett.to/api/cards/random")
print(res.json()["data"])
<?php
$res = file_get_contents("https://dangodeck.nett.to/api/cards/random");
$json = json_decode($res, true);
print_r($json["data"]);
package main

import (
	"encoding/json"
	"fmt"
	"net/http"
)

func main() {
	res, _ := http.Get("https://dangodeck.nett.to/api/cards/random")
	defer res.Body.Close()
	var out map[string]any
	json.NewDecoder(res.Body).Decode(&out)
	fmt.Println(out["data"])
}
GET

Random Card (base stats)

/api/cards/random/base

Returns a single randomly selected card with its base stats only.

curl -s "https://dangodeck.nett.to/api/cards/random/base"
const res = await fetch("https://dangodeck.nett.to/api/cards/random/base");
const { data } = await res.json();
console.log(data);
const res = await fetch("https://dangodeck.nett.to/api/cards/random/base");
const { data } = (await res.json()) as { data: unknown };
console.log(data);
import requests

res = requests.get("https://dangodeck.nett.to/api/cards/random/base")
print(res.json()["data"])
<?php
$res = file_get_contents("https://dangodeck.nett.to/api/cards/random/base");
$json = json_decode($res, true);
print_r($json["data"]);
package main

import (
	"encoding/json"
	"fmt"
	"net/http"
)

func main() {
	res, _ := http.Get("https://dangodeck.nett.to/api/cards/random/base")
	defer res.Body.Close()
	var out map[string]any
	json.NewDecoder(res.Body).Decode(&out)
	fmt.Println(out["data"])
}
GET

Calculate Card Stats

/api/cards/1/stats

Deterministic stat calculation for a card at chosen tiers: final = round(base × rarity × level × evo × ascension).

ParameterTypeDescription
id number (path) Numeric ID of the card.
rarity string base, common, uncommon, rare, super_rare, ultra_rare. Default base.
level number (1-100) Card level. Default 1.
evo number (1-3) Evolution stage. Default 1.
ascension number (0-5) Ascension rank. Default 0.
curl -s "https://dangodeck.nett.to/api/cards/1/stats?rarity=ultra_rare&level=100&evo=3&ascension=5"
const res = await fetch("https://dangodeck.nett.to/api/cards/1/stats?rarity=ultra_rare&level=100&evo=3&ascension=5");
const { data } = await res.json();
console.log(data);
const res = await fetch("https://dangodeck.nett.to/api/cards/1/stats?rarity=ultra_rare&level=100&evo=3&ascension=5");
const { data } = (await res.json()) as { data: unknown };
console.log(data);
import requests

res = requests.get("https://dangodeck.nett.to/api/cards/1/stats?rarity=ultra_rare&level=100&evo=3&ascension=5")
print(res.json()["data"])
<?php
$res = file_get_contents("https://dangodeck.nett.to/api/cards/1/stats?rarity=ultra_rare&level=100&evo=3&ascension=5");
$json = json_decode($res, true);
print_r($json["data"]);
package main

import (
	"encoding/json"
	"fmt"
	"net/http"
)

func main() {
	res, _ := http.Get("https://dangodeck.nett.to/api/cards/1/stats?rarity=ultra_rare&level=100&evo=3&ascension=5")
	defer res.Body.Close()
	var out map[string]any
	json.NewDecoder(res.Body).Decode(&out)
	fmt.Println(out["data"])
}
GET

Card by ID

/api/cards/1

Returns the card matching the given numeric ID. Returns 404 if not found.

ParameterTypeDescription
id number (path) Numeric ID of the card.
curl -s "https://dangodeck.nett.to/api/cards/1"
const res = await fetch("https://dangodeck.nett.to/api/cards/1");
const { data } = await res.json();
console.log(data);
const res = await fetch("https://dangodeck.nett.to/api/cards/1");
const { data } = (await res.json()) as { data: unknown };
console.log(data);
import requests

res = requests.get("https://dangodeck.nett.to/api/cards/1")
print(res.json()["data"])
<?php
$res = file_get_contents("https://dangodeck.nett.to/api/cards/1");
$json = json_decode($res, true);
print_r($json["data"]);
package main

import (
	"encoding/json"
	"fmt"
	"net/http"
)

func main() {
	res, _ := http.Get("https://dangodeck.nett.to/api/cards/1")
	defer res.Body.Close()
	var out map[string]any
	json.NewDecoder(res.Body).Decode(&out)
	fmt.Println(out["data"])
}
GET

List Cards

/api/cards

Returns a paginated, filterable, sortable list of cards.

ParameterTypeDescription
page number Page number. Default 1.
limit number (1-100) Items per page. Default 20.
sort string One of id, name, anime, element, hp, atk, def, spd. Prefix "-" for descending.
element string Filter by element (Fire, Water, Dark...).
anime string Filter by anime title (contains).
name string Filter by card name (contains).
curl -s "https://dangodeck.nett.to/api/cards?page=1&limit=20"
const res = await fetch("https://dangodeck.nett.to/api/cards?page=1&limit=20");
const { data } = await res.json();
console.log(data);
const res = await fetch("https://dangodeck.nett.to/api/cards?page=1&limit=20");
const { data } = (await res.json()) as { data: unknown };
console.log(data);
import requests

res = requests.get("https://dangodeck.nett.to/api/cards?page=1&limit=20")
print(res.json()["data"])
<?php
$res = file_get_contents("https://dangodeck.nett.to/api/cards?page=1&limit=20");
$json = json_decode($res, true);
print_r($json["data"]);
package main

import (
	"encoding/json"
	"fmt"
	"net/http"
)

func main() {
	res, _ := http.Get("https://dangodeck.nett.to/api/cards?page=1&limit=20")
	defer res.Body.Close()
	var out map[string]any
	json.NewDecoder(res.Body).Decode(&out)
	fmt.Println(out["data"])
}