> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cromos.so/llms.txt
> Use this file to discover all available pages before exploring further.

# List series

> Every series in the catalog.

Around twenty rows, paged by cursor like every list here, though in practice one page holds
them all.

Pass `q` to search by name. Rows then come back best-match first, each carrying a `score`, and
the cursor keeps working exactly as it does without it. At this size a search is a convenience
rather than a necessity — see [List cards](/cards/list) for how ranking and ties behave.

Rows carry the series and its logo but not its expansions. Fetch
[the series](/series/get) for those, or [list expansions](/expansions/list) filtered by
`series_id`.


## OpenAPI

````yaml openapi.json GET /v1/series
openapi: 3.0.0
info:
  title: Cromos API
  version: 1.0.0
servers:
  - url: https://api.cromos.so
security:
  - bearerAuth: []
paths:
  /v1/series:
    get:
      tags:
        - Series
      summary: List series
      description: >-
        Every series, ordered by id. A series is the top level of the catalog:
        it groups the expansions released under one banner, such as Sword &
        Shield or Scarlet & Violet. Pass `q` to search by name — results then
        come back best-match first, each carrying a `score`, and the cursor
        keeps working exactly as it does without it.
      parameters:
        - schema:
            type: string
            description: >-
              How many rows to return. Defaults to 50 and stops at 200; a larger
              value is clamped, not rejected.
          required: false
          description: >-
            How many rows to return. Defaults to 50 and stops at 200; a larger
            value is clamped, not rejected.
          name: limit
          in: query
        - schema:
            type: string
            description: >-
              The `next_cursor` from the previous page. Omit it for the first
              page — a cursor this endpoint did not issue is ignored, and you
              get the first page back.
          required: false
          description: >-
            The `next_cursor` from the previous page. Omit it for the first page
            — a cursor this endpoint did not issue is ignored, and you get the
            first page back.
          name: cursor
          in: query
        - schema:
            type: string
            minLength: 1
            description: >-
              Search series by name. Ranked best-match first, every row carrying
              its `score`, and the cursor keeps working.
          required: false
          description: >-
            Search series by name. Ranked best-match first, every row carrying
            its `score`, and the cursor keeps working.
          name: q
          in: query
      responses:
        '200':
          description: Series list
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      items:
                        type: array
                        items:
                          allOf:
                            - $ref: '#/components/schemas/Series'
                            - type: object
                              properties:
                                score:
                                  type: number
                                  description: >-
                                    How closely this row matched `q`, from 0 to
                                    1. Present only when `q` is set; the key is
                                    absent otherwise. Ties at the top score are
                                    common — the tie-break is `id` order, not
                                    relevance.
                      next_cursor:
                        type: string
                        nullable: true
                        description: >-
                          Pass this back as `cursor` for the next page. `null`
                          means this was the last.
                    required:
                      - items
                      - next_cursor
                  error:
                    type: object
                    nullable: true
                required:
                  - data
                  - error
              example:
                data:
                  items:
                    - id: base
                      name: Base
                      logo:
                        low: https://assets.cromos.so/series/base/logo/low.webp
                        high: https://assets.cromos.so/series/base/logo/high.webp
                    - id: bw
                      name: Black & White
                      logo:
                        low: https://assets.cromos.so/series/bw/logo/low.webp
                        high: https://assets.cromos.so/series/bw/logo/high.webp
                    - id: col
                      name: Call of Legends
                      logo:
                        low: https://assets.cromos.so/series/col/logo/low.webp
                        high: https://assets.cromos.so/series/col/logo/high.webp
                  next_cursor: ImNvbCI
                error: null
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  schemas:
    Series:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        logo:
          $ref: '#/components/schemas/ImageUrls'
      required:
        - id
        - name
        - logo
    ErrorResponse:
      type: object
      properties:
        data:
          type: object
          nullable: true
        error:
          $ref: '#/components/schemas/ApiError'
      required:
        - data
        - error
    ImageUrls:
      type: object
      nullable: true
      properties:
        low:
          type: string
          format: uri
          description: Thumbnail-sized rendition. May be the same URL as `high`.
        high:
          type: string
          format: uri
          description: Full-sized rendition. May be the same URL as `low`.
      required:
        - low
        - high
    ApiError:
      type: object
      properties:
        code:
          type: string
          description: A stable machine-readable token. Switch on this, not on `message`.
        message:
          type: string
          description: A human-readable sentence. Always present, never empty.
      required:
        - code
        - message
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````