# Star Trek API

> Look up the Star Trek universe through STAPI, the community-run Star Trek API: series, seasons, episodes, and movies; characters, performers, and staff; species, planets, locations, and organizations; spacecraft, spacecraft classes, technology, and weapons; and the books. No account or API key required.

App · Film, TV & Fandom · 33 actions. Web page: https://docs.lodol.com/docs/integrations/star-trek-api

## Actions

### Get a book

Get one book by its uid, including its authors, artists, publishers, series, and the characters in it.

**Inputs**

- Book ID (`uid`, text, required): The book's unique ID from a search result, for example BOMA0000154026.

**Outputs**

- `authors` (list)
- `characters` (list)
- `publishedYear` (number)
- `publishers` (list)
- `title` (text)
- `uid` (text)

**Example output**

```json
{
  "authors": [
    {
      "name": "Judith Reeves-Stevens",
      "uid": "STMA0000000005"
    }
  ],
  "characters": [
    {
      "name": "James T. Kirk",
      "uid": "CHMA0000000002"
    }
  ],
  "novel": true,
  "numberOfPages": 407,
  "publishedYear": 1990,
  "publishers": [
    {
      "name": "Pocket Books",
      "uid": "COMA0000000001"
    }
  ],
  "title": "Prime Directive",
  "uid": "BOMA0000154026"
}
```

### Get a character

Get one character by their uid, including their species, titles, occupations, organizations, relationships, the performers who played them, and the episodes and movies they appear in.

**Inputs**

- Character ID (`uid`, text, required): The character's unique ID from a search result, for example CHMA0000069222.

**Outputs**

- `characterSpecies` (list)
- `episodes` (list)
- `gender` (text)
- `movies` (list)
- `name` (text)
- `organizations` (list)
- `performers` (list)
- `titles` (list)
- `uid` (text)

**Example output**

```json
{
  "characterSpecies": [
    {
      "name": "Human",
      "uid": "SPMA0000000001"
    }
  ],
  "deceased": false,
  "episodes": [
    {
      "title": "Encounter at Farpoint",
      "uid": "EPMA0000000003"
    }
  ],
  "gender": "M",
  "movies": [
    {
      "title": "Star Trek: First Contact",
      "uid": "MOMA0000000008"
    }
  ],
  "name": "Jean-Luc Picard",
  "organizations": [
    {
      "name": "Starfleet",
      "uid": "ORMA0000000001"
    }
  ],
  "performers": [
    {
      "name": "Patrick Stewart",
      "uid": "PEMA0000000001"
    }
  ],
  "titles": [
    {
      "name": "Captain",
      "uid": "TIMA0000000001"
    }
  ],
  "uid": "CHMA0000069222",
  "yearOfBirth": 2305
}
```

### Get a location

Get one location by its uid, with everything STAPI classifies it as.

**Inputs**

- Location ID (`uid`, text, required): The location's unique ID from a search result, for example LOMA0000277577.

**Outputs**

- `earthlyLocation` (true/false)
- `establishment` (true/false)
- `name` (text)
- `uid` (text)

**Example output**

```json
{
  "alternateReality": false,
  "buildingInterior": true,
  "earthlyLocation": false,
  "establishment": true,
  "mirror": false,
  "name": "Ten Forward",
  "uid": "LOMA0000277577"
}
```

### Get a movie

Get one movie by its uid, including its directors, writers, producers, performers, and characters.

**Inputs**

- Movie ID (`uid`, text, required): The movie's unique ID from a search result, for example MOMA0000092393.

**Outputs**

- `characters` (list)
- `directors` (list)
- `performers` (list)
- `title` (text)
- `uid` (text)
- `usReleaseDate` (text)
- `writers` (list)

**Example output**

```json
{
  "characters": [
    {
      "name": "James T. Kirk",
      "uid": "CHMA0000000002"
    }
  ],
  "directors": [
    {
      "name": "Nicholas Meyer",
      "uid": "STMA0000000003"
    }
  ],
  "title": "Star Trek II: The Wrath of Khan",
  "uid": "MOMA0000092393",
  "usReleaseDate": "1982-06-04",
  "yearFrom": 2285,
  "yearTo": 2285
}
```

### Get a performer

Get one performer by their uid, including the characters they played and the episodes and movies they appeared in.

**Inputs**

- Performer ID (`uid`, text, required): The performer's unique ID from a search result, for example PEMA0000268053.

**Outputs**

- `characters` (list)
- `episodesPerformances` (list)
- `moviesPerformances` (list)
- `name` (text)
- `uid` (text)

**Example output**

```json
{
  "characters": [
    {
      "name": "Spock",
      "uid": "CHMA0000000003"
    }
  ],
  "dateOfBirth": "1931-03-26",
  "dateOfDeath": "2015-02-27",
  "episodesPerformances": [
    {
      "title": "The Cage",
      "uid": "EPMA0000000002"
    }
  ],
  "gender": "M",
  "moviesPerformances": [
    {
      "title": "Star Trek II: The Wrath of Khan",
      "uid": "MOMA0000092393"
    }
  ],
  "name": "Leonard Nimoy",
  "uid": "PEMA0000268053"
}
```

### Get a season

Get one season by its uid, including its series and every episode in it.

**Inputs**

- Season ID (`uid`, text, required): The season's unique ID from a search result, for example SAMA0000212566.

**Outputs**

- `episodes` (list)
- `seasonNumber` (number)
- `series` (object)
- `title` (text)
- `uid` (text)

**Example output**

```json
{
  "episodes": [
    {
      "title": "Encounter at Farpoint",
      "uid": "EPMA0000000003"
    }
  ],
  "numberOfEpisodes": 26,
  "seasonNumber": 1,
  "series": {
    "title": "Star Trek: The Next Generation",
    "uid": "SEMA0000073238"
  },
  "title": "TNG Season 1",
  "uid": "SAMA0000212566"
}
```

### Get a series

Get one TV series by its uid, including every season and episode, the production company, and the original broadcaster.

**Inputs**

- Series ID (`uid`, text, required): The series' unique ID from a search result, for example SEMA0000073238.

**Outputs**

- `abbreviation` (text)
- `episodes` (list)
- `seasons` (list)
- `title` (text)
- `uid` (text)

**Example output**

