Skip to main content
GET
/
api
/
public
/
v1
/
games
/
{game}
/
decks
/
my
List the caller's own decks
curl --request GET \
  --url https://api.flexslot.gg/api/public/v1/games/{game}/decks/my \
  --header 'Authorization: Bearer <token>' \
  --header 'X-Partner-Id: <api-key>' \
  --header 'X-Signature: <api-key>'
import requests

url = "https://api.flexslot.gg/api/public/v1/games/{game}/decks/my"

headers = {
"X-Signature": "<api-key>",
"X-Partner-Id": "<api-key>",
"Authorization": "Bearer <token>"
}

response = requests.get(url, headers=headers)

print(response.text)
const options = {
method: 'GET',
headers: {
'X-Signature': '<api-key>',
'X-Partner-Id': '<api-key>',
Authorization: 'Bearer <token>'
}
};

fetch('https://api.flexslot.gg/api/public/v1/games/{game}/decks/my', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => "https://api.flexslot.gg/api/public/v1/games/{game}/decks/my",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"X-Partner-Id: <api-key>",
"X-Signature: <api-key>"
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
package main

import (
"fmt"
"net/http"
"io"
)

func main() {

url := "https://api.flexslot.gg/api/public/v1/games/{game}/decks/my"

req, _ := http.NewRequest("GET", url, nil)

req.Header.Add("X-Signature", "<api-key>")
req.Header.Add("X-Partner-Id", "<api-key>")
req.Header.Add("Authorization", "Bearer <token>")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.get("https://api.flexslot.gg/api/public/v1/games/{game}/decks/my")
.header("X-Signature", "<api-key>")
.header("X-Partner-Id", "<api-key>")
.header("Authorization", "Bearer <token>")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.flexslot.gg/api/public/v1/games/{game}/decks/my")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["X-Signature"] = '<api-key>'
request["X-Partner-Id"] = '<api-key>'
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
{
  "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "name": "<string>",
  "author": {},
  "game": "<string>",
  "visibility": [
    "<string>"
  ],
  "format": {},
  "archetype": "<string>",
  "views": 123,
  "likes": 123,
  "hasGuide": true,
  "hasSideboardGuide": true,
  "hasVideo": true,
  "editedAt": "2023-11-07T05:31:56Z",
  "createdAt": "2023-11-07T05:31:56Z",
  "sourceProvider": "<string>",
  "featured_cards": [
    {
      "slot": "<string>",
      "slotKey": "<string>",
      "label": "<string>",
      "sortOrder": 123,
      "foil": true,
      "cardId": "<string>",
      "name": "<string>",
      "imageUrl": "<string>",
      "type_line": "<string>",
      "set": "<string>",
      "collector_number": "<string>"
    }
  ],
  "section_counts": {},
  "colors": [
    "<string>"
  ]
}

Authorizations

X-Signature
string
header
required

HMAC-SHA256 over canonical request string. Format: v1.<unix_seconds>.<hex_hmac_sha256>.

X-Partner-Id
string
header
required

Partner identifier slug. Required alongside X-Signature for HMAC auth.

Authorization
string
header
required

User-issued personal access token (format: flx_pat_).

Path Parameters

game
string
required

Query Parameters

authorId
string

Filter by deck author (firebase user id).

createdAfter
string<date-time>

ISO 8601 lower bound on creation timestamp (inclusive).

createdBefore
string<date-time>

ISO 8601 upper bound on creation timestamp (inclusive).

editedAfter
string<date-time>

ISO 8601 lower bound on last-edit timestamp (inclusive).

editedBefore
string<date-time>

ISO 8601 upper bound on last-edit timestamp (inclusive).

formatId
string<uuid>

Filter by format id.

hasGuide
boolean

Filter to decks that do/don't have in-deck strategy notes.

hasSideboardGuide
boolean

Filter to decks that do/don't have an attached sideboard guide.

hasVideo
boolean

Filter to decks that do/don't link a YouTube video.

include
enum<string>

Set to summary to add featured_cards, section_counts and colors to each list item — enough to render a rich deck card without a per-deck detail fetch. Omitted by default to keep the list lean.

Available options:
summary

Filter by format-legality flag.

limit
integer

Page size (max 100, default 20).

order
enum<string>

Sort direction. Defaults to desc.

Available options:
asc,
desc
page
integer

1-indexed page number.

q
string

Substring filter on deck name (case-insensitive).

sort
enum<string>

Sort key. Defaults to editedAt.

Available options:
createdAt,
editedAt,
likes,
trending,
views

Response

200 - application/json

Provides featured_cards for any deck serializer.

Relies on special_cards__card (and legacy commander/partner/companion FKs) being prefetched/selected by the caller's selector. The GameSpecialCardType lookup is cached on serializer context so a whole page of decks costs one query, not one per deck.

id
string<uuid>
required
read-only
name
string
required
read-only
author
object | null
required
read-only
game
string
required
read-only
visibility
string[]
required
read-only
format
object | null
required
read-only
archetype
string | null
required
read-only
views
integer
required
read-only
likes
integer
required
read-only
hasGuide
boolean
required
read-only
hasSideboardGuide
boolean
required
read-only
hasVideo
boolean
required
read-only
editedAt
string<date-time>
required
read-only
createdAt
string<date-time>
required
read-only
sourceProvider
string | null
required
read-only
section_counts
object
read-only
colors
string[]
read-only