Term Meaning
standard A standard demo is a demo that is NOT coop, solo-net, TAS, cheated nor suspect.
record The record is the standard demo with the fastest time for a certain category (either undisputed_record or tic_record are true).
undisputed_record The record demo doesnt have any other standard demos in its category
tic_record The record demo has competition in its category. In the tables these demos have a crown.
second_barrier The demo was the first to beat the second barrier, but is slower than the tic_record. In the tables these demos have a clock.
guys How many doomguys there are in the demo. May or may not be the same as the number of players.
GET /api/demos

This is the main endpoint to query demo lists. It can be used to get all demos from a wad for displaying tables, or getting the feed by sorting by last id.
It doesnt crosslist the record, so you are better off using /api/demos/records if you just need the record of a certain category (for example Doom2 Map01 UV will give you a list without any record, since the first place is in the Pacifist category).


Parameter Required Type Description
wad no string The wad's short name
level no string The level name
category no string The category name
only_records no bool Whether to only list demos that are records (default = false)
sort_by no string The field to sort the list by and in what direction.
The allowed fields are id, time and date. The direction can be asc or desc. (default = time:asc)
page no integer The page number (default = 1)
per no integer How many demos to show per page (default = 50, max = 200)

Example Request
https://dsdarchive.com/api/demos?wad=plutonia&only_records=true&sort_by=date:asc&page=4

Example Response (200 OK)
{
  "demos": [
    {
      "id": 65897,
      "players": [
        "aconfusedhuman"
      ],
      "time": "1:32.94",
      "category": "NM 100S",
      "level": "Map 08",
      "wad": "plutonia",
      "engine": "DSDA-Doom v0.19.7cl4",
      "date": "2021-09-12T23:28:06.000Z",
      "upload_date": "2021-09-12T23:28:06.000Z",
      "tic_record": true,
      "undisputed_record": false,
      "second_barrier": false,
      "tas": false,
      "guys": 1,
      "suspect": false,
      "cheated": false,
      "notes": [],
      "file": "http://dsdarchive.com/files/demos/plutonia/55364/pl08ns132.zip",
      "video_url": "https://www.youtube.com/watch?v=C16SKN69pWU"
    },

    ...
  ],
  "page": 4,
  "per": 50,
  "total_pages": 7,
  "total_demos": 335
}
GET /api/demos/{id}

Returns a specific demo details.


Parameter Required Type Description
id yes integer The demo's id

Example Request
https://dsdarchive.com/api/demos/68170

Example Response (200 OK)
{
  "id": 68170,
  "players": [
    "almostmatt1"
  ],
  "time": "0:07.74",
  "category": "Other",
  "level": "E1M1",
  "wad": "doom",
  "engine": "XDRE v2.22a",
  "date": "2021-11-02T01:30:44.000Z",
  "upload_date": "2021-11-02T01:30:44.000Z",
  "tic_record": false,
  "undisputed_record": false,
  "second_barrier": false,
  "tas": true,
  "guys": 1,
  "suspect": false,
  "cheated": false,
  "notes": [
    "Nomo. Uses player 3 starting position."
  ],
  "file": "http://dsdarchive.com/files/demos/doom/57604/e1m1ox774.zip",
  "video_url": null
}
GET /api/demos/records

Returns the record demo for a specific run (crosslisted).


Parameter Required Type Description
wad yes string The wad's short name
level yes string The level name
category yes string The category name

Example Request
https://dsdarchive.com/api/demos/records?wad=doom2&level=Map+01&category=UV+Speed

Example Response (200 OK)
{
  "player": "4shockblast",
  "time": "0:04.97",
  "category": "Pacifist",
  "level": "Map 01",
  "wad": "doom2",
  "engine": "DSDA-Doom v0.27.5cl2",
  "date": "2024-04-06T03:46:50.000Z",
  "notes": ["Also Reality"],
  "file": "http://dsdarchive.com/files/demos/doom2/88132/pa01-497.zip"
}
GET /api/players

Returns an alphabetical list of players.


Parameter Required Type Description
page no integer The page number (default = 1)
per no integer How many players to show per page (default = 50, max = 200)

Example Request
https://dsdarchive.com/api/players?page=4&per=200

Example Response (200 OK)
{
  "players": [
    {
      "username": "kyle_mcawesome",
      "name": "Kyle McAwesome",
      "stats": {
        "demo_count": 1644,
        "total_demo_time": "54:11:18.29",
      }
    },

    ...
  ],
  "page": 4,
  "per": 200,
  "total_pages": 7,
  "total_players": 1294
}
GET /api/players/{username}

Returns a specific players details


Parameter Required Type Description
username yes string The player's short and URL friendly username

Example Request
https://dsdarchive.com/api/players/xit_vono

Example Response (200 OK)
{
  "username": "xit_vono",
  "name": "Xit Vono",
  "stats": {
    "demo_count": 1740,
    "total_demo_time": "153:39:19.78",
  }
}
GET /api/wads/{short_name}

Returns a specific wad details.


Parameter Required Type Description
short_name yes string The wad's short name

Example Request
https://dsdarchive.com/api/wads/gd

Example Response (200 OK)
{
  "short_name": "gd",
  "name": "Going Down",
  "author": "mouldy",
  "iwad": "doom2",
  "file": "https://dsdarchive.com/files/wads/doom2/1472/gd.zip"
}