```json
{
  "abbreviation": "TNG",
  "episodes": [
    {
      "title": "Encounter at Farpoint",
      "uid": "EPMA0000000003"
    }
  ],
  "episodesCount": 176,
  "originalRunEndDate": "1994-05-23",
  "originalRunStartDate": "1987-09-28",
  "productionEndYear": 1994,
  "productionStartYear": 1987,
  "seasons": [
    {
      "title": "TNG Season 1",
      "uid": "SAMA0000212566"
    }
  ],
  "seasonsCount": 7,
  "title": "Star Trek: The Next Generation",
  "uid": "SEMA0000073238"
}
```

### Get a spacecraft

Get one spacecraft by its uid, including its class, owner, operator, and type.

**Inputs**

- Spacecraft ID (`uid`, text, required): The spacecraft's unique ID from a search result, for example SRMA0000245113.

**Outputs**

- `name` (text)
- `operator` (object)
- `owner` (object)
- `registry` (text)
- `spacecraftClass` (object)
- `status` (text)
- `uid` (text)

**Example output**

```json
{
  "name": "USS Enterprise",
  "operator": {
    "name": "Starfleet",
    "uid": "ORMA0000000001"
  },
  "registry": "NCC-1701-D",
  "spacecraftClass": {
    "name": "Galaxy class",
    "uid": "SCMA0000284244"
  },
  "spacecraftTypes": [
    {
      "name": "Explorer",
      "uid": "SPTY0000000001"
    }
  ],
  "status": "Destroyed",
  "uid": "SRMA0000245113"
}
```

### Get a spacecraft class

Get one spacecraft class by its uid, including its armaments, defenses, operators, and the ships built to it.

**Inputs**

- Spacecraft class ID (`uid`, text, required): The class' unique ID from a search result, for example SCMA0000284244.

**Outputs**

- `armaments` (list)
- `defenses` (list)
- `name` (text)
- `numberOfDecks` (number)
- `spacecrafts` (list)
- `uid` (text)
- `warpCapable` (true/false)

**Example output**

```json
{
  "armaments": [
    {
      "name": "Phaser array",
      "uid": "WEMA0000000001"
    }
  ],
  "crew": "1012",
  "defenses": [
    {
      "name": "Deflector shield",
      "uid": "TEMA0000000001"
    }
  ],
  "name": "Galaxy class",
  "numberOfDecks": 42,
  "operators": [
    {
      "name": "Starfleet",
      "uid": "ORMA0000000001"
    }
  ],
  "spacecrafts": [
    {
      "name": "USS Enterprise",
      "registry": "NCC-1701-D",
      "uid": "SRMA0000245113"
    }
  ],
  "species": {
    "name": "Human",
    "uid": "SPMA0000000001"
  },
  "uid": "SCMA0000284244",
  "warpCapable": true
}
```

### Get a species

Get one species by its uid, including its homeworld, quadrant, and the characters who belong to it.

**Inputs**

- Species ID (`uid`, text, required): The species' unique ID from a search result, for example SPMA0000041310.

**Outputs**

- `characters` (list)
- `homeworld` (object)
- `name` (text)
- `quadrant` (object)
- `uid` (text)

**Example output**

```json
{
  "characters": [
    {
      "name": "Spock",
      "uid": "CHMA0000000003"
    }
  ],
  "homeworld": {
    "name": "Vulcan",
    "uid": "ASMA0000000001"
  },
  "humanoidSpecies": true,
  "name": "Vulcan",
  "telepathicSpecies": true,
  "uid": "SPMA0000041310"
}
```

### Get a staff member

Get one staff member by their uid, including the episodes they wrote or directed and the movies they worked on.

**Inputs**

- Staff ID (`uid`, text, required): The staff member's unique ID from a search result, for example STMA0000164139.

**Outputs**

- `directedEpisodes` (list)
- `episodes` (list)
- `movies` (list)
- `name` (text)
- `uid` (text)
- `writtenEpisodes` (list)

**Example output**

```json
{
  "gender": "M",
  "movies": [
    {
      "title": "Star Trek: The Motion Picture",
      "uid": "MOMA0000000001"
    }
  ],
  "name": "Gene Roddenberry",
  "producer": true,
  "uid": "STMA0000164139",
  "writer": true,
  "writtenEpisodes": [
    {
      "title": "The Cage",
      "uid": "EPMA0000000002"
    }
  ]
}
```

### Get a technology

Get one piece of technology by its uid, with everything STAPI classifies it as.

**Inputs**

- Technology ID (`uid`, text, required): The technology's unique ID from a search result, for example TEMA0000195608.

**Outputs**

- `computerTechnology` (true/false)
- `name` (text)
- `sensorTechnology` (true/false)
- `uid` (text)

**Example output**

```json
{
  "engineeringTool": false,
  "medicalEquipment": false,
  "name": "Tricorder",
  "sensorTechnology": true,
  "tool": true,
  "uid": "TEMA0000195608"
}
```

### Get a weapon

Get one weapon by its uid, with everything STAPI classifies it as.

**Inputs**

- Weapon ID (`uid`, text, required): The weapon's unique ID from a search result, for example WEMA0000073492.

**Outputs**

- `handHeldWeapon` (true/false)
- `name` (text)
- `phaserTechnology` (true/false)
- `uid` (text)

**Example output**

```json
{
  "alternateReality": false,
  "directedEnergyWeapon": true,
  "handHeldWeapon": true,
  "mirror": false,
  "name": "Phaser",
  "phaserTechnology": true,
  "uid": "WEMA0000073492"
}
```

### Get an astronomical object

