{
  "openapi": "3.1.0",
  "info": {
    "title": "Creative Cult API",
    "version": "1.0.0",
    "summary": "What players think of new video games, as data.",
    "description": "Creative Cult is a players-first games publication. It follows how players receive new video games: the daily share of player reviews that recommend each one, and what players praise and criticise, read from their own reviews. It keeps a release calendar and monthly best-of lists ranked by players, and never uses critic scores or press coverage. Every figure carries its date and source.\n\nRead-only, no key needed. Give each figure with its date and link the page it comes from on creativecult.digital. The same data is available to AI agents through the MCP server at https://creativecult.digital/mcp.",
    "contact": {
      "name": "Creative Cult",
      "email": "hello@creativecult.digital",
      "url": "https://creativecult.digital"
    }
  },
  "servers": [
    {
      "url": "https://creativecult.digital/api/v1"
    }
  ],
  "externalDocs": {
    "description": "The publication",
    "url": "https://creativecult.digital"
  },
  "tags": [
    {
      "name": "Games",
      "description": "Games with a report: what players say and recommend."
    },
    {
      "name": "Releases",
      "description": "The release calendar, month by month."
    },
    {
      "name": "Best of",
      "description": "Each month's new games, ranked by players."
    },
    {
      "name": "Research",
      "description": "Teardowns, the Reception Index and method pieces."
    }
  ],
  "paths": {
    "/": {
      "get": {
        "operationId": "getIndex",
        "summary": "What the API offers",
        "responses": {
          "200": {
            "description": "Endpoints and links.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    },
    "/games": {
      "get": {
        "operationId": "listGames",
        "tags": [
          "Games"
        ],
        "summary": "Every game with a report, newest release first",
        "responses": {
          "200": {
            "description": "The games.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "games"
                  ],
                  "properties": {
                    "games": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/GameSummary"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/games/{slug}": {
      "get": {
        "operationId": "getGame",
        "tags": [
          "Games"
        ],
        "summary": "What players say about one game",
        "description": "The share of player reviews that recommend the game and its date, what players praise and criticise, answers to common questions, and numbered sources.",
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "description": "The game's slug, from /games.",
            "schema": {
              "type": "string"
            },
            "example": "marvels-wolverine"
          }
        ],
        "responses": {
          "200": {
            "description": "The game's report.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Game"
                }
              }
            }
          },
          "404": {
            "description": "Nothing at this address.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/releases": {
      "get": {
        "operationId": "listReleaseMonths",
        "tags": [
          "Releases"
        ],
        "summary": "Months in the release calendar",
        "responses": {
          "200": {
            "description": "The months.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "asOf": {
                      "type": "string",
                      "format": "date"
                    },
                    "currentMonth": {
                      "type": "string"
                    },
                    "months": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "month",
                          "label",
                          "url",
                          "apiUrl"
                        ],
                        "properties": {
                          "month": {
                            "type": "string",
                            "example": "2026-10"
                          },
                          "label": {
                            "type": "string",
                            "example": "October 2026"
                          },
                          "games": {
                            "type": "integer"
                          },
                          "url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "apiUrl": {
                            "type": "string",
                            "format": "uri"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/releases/{month}": {
      "get": {
        "operationId": "getReleases",
        "tags": [
          "Releases"
        ],
        "summary": "Notable games releasing in a month",
        "parameters": [
          {
            "name": "month",
            "in": "path",
            "required": true,
            "description": "A month as YYYY-MM.",
            "schema": {
              "type": "string",
              "pattern": "^\\d{4}-\\d{2}$"
            },
            "example": "2026-10"
          }
        ],
        "responses": {
          "200": {
            "description": "The month's games.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "month",
                    "releases"
                  ],
                  "properties": {
                    "month": {
                      "type": "string"
                    },
                    "label": {
                      "type": "string"
                    },
                    "asOf": {
                      "type": "string",
                      "format": "date"
                    },
                    "url": {
                      "type": "string",
                      "format": "uri"
                    },
                    "releases": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/Release"
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Nothing at this address.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/best": {
      "get": {
        "operationId": "listBestMonths",
        "tags": [
          "Best of"
        ],
        "summary": "Months with a ranking, newest first",
        "responses": {
          "200": {
            "description": "The months.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "months": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "month",
                          "label",
                          "url",
                          "apiUrl"
                        ],
                        "properties": {
                          "month": {
                            "type": "string",
                            "example": "2026-10"
                          },
                          "label": {
                            "type": "string",
                            "example": "October 2026"
                          },
                          "ranked": {
                            "type": "integer"
                          },
                          "url": {
                            "type": "string",
                            "format": "uri"
                          },
                          "apiUrl": {
                            "type": "string",
                            "format": "uri"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/best/{month}": {
      "get": {
        "operationId": "getBestOf",
        "tags": [
          "Best of"
        ],
        "summary": "A month's new games ranked by players",
        "description": "Ranked by the share of player reviews that recommend each game, for games with at least minReviews reviews. Critic scores are never used.",
        "parameters": [
          {
            "name": "month",
            "in": "path",
            "required": true,
            "description": "A month as YYYY-MM.",
            "schema": {
              "type": "string",
              "pattern": "^\\d{4}-\\d{2}$"
            },
            "example": "2026-10"
          }
        ],
        "responses": {
          "200": {
            "description": "The ranking.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "month",
                    "ranked"
                  ],
                  "properties": {
                    "month": {
                      "type": "string"
                    },
                    "label": {
                      "type": "string"
                    },
                    "minReviews": {
                      "type": "integer"
                    },
                    "asOf": {
                      "type": "string",
                      "format": "date"
                    },
                    "url": {
                      "type": "string",
                      "format": "uri"
                    },
                    "ranked": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "rank",
                          "name",
                          "recommend"
                        ],
                        "properties": {
                          "rank": {
                            "type": "integer"
                          },
                          "name": {
                            "type": "string"
                          },
                          "developer": {
                            "type": "string"
                          },
                          "recommend": {
                            "$ref": "#/components/schemas/Figure"
                          },
                          "url": {
                            "anyOf": [
                              {
                                "type": "string",
                                "format": "uri"
                              },
                              {
                                "type": "null"
                              }
                            ]
                          }
                        }
                      }
                    },
                    "notRanked": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Nothing at this address.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/research": {
      "get": {
        "operationId": "listResearch",
        "tags": [
          "Research"
        ],
        "summary": "Research pieces, newest first",
        "responses": {
          "200": {
            "description": "The pieces.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "research"
                  ],
                  "properties": {
                    "research": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/ResearchItem"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Figure": {
        "type": "object",
        "description": "The share of player reviews that recommend a game, on one day.",
        "required": [
          "share",
          "percent",
          "reviews",
          "asOf"
        ],
        "properties": {
          "share": {
            "type": "number",
            "minimum": 0,
            "maximum": 1,
            "example": 0.74
          },
          "percent": {
            "type": "string",
            "example": "74%"
          },
          "reviews": {
            "type": "integer",
            "description": "Reviews counted.",
            "example": 6011
          },
          "asOf": {
            "type": "string",
            "format": "date",
            "description": "The day the reviews were counted."
          }
        }
      },
      "Source": {
        "type": "object",
        "required": [
          "id",
          "label",
          "url"
        ],
        "properties": {
          "id": {
            "type": "integer",
            "description": "The footnote number on the page."
          },
          "label": {
            "type": "string"
          },
          "url": {
            "type": "string",
            "format": "uri"
          }
        }
      },
      "GameSummary": {
        "type": "object",
        "required": [
          "slug",
          "name",
          "releaseDate",
          "coverage",
          "recommend",
          "url"
        ],
        "properties": {
          "slug": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "developer": {
            "type": "string"
          },
          "publisher": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "releaseDate": {
            "type": "string",
            "format": "date"
          },
          "coverage": {
            "type": "string",
            "enum": [
              "launch-tracker",
              "game-report"
            ]
          },
          "recommend": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Figure"
              },
              {
                "type": "null"
              }
            ]
          },
          "summary": {
            "type": "string"
          },
          "url": {
            "type": "string",
            "format": "uri"
          },
          "markdownUrl": {
            "type": "string",
            "format": "uri"
          },
          "apiUrl": {
            "type": "string",
            "format": "uri"
          }
        }
      },
      "Game": {
        "allOf": [
          {
            "$ref": "#/components/schemas/GameSummary"
          },
          {
            "type": "object",
            "properties": {
              "verdict": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "whatPlayersSay": {
                "type": "string"
              },
              "findings": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "title": {
                      "type": "string"
                    },
                    "text": {
                      "type": "string"
                    }
                  }
                }
              },
              "readOn": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "date"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "updates": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "day": {
                      "type": "string",
                      "example": "Day 7"
                    },
                    "date": {
                      "type": "string",
                      "format": "date"
                    },
                    "summary": {
                      "type": "string"
                    }
                  }
                }
              },
              "sales": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "claim": {
                        "type": "string"
                      },
                      "kind": {
                        "type": "string",
                        "enum": [
                          "announced",
                          "estimate"
                        ]
                      }
                    }
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "questions": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "question": {
                      "type": "string"
                    },
                    "answer": {
                      "type": "string"
                    }
                  }
                }
              },
              "sources": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/Source"
                }
              }
            }
          }
        ]
      },
      "Release": {
        "type": "object",
        "required": [
          "name",
          "date",
          "platforms",
          "out",
          "source"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "kind": {
            "anyOf": [
              {
                "type": "string",
                "description": "Expansion, remaster, collection or new edition."
              },
              {
                "type": "null"
              }
            ]
          },
          "developer": {
            "type": "string"
          },
          "publisher": {
            "type": "string"
          },
          "date": {
            "type": "string",
            "description": "A day (2026-10-23), or a month (2027-02) when that's all that's announced."
          },
          "platforms": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "priceUSD": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "out": {
            "type": "boolean"
          },
          "recommend": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Figure"
              },
              {
                "type": "null"
              }
            ]
          },
          "url": {
            "anyOf": [
              {
                "type": "string",
                "format": "uri"
              },
              {
                "type": "null"
              }
            ]
          },
          "source": {
            "type": "object",
            "properties": {
              "label": {
                "type": "string"
              },
              "url": {
                "type": "string",
                "format": "uri"
              }
            }
          }
        }
      },
      "ResearchItem": {
        "type": "object",
        "required": [
          "title",
          "type",
          "url"
        ],
        "properties": {
          "title": {
            "type": "string"
          },
          "type": {
            "type": "string",
            "example": "Teardown"
          },
          "summary": {
            "type": "string"
          },
          "author": {
            "type": "string"
          },
          "publishedAt": {
            "type": "string",
            "format": "date"
          },
          "updatedAt": {
            "type": "string",
            "format": "date"
          },
          "games": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "url": {
            "type": "string",
            "format": "uri"
          }
        }
      },
      "Error": {
        "type": "object",
        "required": [
          "error",
          "message"
        ],
        "properties": {
          "error": {
            "type": "string"
          },
          "message": {
            "type": "string"
          }
        }
      }
    }
  }
}
