Disney API (REST)

RESTful Disney character API. Four GET endpoints: a service index at the root, a paginated character list at /character, and two by-id endpoints (/character/:id and the plural alias /characters/:id). Supports field-level substring filters on name, films, shortFilms, tvShows, videoGames, parkAttractions, allies, enemies, and alignment.

OpenAPI Specification

disney-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Disney API
  description: >-
    Community-maintained RESTful and GraphQL API exposing a database of
    9,820+ Disney characters and the films, short films, TV shows, video
    games, and park attractions they appear in. The API is unauthenticated
    and read-only — every endpoint is a GET. The project is open source
    (BSD-3-Clause) at https://github.com/ManuCastrillonM/disney-api and is
    hosted at https://api.disneyapi.dev. Documentation is published at
    https://disneyapi.dev and a status page is available at
    https://status.disneyapi.dev. Disney and Disney characters are
    trademarks of The Walt Disney Company; this project is community
    fan-content and is not affiliated with or endorsed by Disney.
  version: '1.0.0'
  contact:
    name: Disney API (community project)
    url: https://disneyapi.dev
  license:
    name: BSD-3-Clause
    url: https://github.com/ManuCastrillonM/disney-api/blob/main/LICENSE
  x-generated-from: documentation+source-code
  x-last-validated: '2026-05-29'
servers:
  - url: https://api.disneyapi.dev
    description: Production REST endpoint
tags:
  - name: Characters
    description: Endpoints that list, retrieve, and filter Disney characters.
  - name: Index
    description: Service discovery endpoint that enumerates available REST routes.
