---
title: "Get Public Motor By Slug"
method: GET
path: "/v1/public/motors/by-slug/{slug}"
tags: ["v1", "public"]
---

# Get Public Motor By Slug

`GET /v1/public/motors/by-slug/{slug}`

## Request

- Base URL: `https://thrustlab.com`
- URL: `https://thrustlab.com/v1/public/motors/by-slug/{slug}`
- Auth: none required

One curated motor by its public slug, or the slug it has moved to.

A slug that a component used to answer to returns
`{"object": "redirect", "slug": "<current>"}` so a shared or indexed link
keeps resolving. Anything else is a 404.

## Path parameters

- `slug` string, required

## Response `200`

Successful Response

- union
  - PublicComponentResource: One component, read by id. The list projection plus the licence.
    - `curve_pack_cells` integer, nullable: The field gives the cell count of the stand-in battery pack used for a motor's published curves. It is null on propellers, batteries and motors with no published curves.
    - `id` string, required: Public component id (comp_<ksuid>).
    - `license` string, required
    - `name` string, required
    - `slug` string, nullable: The row's URL segment — the one GET /v1/public/{type}/by-slug/{slug} resolves. Null only for a row minted before the column existed; a client should fall back to the id rather than derive a slug of its own, because the minting rule is the server's.
    - `source` string, nullable: Where the row came from. Published, not hidden: a dataset whose rows cannot be attributed is one a reader has to take on trust.
    - `spec_json` object, required: The datasheet. The same projection an authenticated caller reads. A propeller's station arrays are digitised blade geometry and are not part of it.
    - `type` 'motor' | 'propeller' | 'battery', required
    - `updated_at` string, nullable: When the row was last touched (ISO 8601).
  - PublicCatalogRedirect: A slug that has moved. The other half of the by-slug response. A catalog page's URL is built from the part's maker and name, and both get corrected. When one does, the old slug lands here so a shared or indexed link keeps resolving — the page turns this into a 308 to the current slug.
    - `object` 'redirect'
    - `slug` string, required: The slug this component answers to now.

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/thrustlab/apis/thrustlab-api.md) · [All operations](https://skmtc.dev/thrustlab/apis/thrustlab-api/llms.txt) · [OpenAPI document](https://skmtc.dev/thrustlab/apis/thrustlab-api/revisions/c19717e52529?raw)