Get one astronomical object by its uid, including where it sits and the objects it contains (a star system's planets, for example).

**Inputs**

- Astronomical object ID (`uid`, text, required): The object's unique ID from a search result, for example ASMA0000015822.

**Outputs**

- `astronomicalObjectType` (text)
- `astronomicalObjects` (list)
- `location` (object)
- `name` (text)
- `uid` (text)

**Example output**

```json
{
  "astronomicalObjectType": "STAR_SYSTEM",
  "astronomicalObjects": [
    {
      "astronomicalObjectType": "M_CLASS_PLANET",
      "name": "Bajor",
      "uid": "ASMA0000015822"
    }
  ],
  "name": "Bajoran system",
  "uid": "ASMA0000000004"
}
```

### Get an episode

Get one episode by its uid, including its writers, directors, performers, and the characters who appear in it.

**Inputs**

- Episode ID (`uid`, text, required): The episode's unique ID: the uid field of a Search episodes result, which starts with EPMA.

**Outputs**

- `characters` (list)
- `directors` (list)
- `performers` (list)
- `season` (object)
- `series` (object)
- `title` (text)
- `uid` (text)
- `usAirDate` (text)
- `writers` (list)

**Example output**

```json
{
  "characters": [
    {
      "name": "Jean-Luc Picard",
      "uid": "CHMA0000069222"
    }
  ],
  "directors": [
    {
      "name": "Cliff Bole",
      "uid": "STMA0000000002"
    }
  ],
  "episodeNumber": 26,
  "season": {
    "title": "TNG Season 3",
    "uid": "SAMA0000000003"
  },
  "seasonNumber": 3,
  "series": {
    "title": "Star Trek: The Next Generation",
    "uid": "SEMA0000073238"
  },
  "title": "The Best of Both Worlds",
  "uid": "EPMA0000000001",
  "usAirDate": "1990-06-18",
  "writers": [
    {
      "name": "Michael Piller",
      "uid": "STMA0000000001"
    }
  ]
}
```

### Get an organization

Get one organization by its uid, including the characters who belong to it.

**Inputs**

- Organization ID (`uid`, text, required): The organization's unique ID: the uid field of a Search organizations result, which starts with ORMA.

**Outputs**

- `characters` (list)
- `name` (text)
- `uid` (text)

**Example output**

```json
{
  "characters": [
    {
      "name": "Jean-Luc Picard",
      "uid": "CHMA0000069222"
    }
  ],
  "militaryOrganization": true,
  "name": "Starfleet",
  "uid": "ORMA0000000001"
}
```

### Get the data version

Get the version of the Star Trek data this STAPI instance serves. Useful for checking the API is reachable and for noting which snapshot a workflow's results came from.

**Inputs**: None.

**Outputs**

- `dataVersion` (text)

**Example output**

```json
{
  "dataVersion": "2024-01-01"
}
```

### Search astronomical objects

Search the Star Trek galaxy (planets, moons, star systems, nebulae, sectors, and quadrants) by name and type. Each result carries the object's uid.

**Inputs**

- Name (`name`, text): Match objects whose name contains this text, for example 'Bajor'.
- Type (`astronomical_object_type`, text): Only objects of this type, such as a planet or a star system. One of: `PLANET`, `D_CLASS_PLANET` (Planet (class D)), `H_CLASS_PLANET` (Planet (class H)), `GAS_GIANT_PLANET` (Planet (gas giant)), `K_CLASS_PLANET` (Planet (class K)), `L_CLASS_PLANET` (Planet (class L)), `M_CLASS_PLANET` (Planet (class M)), `Y_CLASS_PLANET` (Planet (class Y)), `ROGUE_PLANET` (Rogue planet), `ARTIFICIAL_PLANET` (Artificial planet), and 19 more.
- Located in (`location_uid`, text): Only objects inside this astronomical object. Pass a star system's uid to list its planets, for example.
- Page (`page_number`, number): Which page of results to return, counting from 0. Defaults to 0, the first page. At least 0. Default: `0`.
- Results per page (`page_size`, number): How many results to return per page, up to 100. Defaults to 25. From 1 to 100. Default: `25`.
- Sort by (`sort`, text): How to order the results: a field from the results plus a direction, such as 'title,ASC'. Separate several fields with semicolons ('seasonNumber,ASC;episodeNumber,ASC'). A field on its own sorts ascending. Defaults to the API's own ordering.

**Outputs**

- `astronomicalObjects` (list): Astronomical objects matching the criteria.
- `page` (object): Page metadata: pageNumber, pageSize, numberOfElements, totalElements, totalPages, firstPage, lastPage.
- `sort` (object)

**Example output**

```json
{
  "astronomicalObjects": [
    {
      "astronomicalObjectType": "M_CLASS_PLANET",
      "location": {
        "name": "Bajoran system",
        "uid": "ASMA0000000004"
      },
      "name": "Bajor",
      "uid": "ASMA0000015822"
    }
  ],
  "page": {
    "firstPage": true,
    "lastPage": true,
    "numberOfElements": 2,
    "pageNumber": 0,
    "pageSize": 25,
    "totalElements": 2,
    "totalPages": 1
  },
  "sort": {
    "clauses": []
  }
}
```

### Search books

Search Star Trek books (novels, novelizations, reference works, and audiobooks) by title, format, and year published. Each result carries the book's uid.

**Inputs**

- Title (`title`, text): Match books whose title contains this text, for example 'Prime Directive'.
- Formats (`formats`, list): Only books that are all of the chosen formats. Choosing none returns every book. One or more of: `novel`, `novelization`, `anthology`, `referenceBook` (Reference book), `biographyBook` (Biography), `rolePlayingBook` (Role playing book), `eBook` (E-book), `audiobook`, `unauthorizedPublication` (Unauthorized publication).
- Published after (`published_year_from`, number): Only books published in or after this year. At least 0.
- Published before (`published_year_to`, number): Only books published in or before this year. At least 0.
- Page (`page_number`, number): Which page of results to return, counting from 0. Defaults to 0, the first page. At least 0. Default: `0`.
- Results per page (`page_size`, number): How many results to return per page, up to 100. Defaults to 25. From 1 to 100. Default: `25`.
- Sort by (`sort`, text): How to order the results: a field from the results plus a direction, such as 'title,ASC'. Separate several fields with semicolons ('seasonNumber,ASC;episodeNumber,ASC'). A field on its own sorts ascending. Defaults to the API's own ordering.

**Outputs**

- `books` (list): Books matching the criteria.
- `page` (object): Page metadata: pageNumber, pageSize, numberOfElements, totalElements, totalPages, firstPage, lastPage.
- `sort` (object)

**Example output**

```json
{
  "books": [
    {
      "audiobook": false,
      "novel": true,
      "numberOfPages": 407,
      "publishedYear": 1990,
      "title": "Prime Directive",
      "uid": "BOMA0000154026"
    }
  ],
  "page": {
    "firstPage": true,
    "lastPage": true,
    "numberOfElements": 1,
    "pageNumber": 0,
    "pageSize": 25,
    "totalElements": 1,
    "totalPages": 1
  },
  "sort": {
    "clauses": []
  }
}
```

### Search characters

Search characters from across Star Trek by name, gender, and traits such as hologram or deceased. Each result carries the character's uid.

**Inputs**

- Name (`name`, text): Match characters whose name contains this text, for example 'Picard'.
- Gender (`gender`, text): Only include people of this gender. One of: `F` (Female), `M` (Male).
- Traits (`traits`, list): Only characters with all of the chosen traits. Choosing none returns every character. One or more of: `deceased`, `hologram`, `fictionalCharacter` (Fictional in-universe (a story's character)).
- Mirror universe (`mirror`, true/false): Filter by the mirror universe: on returns only mirror-universe entries, off returns only prime-universe ones. Leave unset for both.
- Alternate reality (`alternate_reality`, true/false): Filter by the alternate reality (the Kelvin timeline): on returns only alternate-reality entries, off returns only prime-timeline ones. Leave unset for both.
- Page (`page_number`, number): Which page of results to return, counting from 0. Defaults to 0, the first page. At least 0. Default: `0`.
- Results per page (`page_size`, number): How many results to return per page, up to 100. Defaults to 25. From 1 to 100. Default: `25`.
- Sort by (`sort`, text): How to order the results: a field from the results plus a direction, such as 'title,ASC'. Separate several fields with semicolons ('seasonNumber,ASC;episodeNumber,ASC'). A field on its own sorts ascending. Defaults to the API's own ordering.

**Outputs**

- `characters` (list): Characters matching the criteria.
- `page` (object): Page metadata: pageNumber, pageSize, numberOfElements, totalElements, totalPages, firstPage, lastPage.
- `sort` (object)

**Example output**

```json
{
  "characters": [
    {
      "alternateReality": false,
      "deceased": false,
      "gender": "M",
      "hologram": false,
      "mirror": false,
      "name": "Jean-Luc Picard",
      "placeOfBirth": "La Barre, France, Earth",
      "uid": "CHMA0000069222",
      "yearOfBirth": 2305
    }
  ],
  "page": {
    "firstPage": true,
    "lastPage": true,
    "numberOfElements": 3,
    "pageNumber": 0,
    "pageSize": 25,
    "totalElements": 3,
    "totalPages": 1
  },
  "sort": {
    "clauses": []
  }
}
```

### Search episodes

Search Star Trek episodes by title, season and episode number, US air date, or feature length. Each result carries the episode's uid, series, and season.

**Inputs**

- Title (`title`, text): Match episodes whose title contains this text, for example 'Best of Both Worlds'.
- Season number from (`season_number_from`, number): Only episodes in seasons numbered this or higher. At least 0.
- Season number to (`season_number_to`, number): Only episodes in seasons numbered this or lower. At least 0.
- Episode number from (`episode_number_from`, number): Only episodes numbered this or higher within their season. At least 0.
- Episode number to (`episode_number_to`, number): Only episodes numbered this or lower within their season. At least 0.
- Feature length only (`feature_length`, true/false): On returns only feature-length episodes (pilots and finales), off returns only regular-length ones.
- First aired after (`us_air_date_from`, date): Only episodes first aired in the US on or after this date.
- First aired before (`us_air_date_to`, date): Only episodes first aired in the US on or before this date.
- Page (`page_number`, number): Which page of results to return, counting from 0. Defaults to 0, the first page. At least 0. Default: `0`.
- Results per page (`page_size`, number): How many results to return per page, up to 100. Defaults to 25. From 1 to 100. Default: `25`.
- Sort by (`sort`, text): How to order the results: a field from the results plus a direction, such as 'title,ASC'. Separate several fields with semicolons ('seasonNumber,ASC;episodeNumber,ASC'). A field on its own sorts ascending. Defaults to the API's own ordering.

**Outputs**

- `episodes` (list): Episodes matching the criteria.
- `page` (object): Page metadata: pageNumber, pageSize, numberOfElements, totalElements, totalPages, firstPage, lastPage.
- `sort` (object)

**Example output**

```json
{
  "episodes": [
    {
      "episodeNumber": 26,
      "featureLength": false,
      "productionSerialNumber": "40273-174",
      "season": {
        "title": "TNG Season 3",
        "uid": "SAMA0000000003"
      },
      "seasonNumber": 3,
      "series": {
        "title": "Star Trek: The Next Generation",
        "uid": "SEMA0000073238"
      },
      "title": "The Best of Both Worlds",
      "uid": "EPMA0000000001",
      "usAirDate": "1990-06-18"
    }
  ],
  "page": {
    "firstPage": true,
    "lastPage": true,
    "numberOfElements": 2,
    "pageNumber": 0,
    "pageSize": 25,
    "totalElements": 2,
    "totalPages": 1
  },
  "sort": {
    "clauses": []
  }
}
```

### Search locations

Search the places of Star Trek (landmarks, structures, establishments, settlements, and schools) by name and type. Each result carries the location's uid.

**Inputs**

- Name (`name`, text): Match locations whose name contains this text, for example 'Ten Forward'.
- Types (`types`, list): Only locations of all the chosen types. Choosing none returns every location. One or more of: `earthlyLocation` (On Earth), `qonosLocation` (On Qo'noS), `fictionalLocation` (Fictional in-universe), `mythologicalLocation` (Mythological), `religiousLocation` (Religious), `geographicalLocation` (Geographical), `bodyOfWater` (Body of water), `country`, `subnationalEntity` (Subnational entity), `settlement`, and 14 more.
- Mirror universe (`mirror`, true/false): Filter by the mirror universe: on returns only mirror-universe entries, off returns only prime-universe ones. Leave unset for both.
- Alternate reality (`alternate_reality`, true/false): Filter by the alternate reality (the Kelvin timeline): on returns only alternate-reality entries, off returns only prime-timeline ones. Leave unset for both.
- Page (`page_number`, number): Which page of results to return, counting from 0. Defaults to 0, the first page. At least 0. Default: `0`.
- Results per page (`page_size`, number): How many results to return per page, up to 100. Defaults to 25. From 1 to 100. Default: `25`.
- Sort by (`sort`, text): How to order the results: a field from the results plus a direction, such as 'title,ASC'. Separate several fields with semicolons ('seasonNumber,ASC;episodeNumber,ASC'). A field on its own sorts ascending. Defaults to the API's own ordering.

**Outputs**

- `locations` (list): Locations matching the criteria.
- `page` (object): Page metadata: pageNumber, pageSize, numberOfElements, totalElements, totalPages, firstPage, lastPage.
- `sort` (object)

**Example output**

```json
{
  "locations": [
    {
      "alternateReality": false,
      "earthlyLocation": false,
      "establishment": true,
      "mirror": false,
      "name": "Ten Forward",
      "uid": "LOMA0000277577"
    }
  ],
  "page": {
    "firstPage": true,
    "lastPage": true,
    "numberOfElements": 1,
    "pageNumber": 0,
    "pageSize": 25,
    "totalElements": 1,
    "totalPages": 1
  },
  "sort": {
    "clauses": []
  }
}
```

### Search movies

Search Star Trek movies by title, the years the story is set in, or US release date. Each result carries the movie's uid.

**Inputs**

- Title (`title`, text): Match movies whose title contains this text, for example 'Wrath of Khan'. Leave blank to list them all.
- Story year from (`year_from`, number): Only movies whose story starts in or after this in-universe year.
- Story year to (`year_to`, number): Only movies whose story ends in or before this in-universe year.
- Released after (`us_release_date_from`, date): Only movies first released in the US on or after this date.
- Released before (`us_release_date_to`, date): Only movies first released in the US on or before this date.
- Page (`page_number`, number): Which page of results to return, counting from 0. Defaults to 0, the first page. At least 0. Default: `0`.
- Results per page (`page_size`, number): How many results to return per page, up to 100. Defaults to 25. From 1 to 100. Default: `25`.
- Sort by (`sort`, text): How to order the results: a field from the results plus a direction, such as 'title,ASC'. Separate several fields with semicolons ('seasonNumber,ASC;episodeNumber,ASC'). A field on its own sorts ascending. Defaults to the API's own ordering.

**Outputs**

- `movies` (list): Movies matching the criteria.
- `page` (object): Page metadata: pageNumber, pageSize, numberOfElements, totalElements, totalPages, firstPage, lastPage.
- `sort` (object)

**Example output**

```json
{
  "movies": [
    {
      "mainDirector": {
        "name": "Nicholas Meyer",
        "uid": "STMA0000000003"
      },
      "title": "Star Trek II: The Wrath of Khan",
      "uid": "MOMA0000092393",
      "usReleaseDate": "1982-06-04",
      "yearFrom": 2285,
      "yearTo": 2285
    }
  ],
  "page": {
    "firstPage": true,
    "lastPage": true,
    "numberOfElements": 13,
    "pageNumber": 0,
    "pageSize": 25,
    "totalElements": 13,
    "totalPages": 1
  },
  "sort": {
    "clauses": []
  }
}
```

### Search organizations

Search the organizations of Star Trek (governments, fleets, agencies, and research bodies) by name and type. Each result carries the organization's uid.

**Inputs**

- Name (`name`, text): Match organizations whose name contains this text, for example 'Starfleet'.
- Types (`types`, list): Only organizations of all the chosen types. Choosing none returns every organization. One or more of: `government`, `intergovernmentalOrganization` (Intergovernmental organization), `governmentAgency` (Government agency), `militaryOrganization` (Military organization), `militaryUnit` (Military unit), `lawEnforcementAgency` (Law enforcement agency), `researchOrganization` (Research organization), `medicalOrganization` (Medical organization), `sportOrganization` (Sport organization), `prisonOrPenalColony` (Prison or penal colony).
- Mirror universe (`mirror`, true/false): Filter by the mirror universe: on returns only mirror-universe entries, off returns only prime-universe ones. Leave unset for both.
- Alternate reality (`alternate_reality`, true/false): Filter by the alternate reality (the Kelvin timeline): on returns only alternate-reality entries, off returns only prime-timeline ones. Leave unset for both.
- Page (`page_number`, number): Which page of results to return, counting from 0. Defaults to 0, the first page. At least 0. Default: `0`.
- Results per page (`page_size`, number): How many results to return per page, up to 100. Defaults to 25. From 1 to 100. Default: `25`.
- Sort by (`sort`, text): How to order the results: a field from the results plus a direction, such as 'title,ASC'. Separate several fields with semicolons ('seasonNumber,ASC;episodeNumber,ASC'). A field on its own sorts ascending. Defaults to the API's own ordering.

**Outputs**

- `organizations` (list): Organizations matching the criteria.
- `page` (object): Page metadata: pageNumber, pageSize, numberOfElements, totalElements, totalPages, firstPage, lastPage.
- `sort` (object)

**Example output**

```json
{
  "organizations": [
    {
      "alternateReality": false,
      "governmentAgency": true,
      "militaryOrganization": true,
      "mirror": false,
      "name": "Starfleet",
      "uid": "ORMA0000000001"
    }
  ],
  "page": {
    "firstPage": true,
    "lastPage": true,
    "numberOfElements": 1,
    "pageNumber": 0,
    "pageSize": 25,
    "totalElements": 1,
    "totalPages": 1
  },
  "sort": {
    "clauses": []
  }
}
```

### Search performers

Search the actors who played Star Trek characters, by name and by which series they appeared in. Each result carries the performer's uid.

**Inputs**

- Name (`name`, text): Match performers whose name contains this text, for example 'Nimoy'.
- Birth name (`birth_name`, text): Match performers whose birth name contains this text.
- Gender (`gender`, text): Only include people of this gender. One of: `F` (Female), `M` (Male).
- Appeared in (`appeared_in`, list): Only performers who appeared in all of the chosen series or films. Choosing none returns every performer. One or more of: `tosPerformer` (The Original Series), `tasPerformer` (The Animated Series), `tngPerformer` (The Next Generation), `ds9Performer` (Deep Space Nine), `voyPerformer` (Voyager), `entPerformer` (Enterprise), `disPerformer` (Discovery), `picPerformer` (Picard), `ldPerformer` (Lower Decks), `proPerformer` (Prodigy), and 3 more.
- Kind of performer (`roles`, list): Only performers of all the chosen kinds, such as voice or stunt performers. One or more of: `voicePerformer` (Voice performer), `stuntPerformer` (Stunt performer), `standInPerformer` (Stand-in performer), `animalPerformer` (Animal performer), `audiobookPerformer` (Audiobook performer), `videoGamePerformer` (Video game performer), `puppeteer`, `cutPerformer` (Cut performer).
- Page (`page_number`, number): Which page of results to return, counting from 0. Defaults to 0, the first page. At least 0. Default: `0`.
- Results per page (`page_size`, number): How many results to return per page, up to 100. Defaults to 25. From 1 to 100. Default: `25`.
- Sort by (`sort`, text): How to order the results: a field from the results plus a direction, such as 'title,ASC'. Separate several fields with semicolons ('seasonNumber,ASC;episodeNumber,ASC'). A field on its own sorts ascending. Defaults to the API's own ordering.

**Outputs**

- `page` (object): Page metadata: pageNumber, pageSize, numberOfElements, totalElements, totalPages, firstPage, lastPage.
- `performers` (list): Performers matching the criteria.
- `sort` (object)

**Example output**

```json
{
  "page": {
    "firstPage": true,
    "lastPage": true,
    "numberOfElements": 1,
    "pageNumber": 0,
    "pageSize": 25,
    "totalElements": 1,
    "totalPages": 1
  },
  "performers": [
    {
      "birthName": "Leonard Simon Nimoy",
      "dateOfBirth": "1931-03-26",
      "dateOfDeath": "2015-02-27",
      "filmPerformer": true,
      "gender": "M",
      "name": "Leonard Nimoy",
      "tasPerformer": true,
      "tngPerformer": true,
      "tosPerformer": true,
      "uid": "PEMA0000268053"
    }
  ],
  "sort": {
    "clauses": []
  }
}
```

### Search seasons

Search seasons of Star Trek TV series by title or season number. Each result carries the season's uid and its series.

**Inputs**

- Title (`title`, text): Match seasons whose title contains this text, for example 'TNG Season'.
- Season number from (`season_number_from`, number): Only seasons numbered this or higher. At least 0.
- Season number to (`season_number_to`, number): Only seasons numbered this or lower. At least 0.
- Page (`page_number`, number): Which page of results to return, counting from 0. Defaults to 0, the first page. At least 0. Default: `0`.
- Results per page (`page_size`, number): How many results to return per page, up to 100. Defaults to 25. From 1 to 100. Default: `25`.
- Sort by (`sort`, text): How to order the results: a field from the results plus a direction, such as 'title,ASC'. Separate several fields with semicolons ('seasonNumber,ASC;episodeNumber,ASC'). A field on its own sorts ascending. Defaults to the API's own ordering.

**Outputs**

- `page` (object): Page metadata: pageNumber, pageSize, numberOfElements, totalElements, totalPages, firstPage, lastPage.
- `seasons` (list): Seasons matching the criteria.
- `sort` (object)

**Example output**

```json
{
  "page": {
    "firstPage": true,
    "lastPage": false,
    "numberOfElements": 25,
    "pageNumber": 0,
    "pageSize": 25,
    "totalElements": 89,
    "totalPages": 4
  },
  "seasons": [
    {
      "numberOfEpisodes": 26,
      "seasonNumber": 1,
      "series": {
        "title": "Star Trek: The Next Generation",
        "uid": "SEMA0000073238"
      },
      "title": "TNG Season 1",
      "uid": "SAMA0000212566"
    }
  ],
  "sort": {
    "clauses": []
  }
}
```

### Search series

Search Star Trek TV series by title or abbreviation (TOS, TNG, DS9, VOY, ENT, DIS, PIC, LD, PRO, SNW). Each result carries the series' uid for the other actions.

**Inputs**

- Title (`title`, text): Match series whose title contains this text, for example 'Deep Space'. Leave blank to list them all.
- Abbreviation (`abbreviation`, text): The series' abbreviation, for example 'TNG'.
- Production started after (`production_start_year_from`, number): Only series whose production started in or after this year. At least 0.
- Production started before (`production_start_year_to`, number): Only series whose production started in or before this year. At least 0.
- Page (`page_number`, number): Which page of results to return, counting from 0. Defaults to 0, the first page. At least 0. Default: `0`.
- Results per page (`page_size`, number): How many results to return per page, up to 100. Defaults to 25. From 1 to 100. Default: `25`.
- Sort by (`sort`, text): How to order the results: a field from the results plus a direction, such as 'title,ASC'. Separate several fields with semicolons ('seasonNumber,ASC;episodeNumber,ASC'). A field on its own sorts ascending. Defaults to the API's own ordering.

**Outputs**

- `page` (object): Page metadata: pageNumber, pageSize, numberOfElements, totalElements, totalPages, firstPage, lastPage.
- `series` (list): Series matching the criteria.
- `sort` (object)

**Example output**

```json
{
  "page": {
    "firstPage": true,
    "lastPage": true,
    "numberOfElements": 12,
    "pageNumber": 0,
    "pageSize": 25,
    "totalElements": 12,
    "totalPages": 1
  },
  "series": [
    {
      "abbreviation": "TNG",
      "episodesCount": 176,
      "productionEndYear": 1994,
      "productionStartYear": 1987,
      "seasonsCount": 7,
      "title": "Star Trek: The Next Generation",
      "uid": "SEMA0000073238"
    },
    {
      "abbreviation": "DS9",
      "episodesCount": 173,
      "productionEndYear": 1999,
      "productionStartYear": 1992,
      "seasonsCount": 7,
      "title": "Star Trek: Deep Space Nine",
      "uid": "SEMA0000000025"
    }
  ],
  "sort": {
    "clauses": []
  }
}
```

### Search spacecraft

Search the individual ships of Star Trek by name, registry, or status. Each result carries the spacecraft's uid and its class.

**Inputs**

- Name (`name`, text): Match spacecraft whose name contains this text, for example 'Enterprise'.
- Registry (`registry`, text): The ship's registry, for example 'NCC-1701-D'.
- Status (`status`, text): The ship's status, for example 'Active' or 'Destroyed'.
- Page (`page_number`, number): Which page of results to return, counting from 0. Defaults to 0, the first page. At least 0. Default: `0`.
- Results per page (`page_size`, number): How many results to return per page, up to 100. Defaults to 25. From 1 to 100. Default: `25`.
- Sort by (`sort`, text): How to order the results: a field from the results plus a direction, such as 'title,ASC'. Separate several fields with semicolons ('seasonNumber,ASC;episodeNumber,ASC'). A field on its own sorts ascending. Defaults to the API's own ordering.

**Outputs**

- `page` (object): Page metadata: pageNumber, pageSize, numberOfElements, totalElements, totalPages, firstPage, lastPage.
- `sort` (object)
- `spacecrafts` (list): Spacecraft matching the criteria.

**Example output**

```json
{
  "page": {
    "firstPage": true,
    "lastPage": true,
    "numberOfElements": 9,
    "pageNumber": 0,
    "pageSize": 25,
    "totalElements": 9,
    "totalPages": 1
  },
  "sort": {
    "clauses": []
  },
  "spacecrafts": [
    {
      "name": "USS Enterprise",
      "operator": {
        "name": "Starfleet",
        "uid": "ORMA0000000001"
      },
      "registry": "NCC-1701-D",
      "spacecraftClass": {
        "name": "Galaxy class",
        "uid": "SCMA0000284244"
      },
      "status": "Destroyed",
      "uid": "SRMA0000245113"
    }
  ]
}
```

### Search spacecraft classes

Search spacecraft classes (Constitution, Galaxy, Bird-of-Prey, and the rest) by name. Each result carries the class' uid and the species that built it.

**Inputs**

- Name (`name`, text): Match classes whose name contains this text, for example 'Galaxy'.
- Warp capable (`warp_capable`, true/false): On returns only warp-capable classes, off returns only those without warp. Leave unset for both.
- Mirror universe (`mirror`, true/false): Filter by the mirror universe: on returns only mirror-universe entries, off returns only prime-universe ones. Leave unset for both.
- Alternate reality (`alternate_reality`, true/false): Filter by the alternate reality (the Kelvin timeline): on returns only alternate-reality entries, off returns only prime-timeline ones. Leave unset for both.
- Page (`page_number`, number): Which page of results to return, counting from 0. Defaults to 0, the first page. At least 0. Default: `0`.
- Results per page (`page_size`, number): How many results to return per page, up to 100. Defaults to 25. From 1 to 100. Default: `25`.
- Sort by (`sort`, text): How to order the results: a field from the results plus a direction, such as 'title,ASC'. Separate several fields with semicolons ('seasonNumber,ASC;episodeNumber,ASC'). A field on its own sorts ascending. Defaults to the API's own ordering.

**Outputs**

- `page` (object): Page metadata: pageNumber, pageSize, numberOfElements, totalElements, totalPages, firstPage, lastPage.
- `sort` (object)
- `spacecraftClasses` (list): Spacecraft classes matching the criteria.

**Example output**

```json
{
  "page": {
    "firstPage": true,
    "lastPage": true,
    "numberOfElements": 1,
    "pageNumber": 0,
    "pageSize": 25,
    "totalElements": 1,
    "totalPages": 1
  },
  "sort": {
    "clauses": []
  },
  "spacecraftClasses": [
    {
      "activeFrom": "2357",
      "alternateReality": false,
      "mirror": false,
      "name": "Galaxy class",
      "numberOfDecks": 42,
      "species": {
        "name": "Human",
        "uid": "SPMA0000000001"
      },
      "uid": "SCMA0000284244",
      "warpCapable": true
    }
  ]
}
```

### Search species

Search the species of the Star Trek universe by name and by traits such as humanoid, telepathic, or warp-capable. Each result carries the species' uid.

**Inputs**

- Name (`name`, text): Match species whose name contains this text, for example 'Vulcan'.
- Traits (`traits`, list): Only species with all of the chosen traits. Choosing none returns every species. One or more of: `humanoidSpecies` (Humanoid), `reptilianSpecies` (Reptilian), `avianSpecies` (Avian), `nonCorporealSpecies` (Non-corporeal), `shapeshiftingSpecies` (Shapeshifting), `spaceborneSpecies` (Spaceborne), `telepathicSpecies` (Telepathic), `transDimensionalSpecies` (Trans-dimensional), `extraGalacticSpecies` (Extra-galactic), `warpCapableSpecies` (Warp-capable), `extinctSpecies` (Extinct), `unnamedSpecies` (Unnamed).
- Alternate reality (`alternate_reality`, true/false): Filter by the alternate reality (the Kelvin timeline): on returns only alternate-reality entries, off returns only prime-timeline ones. Leave unset for both.
- Page (`page_number`, number): Which page of results to return, counting from 0. Defaults to 0, the first page. At least 0. Default: `0`.
- Results per page (`page_size`, number): How many results to return per page, up to 100. Defaults to 25. From 1 to 100. Default: `25`.
- Sort by (`sort`, text): How to order the results: a field from the results plus a direction, such as 'title,ASC'. Separate several fields with semicolons ('seasonNumber,ASC;episodeNumber,ASC'). A field on its own sorts ascending. Defaults to the API's own ordering.

**Outputs**

- `page` (object): Page metadata: pageNumber, pageSize, numberOfElements, totalElements, totalPages, firstPage, lastPage.
- `sort` (object)
- `species` (list): Species matching the criteria.

**Example output**

```json
{
  "page": {
    "firstPage": true,
    "lastPage": true,
    "numberOfElements": 1,
    "pageNumber": 0,
    "pageSize": 25,
    "totalElements": 1,
    "totalPages": 1
  },
  "sort": {
    "clauses": []
  },
  "species": [
    {
      "extinctSpecies": false,
      "homeworld": {
        "name": "Vulcan",
        "uid": "ASMA0000000001"
      },
      "humanoidSpecies": true,
      "name": "Vulcan",
      "quadrant": {
        "name": "Alpha Quadrant",
        "uid": "ASMA0000000002"
      },
      "telepathicSpecies": true,
      "uid": "SPMA0000041310",
      "warpCapableSpecies": true
    }
  ]
}
```

### Search staff

Search the people behind the camera (writers, directors, producers, composers, and the rest of the crew) by name and role. Each result carries the staff member's uid.

**Inputs**

- Name (`name`, text): Match staff whose name contains this text, for example 'Roddenberry'.
- Birth name (`birth_name`, text): Match staff whose birth name contains this text.
- Gender (`gender`, text): Only include people of this gender. One of: `F` (Female), `M` (Male).
- Roles (`roles`, list): Only staff who held all of the chosen roles. Choosing none returns every staff member. One or more of: `director`, `assistantOrSecondUnitDirector` (Assistant or second unit director), `producer`, `writer`, `storyEditor` (Story editor), `composer`, `cinematographer`, `filmEditor` (Film editor), `costumeDesigner` (Costume designer), `artDirector` (Art director), and 11 more.
- Page (`page_number`, number): Which page of results to return, counting from 0. Defaults to 0, the first page. At least 0. Default: `0`.
- Results per page (`page_size`, number): How many results to return per page, up to 100. Defaults to 25. From 1 to 100. Default: `25`.
- Sort by (`sort`, text): How to order the results: a field from the results plus a direction, such as 'title,ASC'. Separate several fields with semicolons ('seasonNumber,ASC;episodeNumber,ASC'). A field on its own sorts ascending. Defaults to the API's own ordering.

**Outputs**

- `page` (object): Page metadata: pageNumber, pageSize, numberOfElements, totalElements, totalPages, firstPage, lastPage.
- `sort` (object)
- `staff` (list): Staff matching the criteria.

**Example output**

```json
{
  "page": {
    "firstPage": true,
    "lastPage": true,
    "numberOfElements": 1,
    "pageNumber": 0,
    "pageSize": 25,
    "totalElements": 1,
    "totalPages": 1
  },
  "sort": {
    "clauses": []
  },
  "staff": [
    {
      "dateOfBirth": "1921-08-19",
      "dateOfDeath": "1991-10-24",
      "gender": "M",
      "name": "Gene Roddenberry",
      "producer": true,
      "uid": "STMA0000164139",
      "writer": true
    }
  ]
}
```

### Search technology

Search Star Trek technology (tricorders, holodecks, warp drives, transporters) by name and kind. Each result carries the technology's uid.

**Inputs**

- Name (`name`, text): Match technology whose name contains this text, for example 'tricorder'.
- Kinds (`types`, list): Only technology of all the chosen kinds. Choosing none returns everything. One or more of: `borgTechnology` (Borg technology), `borgComponent` (Borg component), `communicationsTechnology` (Communications), `computerTechnology` (Computer), `computerProgramming` (Computer programming), `subroutine`, `database`, `energyTechnology` (Energy), `holographicTechnology` (Holographic), `identificationTechnology` (Identification), and 21 more.
- Page (`page_number`, number): Which page of results to return, counting from 0. Defaults to 0, the first page. At least 0. Default: `0`.
- Results per page (`page_size`, number): How many results to return per page, up to 100. Defaults to 25. From 1 to 100. Default: `25`.
- Sort by (`sort`, text): How to order the results: a field from the results plus a direction, such as 'title,ASC'. Separate several fields with semicolons ('seasonNumber,ASC;episodeNumber,ASC'). A field on its own sorts ascending. Defaults to the API's own ordering.

**Outputs**

- `page` (object): Page metadata: pageNumber, pageSize, numberOfElements, totalElements, totalPages, firstPage, lastPage.
- `sort` (object)
- `technology` (list): Technology matching the criteria.

**Example output**

```json
{
  "page": {
    "firstPage": true,
    "lastPage": true,
    "numberOfElements": 3,
    "pageNumber": 0,
    "pageSize": 25,
    "totalElements": 3,
    "totalPages": 1
  },
  "sort": {
    "clauses": []
  },
  "technology": [
    {
      "borgTechnology": false,
      "name": "Tricorder",
      "sensorTechnology": true,
      "tool": true,
      "uid": "TEMA0000195608"
    }
  ]
}
```

### Search weapons

Search Star Trek weapons (phasers, disruptors, torpedoes) by name and kind. Each result carries the weapon's uid.

**Inputs**

- Name (`name`, text): Match weapons whose name contains this text, for example 'phaser'.
- Kinds (`types`, list): Only weapons of all the chosen kinds. Choosing none returns every weapon. One or more of: `handHeldWeapon` (Hand-held), `directedEnergyWeapon` (Directed energy), `phaserTechnology` (Phaser technology), `laserTechnology` (Laser technology), `plasmaTechnology` (Plasma technology), `photonicTechnology` (Photonic technology), `explosiveWeapon` (Explosive), `projectileWeapon` (Projectile), `fictionalWeapon` (Fictional in-universe).
- Mirror universe (`mirror`, true/false): Filter by the mirror universe: on returns only mirror-universe entries, off returns only prime-universe ones. Leave unset for both.
- Alternate reality (`alternate_reality`, true/false): Filter by the alternate reality (the Kelvin timeline): on returns only alternate-reality entries, off returns only prime-timeline ones. Leave unset for both.
- Page (`page_number`, number): Which page of results to return, counting from 0. Defaults to 0, the first page. At least 0. Default: `0`.
- Results per page (`page_size`, number): How many results to return per page, up to 100. Defaults to 25. From 1 to 100. Default: `25`.
- Sort by (`sort`, text): How to order the results: a field from the results plus a direction, such as 'title,ASC'. Separate several fields with semicolons ('seasonNumber,ASC;episodeNumber,ASC'). A field on its own sorts ascending. Defaults to the API's own ordering.

**Outputs**

- `page` (object): Page metadata: pageNumber, pageSize, numberOfElements, totalElements, totalPages, firstPage, lastPage.
- `sort` (object)
- `weapons` (list): Weapons matching the criteria.

**Example output**

```json
{
  "page": {
    "firstPage": true,
    "lastPage": true,
    "numberOfElements": 4,
    "pageNumber": 0,
    "pageSize": 25,
    "totalElements": 4,
    "totalPages": 1
  },
  "sort": {
    "clauses": []
  },
  "weapons": [
    {
      "alternateReality": false,
      "directedEnergyWeapon": true,
      "handHeldWeapon": true,
      "mirror": false,
      "name": "Phaser",
      "phaserTechnology": true,
      "uid": "WEMA0000073492"
    }
  ]
}
```