paths:
  /:
    get:
      operationId: getServiceIndex
      summary: Disney API Get Service Index
      description: >-
        Returns a JSON object enumerating the public REST endpoint routes
        exposed by the service. Useful for runtime service discovery and
        for hand-rolled clients that want to confirm the available paths.
      tags:
        - Index
      responses:
        '200':
          description: A map of endpoint names to URL templates.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceIndex'
              examples:
                GetServiceIndex200Example:
                  summary: Default getServiceIndex 200 response
                  x-microcks-default: true
                  value:
                    getCharacter: /character
                    getCharacterById: /character/:id
                    getCharactersById: /characters/:id
        '500':
          description: Server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                GetServiceIndex500Example:
                  summary: Default getServiceIndex 500 response
                  value:
                    message: Internal server error
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /character:
    get:
      operationId: listCharacters
      summary: Disney API List Characters
      description: >-
        Returns a paginated list of Disney characters. Supports paging via
        `page` and `pageSize`, and supports filtering by any of the
        character schema fields (`name`, `films`, `shortFilms`, `tvShows`,
        `videoGames`, `parkAttractions`, `allies`, `enemies`, `alignment`).
        Filter values are matched as case-insensitive substrings on the
        server side. When more than one record matches, `data` is an array
        of character records; when a single record matches, `data` is the
        record itself.
      tags:
        - Characters
      parameters:
        - $ref: '#/components/parameters/Page'
        - $ref: '#/components/parameters/PageSize'
        - $ref: '#/components/parameters/Name'
        - $ref: '#/components/parameters/Films'
        - $ref: '#/components/parameters/ShortFilms'
        - $ref: '#/components/parameters/TvShows'
        - $ref: '#/components/parameters/VideoGames'
        - $ref: '#/components/parameters/ParkAttractions'
        - $ref: '#/components/parameters/Allies'
        - $ref: '#/components/parameters/Enemies'
        - $ref: '#/components/parameters/Alignment'
      responses:
        '200':
          description: A paginated character collection.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CharacterPage'
              examples:
                ListCharacters200Example:
                  summary: Default listCharacters 200 response
                  x-microcks-default: true
                  value:
                    info:
                      count: 2
                      totalPages: 4911
                      previousPage: null
                      nextPage: http://api.disneyapi.dev/character?page=2&pageSize=2
                    data:
                      - _id: 112
                        name: Achilles
                        films:
                          - Hercules (film)
                        shortFilms: []
                        tvShows:
                          - Hercules (TV series)
                        videoGames:
                          - Kingdom Hearts III
                        parkAttractions: []
                        allies: []
                        enemies: []
                        imageUrl: https://static.wikia.nocookie.net/disney/images/6/67/HATS_Achilles.png
                        url: https://api.disneyapi.dev/characters/112
                      - _id: 18
                        name: Abigail the Cow
                        films:
                          - The Fox and the Hound
                          - The Fox and the Hound 2
                        shortFilms: []
                        tvShows: []
                        videoGames: []
                        parkAttractions: []
                        allies: []
                        enemies: []
                        imageUrl: https://static.wikia.nocookie.net/disney/images/0/05/Fox-disneyscreencaps_com-901.jpg
                        url: https://api.disneyapi.dev/characters/18
        '500':
          description: Server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                ListCharacters500Example:
                  summary: Default listCharacters 500 response
                  value:
                    message: Internal server error
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /character/{id}:
    get:
      operationId: getCharacterById
      summary: Disney API Get Character By Id
      description: >-
        Retrieves a single Disney character by numeric id. The character
        is returned as a single object under `data` (not wrapped in an
        array). If the id is not found, `data` is an empty array.
      tags:
        - Characters
      parameters:
        - $ref: '#/components/parameters/CharacterId'
      responses:
        '200':
          description: A single character record.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CharacterSingle'
              examples:
                GetCharacterById200Example:
                  summary: Default getCharacterById 200 response
                  x-microcks-default: true
                  value:
                    info:
                      count: 1
                      totalPages: 1
                      previousPage: null
                      nextPage: null
                    data:
                      _id: 308
                      name: Queen Arianna
                      films:
                        - Tangled
                        - "Tangled: Before Ever After"
                      shortFilms:
                        - Tangled Ever After
                        - Hare Peace
                        - "The Simpsons: May the 12th Be With You"
                      tvShows:
                        - Once Upon a Time
                        - "Tangled: The Series"
                      videoGames:
                        - Disney Princess Enchanting Storybooks
                        - Hidden Worlds
                        - Disney Crossy Road
                        - Kingdom Hearts III
                        - Disney Speedstorm
                      parkAttractions:
                        - Celebrate the Magic
                        - "Jingle Bell, Jingle BAM!"
                      allies: []
                      enemies: []
                      imageUrl: https://static.wikia.nocookie.net/disney/images/1/15/Arianna_Tangled.jpg
                      url: https://api.disneyapi.dev/characters/308
        '500':
          description: Server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                GetCharacterById500Example:
                  summary: Default getCharacterById 500 response
                  value:
                    message: Internal server error
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /characters/{id}:
    get:
      operationId: getCharactersById
      summary: Disney API Get Characters By Id (Plural Alias)
      description: >-
        Plural-path alias for `/character/{id}`. Same behavior as
        `GET /character/{id}` — retrieves a single Disney character by
        numeric id. Maintained because `imageUrl` and the `url` field on
        every record point to `https://api.disneyapi.dev/characters/{id}`.
      tags:
        - Characters
      parameters:
        - $ref: '#/components/parameters/CharacterId'
      responses:
        '200':
          description: A single character record.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CharacterSingle'
              examples:
                GetCharactersById200Example:
                  summary: Default getCharactersById 200 response
                  x-microcks-default: true
                  value:
                    info:
                      count: 1
                      totalPages: 1
                      previousPage: null
                      nextPage: null
                    data:
                      _id: 308
                      name: Queen Arianna
                      films:
                        - Tangled
                      shortFilms: []
                      tvShows:
                        - "Tangled: The Series"
                      videoGames: []
                      parkAttractions: []
                      allies: []
                      enemies: []
                      imageUrl: https://static.wikia.nocookie.net/disney/images/1/15/Arianna_Tangled.jpg
                      url: https://api.disneyapi.dev/characters/308
        '500':
          description: Server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                GetCharactersById500Example:
                  summary: Default getCharactersById 500 response
                  value:
                    message: Internal server error
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
components:
  parameters:
    Page:
      name: page
      in: query
      required: false
      description: 1-based page index. Defaults to 1.
      schema:
        type: integer
        minimum: 1
        default: 1
        example: 1
    PageSize:
      name: pageSize
      in: query
      required: false
      description: Number of records per page. Defaults to 50.
      schema:
        type: integer
        minimum: 1
        default: 50
        example: 50
    CharacterId:
      name: id
      in: path
      required: true
      description: Numeric character id (mongoose-sequence integer).
      schema:
        type: integer
        minimum: 1
        example: 308
    Name:
      name: name
      in: query
      required: false
      description: Case-insensitive substring filter against the `name` field.
      schema:
        type: string
        example: Mickey
    Films:
      name: films
      in: query
      required: false
      description: Case-insensitive substring filter against the `films` array.
      schema:
        type: string
        example: Tangled
    ShortFilms:
      name: shortFilms
      in: query
      required: false
      description: Case-insensitive substring filter against the `shortFilms` array.
      schema:
        type: string
        example: Tangled Ever After
    TvShows:
      name: tvShows
      in: query
      required: false
      description: Case-insensitive substring filter against the `tvShows` array.
      schema:
        type: string
        example: Once Upon a Time
    VideoGames:
      name: videoGames
      in: query
      required: false
      description: Case-insensitive substring filter against the `videoGames` array.
      schema:
        type: string
        example: Kingdom Hearts III
    ParkAttractions:
      name: parkAttractions
      in: query
      required: false
      description: Case-insensitive substring filter against the `parkAttractions` array.
      schema:
        type: string
        example: Celebrate the Magic
    Allies:
      name: allies
      in: query
      required: false
      description: Case-insensitive substring filter against the `allies` array.
      schema:
        type: string
        example: Mickey Mouse
    Enemies:
      name: enemies
      in: query
      required: false
      description: Case-insensitive substring filter against the `enemies` array.
      schema:
        type: string
        example: Pete
    Alignment:
      name: alignment
      in: query
      required: false
      description: Case-insensitive substring filter against the `alignment` field.
      schema:
        type: string
        example: Good
  schemas:
    Character:
      type: object
      title: Character
      description: A single Disney character record sourced from the Disney Wiki.
      required:
        - _id
        - name
        - url
      properties:
        _id:
          type: integer
          description: Auto-incrementing numeric character id assigned by the service.
          example: 308
        name:
          type: string
          description: Display name of the Disney character.
          example: Queen Arianna
        films:
          type: array
          description: Feature films in which the character appears.
          items:
            type: string
            description: Film title.
            example: Tangled
        shortFilms:
          type: array
          description: Short films in which the character appears.
          items:
            type: string
            description: Short film title.
            example: Tangled Ever After
        tvShows:
          type: array
          description: TV shows in which the character appears.
          items:
            type: string
            description: TV show title.
            example: "Tangled: The Series"
        videoGames:
          type: array
          description: Video games in which the character appears.
          items:
            type: string
            description: Video game title.
            example: Kingdom Hearts III
        parkAttractions:
          type: array
          description: Disney park attractions in which the character appears.
          items:
            type: string
            description: Park attraction name.
            example: Celebrate the Magic
        allies:
          type: array
          description: Named allies of the character within Disney canon.
          items:
            type: string
            description: Ally name.
            example: Mickey Mouse
        enemies:
          type: array
          description: Named enemies of the character within Disney canon.
          items:
            type: string
            description: Enemy name.
            example: Pete
        alignment:
          type: string
          description: Moral alignment of the character (e.g. Good, Bad, Neutral) when known.
          example: Good
        sourceUrl:
          type: string
          format: uri
          description: Upstream Disney Wiki URL from which the record was sourced.
          example: https://disney.fandom.com/wiki/Queen_Arianna
        imageUrl:
          type: string
          format: uri
          description: URL of a character thumbnail image hosted on the Disney Fandom Wiki CDN.
          example: https://static.wikia.nocookie.net/disney/images/1/15/Arianna_Tangled.jpg
        url:
          type: string
          format: uri
          description: Canonical self URL for this character record.
          example: https://api.disneyapi.dev/characters/308
    PageInfo:
      type: object
      title: PageInfo
      description: Pagination envelope returned alongside every character response.
      required:
        - count
        - totalPages
      properties:
        count:
          type: integer
          description: Number of records returned in this page (`data` length, or 1 when `data` is a single object).
          example: 2
        totalPages:
          type: integer
          description: Total number of pages available for the current filter at the current `pageSize`.
          example: 4911
        previousPage:
          type: string
          nullable: true
          format: uri
          description: Absolute URL to the previous page of results, or null on the first page.
          example: null
        nextPage:
          type: string
          nullable: true
          format: uri
          description: Absolute URL to the next page of results, or null on the last page.
          example: http://api.disneyapi.dev/character?page=2&pageSize=2
    CharacterPage:
      type: object
      title: CharacterPage
      description: Paginated character list response. `data` is an array when multiple characters match, or a single object when one matches.
      required:
        - info
        - data
      properties:
        info:
          $ref: '#/components/schemas/PageInfo'
        data:
          oneOf:
            - type: array
              description: Multiple character records matching the request.
              items:
                $ref: '#/components/schemas/Character'
            - $ref: '#/components/schemas/Character'
            - type: array
              maxItems: 0
              description: Empty array indicating no records matched.
              items: {}
    CharacterSingle:
      type: object
      title: CharacterSingle
      description: Single-character response envelope returned by the by-id endpoints.
      required:
        - info
        - data
      properties:
        info:
          $ref: '#/components/schemas/PageInfo'
        data:
          oneOf:
            - $ref: '#/components/schemas/Character'
            - type: array
              maxItems: 0
              description: Empty array indicating no character was found for the given id.
              items: {}
    ServiceIndex:
      type: object
      title: ServiceIndex
      description: Map of named endpoint operations to their URL templates.
      required:
        - getCharacter
        - getCharacterById
        - getCharactersById
      properties:
        getCharacter:
          type: string
          description: URL template for the paginated character list endpoint.
          example: /character
        getCharacterById:
          type: string
          description: URL template for the single-character-by-id endpoint.
          example: /character/:id
        getCharactersById:
          type: string
          description: URL template for the plural-path single-character alias.
          example: /characters/:id
    Error:
      type: object
      title: Error
      description: Error envelope returned by the global error handler when an unexpected exception occurs.
      required:
        - message
      properties:
        message:
          type: string
          description: Human-readable error message describing what went wrong.
          example: Internal server error