API Documentation

The slopfiles API provides read-only access to the ban database. Query bans, teams, players, events, and aggregate statistics. No authentication is required.

BASE URL https://slopfiles.com/api/v1
Note: No authentication required. Please be respectful with request volume.

Response Format

All endpoints return JSON. Successful responses include a data field and, for list endpoints, a pagination object.

JSON - Standard Response
{
  "success": true,
  "data": [ ... ],
  "pagination": {
    "page": 1,
    "limit": 25,
    "total": 100,
    "pages": 4
  }
}

Bans

GET /api/v1/bans List all bans >

Retrieve a paginated list of all bans in the database. Filter by status to narrow results.

Query Parameters
ParameterTypeRequiredDescription
status string optional Filter by status: active, appealed, or revoked
page integer optional Page number (default: 1)
limit integer optional Results per page (default: 25, max: 100)
Example Request
cURL
curl "https://slopfiles.com/api/v1/bans?status=active&limit=10"
Example Response
JSON - 200 OK
{
  "success": true,
  "data": [
    {
      "id": 42,
      "team": "FlagHoarders",
      "event": "DEF CON CTF 2025",
      "status": "active",
      "reason": "Flag sharing between teams",
      "date": "2025-08-10"
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 10,
    "total": 87,
    "pages": 9
  }
}
GET /api/v1/bans/[id] Get ban details >

Retrieve full details for a specific ban, including associated team, event, and involved players.

Path Parameters
ParameterTypeRequiredDescription
id integer required The ban ID
Example Request
cURL
curl "https://slopfiles.com/api/v1/bans/42"
Example Response
JSON - 200 OK
{
  "success": true,
  "data": {
    "id": 42,
    "team": {
      "id": 7,
      "name": "FlagHoarders"
    },
    "event": {
      "id": 15,
      "name": "DEF CON CTF 2025"
    },
    "players": [
      { "id": 101, "name": "sk1d_r00t" },
      { "id": 102, "name": "x0r_ninja" }
    ],
    "status": "active",
    "reason": "Flag sharing between teams",
    "evidence": "Identical submissions within 3 seconds across teams",
    "date": "2025-08-10"
  }
}

Teams

GET /api/v1/teams List teams >

Retrieve a paginated list of all teams. Use the search parameter to filter by name.

Query Parameters
ParameterTypeRequiredDescription
q string optional Search query to filter teams by name
page integer optional Page number (default: 1)
limit integer optional Results per page (default: 25, max: 100)
Example Request
cURL
curl "https://slopfiles.com/api/v1/teams?q=hoarders"
Example Response
JSON - 200 OK
{
  "success": true,
  "data": [
    {
      "id": 7,
      "name": "FlagHoarders",
      "ban_count": 3,
      "player_count": 5
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 25,
    "total": 1,
    "pages": 1
  }
}
GET /api/v1/teams/[id] Get team details >

Retrieve full details for a specific team, including roster of players and complete ban history.

Path Parameters
ParameterTypeRequiredDescription
id integer required The team ID
Example Request
cURL
curl "https://slopfiles.com/api/v1/teams/7"
Example Response
JSON - 200 OK
{
  "success": true,
  "data": {
    "id": 7,
    "name": "FlagHoarders",
    "players": [
      { "id": 101, "name": "sk1d_r00t" },
      { "id": 102, "name": "x0r_ninja" },
      { "id": 103, "name": "pwn3d_u" }
    ],
    "bans": [
      {
        "id": 42,
        "event": "DEF CON CTF 2025",
        "status": "active",
        "date": "2025-08-10"
      }
    ]
  }
}
GET /api/v1/teams/[id]/bans Get team bans >

Retrieve all bans associated with a specific team.

Path Parameters
ParameterTypeRequiredDescription
id integer required The team ID
Example Request
cURL
curl "https://slopfiles.com/api/v1/teams/7/bans"
Example Response
JSON - 200 OK
{
  "success": true,
  "data": [
    {
      "id": 42,
      "event": "DEF CON CTF 2025",
      "status": "active",
      "reason": "Flag sharing between teams",
      "date": "2025-08-10"
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 25,
    "total": 3,
    "pages": 1
  }
}

Players

GET /api/v1/players List players >

Retrieve a paginated list of all players. Use the search parameter to filter by name or handle.

Query Parameters
ParameterTypeRequiredDescription
q string optional Search query to filter players by name
page integer optional Page number (default: 1)
limit integer optional Results per page (default: 25, max: 100)
Example Request
cURL
curl "https://slopfiles.com/api/v1/players?q=ninja"
Example Response
JSON - 200 OK
{
  "success": true,
  "data": [
    {
      "id": 102,
      "name": "x0r_ninja",
      "team": "FlagHoarders",
      "ban_count": 2
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 25,
    "total": 1,
    "pages": 1
  }
}
GET /api/v1/players/[id] Get player details >

Retrieve full details for a specific player, including their team affiliations and ban history.

Path Parameters
ParameterTypeRequiredDescription
id integer required The player ID
Example Request
cURL
curl "https://slopfiles.com/api/v1/players/102"
Example Response
JSON - 200 OK
{
  "success": true,
  "data": {
    "id": 102,
    "name": "x0r_ninja",
    "teams": [
      { "id": 7, "name": "FlagHoarders" }
    ],
    "bans": [
      {
        "id": 42,
        "team": "FlagHoarders",
        "event": "DEF CON CTF 2025",
        "status": "active",
        "date": "2025-08-10"
      }
    ]
  }
}
GET /api/v1/players/[id]/bans Get player bans >

Retrieve all bans involving a specific player.

Path Parameters
ParameterTypeRequiredDescription
id integer required The player ID
Example Request
cURL
curl "https://slopfiles.com/api/v1/players/102/bans"
Example Response
JSON - 200 OK
{
  "success": true,
  "data": [
    {
      "id": 42,
      "team": "FlagHoarders",
      "event": "DEF CON CTF 2025",
      "status": "active",
      "reason": "Flag sharing between teams",
      "date": "2025-08-10"
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 25,
    "total": 2,
    "pages": 1
  }
}

Events

GET /api/v1/events List events >

Retrieve a paginated list of all CTF events in the database. Use the search parameter to filter by name.

Query Parameters
ParameterTypeRequiredDescription
q string optional Search query to filter events by name
page integer optional Page number (default: 1)
limit integer optional Results per page (default: 25, max: 100)
Example Request
cURL
curl "https://slopfiles.com/api/v1/events?q=defcon"
Example Response
JSON - 200 OK
{
  "success": true,
  "data": [
    {
      "id": 15,
      "name": "DEF CON CTF 2025",
      "date": "2025-08-08",
      "ban_count": 12
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 25,
    "total": 3,
    "pages": 1
  }
}
GET /api/v1/events/[id] Get event details >

Retrieve full details for a specific event, including all bans issued during that event.

Path Parameters
ParameterTypeRequiredDescription
id integer required The event ID
Example Request
cURL
curl "https://slopfiles.com/api/v1/events/15"
Example Response
JSON - 200 OK
{
  "success": true,
  "data": {
    "id": 15,
    "name": "DEF CON CTF 2025",
    "date": "2025-08-08",
    "url": "https://ctftime.org/event/...",
    "bans": [
      {
        "id": 42,
        "team": "FlagHoarders",
        "status": "active",
        "reason": "Flag sharing between teams"
      }
    ],
    "ban_count": 12
  }
}
GET /api/v1/events/[id]/bans Get event bans >

Retrieve all bans from a specific event.

Path Parameters
ParameterTypeRequiredDescription
id integer required The event ID
Example Request
cURL
curl "https://slopfiles.com/api/v1/events/15/bans"
Example Response
JSON - 200 OK
{
  "success": true,
  "data": [
    {
      "id": 42,
      "team": "FlagHoarders",
      "status": "active",
      "reason": "Flag sharing between teams",
      "date": "2025-08-10"
    },
    {
      "id": 43,
      "team": "ScriptK1ddies",
      "status": "appealed",
      "reason": "Infrastructure attack against other teams",
      "date": "2025-08-09"
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 25,
    "total": 12,
    "pages": 1
  }
}

Stats

GET /api/v1/stats Aggregate statistics >

Retrieve aggregate statistics about the entire slopfiles database, including total counts and breakdowns.

Example Request
cURL
curl "https://slopfiles.com/api/v1/stats"
Example Response
JSON - 200 OK
{
  "success": true,
  "data": {
    "total_bans": 342,
    "active_bans": 187,
    "appealed_bans": 89,
    "revoked_bans": 66,
    "total_teams": 156,
    "total_players": 891,
    "total_events": 73
  }
}

No parameters required.