# Get the moves

> The public part of every move: name, family, summary, explanation, good-for tags, gallery examples and related moves. Prompts are part of Pro and not included.

`GET https://motionvideo.xyz/api/moves`

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `If-None-Match` | header | string | No | The `ETag` of an earlier response. If it is still current, the response is a `304` with no body. Send the value exactly as received (one quoted value): lists, weak `W/` validators and `*` always get a full response. |

## Example request

```bash
curl https://motionvideo.xyz/api/moves
```

## Responses

### 200

Every move, without its prompt.

| Header | Description |
| --- | --- |
| `ETag` | Quoted SHA-256 hex digest of the response body. Changes whenever the data does. |
| `Cache-Control` | Browsers reuse a response for 5 minutes and shared caches for an hour, then may serve it stale for up to a day while they revalidate. Value: `public, max-age=300, s-maxage=3600, stale-while-revalidate=86400` |

Body (`application/json`):

- `moves` (array of Move, required)
  - `slug` (string, required): Stable ID. The move's page is `/moves/{family}/{slug}` under a locale.
  - `name` (string, required)
  - `family` (string, required) One of `timing`, `type`, `transitions`, `ui`, `vector`, `generative`, `camera`, `texture`, `data`, `sound`.
  - `aka` (array of string, required): Other names people search for.
  - `summary` (string, required): One sentence: what it looks like.
  - `body` (string, required): Markdown: how it reads, when it works, common mistakes.
  - `goodFor` (array of string, required): Short tags, e.g. `logo stings`.
  - `examples` (array of string, required): Slugs of catalog videos that show the move.
  - `related` (array of string, required): Slugs of related moves.

Example:

```json
{
  "moves": [
    {
      "slug": "squash-and-stretch",
      "name": "Squash and stretch",
      "family": "timing",
      "aka": [
        "squash & stretch",
        "squash and stretch animation",
        "bouncing ball animation",
        "elastic deformation"
      ],
      "summary": "An object flattens on impact and lengthens in fast travel while keeping its volume, so it reads as soft, alive and pulled by gravity.",
      "body": "Squash and stretch is the oldest trick for making a shape feel like it has mass. A ball lengthens along its direction of travel when it moves fast, flattens against the floor on contact, then springs back to round. The eye reads the deformation as weight and softness long before it reads the geometry.\n\nThe rule that makes it work is **volume preservation**: if the shape grows 30 percent on one axis, it shrinks on the other so the area stays about the same. `scaleX = 1 / scaleY` is a good starting point.\n\nIt works best on:\n\n- mascots, dots, balls and blobs\n- buttons and chips that get pressed or land\n- playful brands where a little rubber is welcome\n\nCommon mistakes:\n\n- scaling from the center instead of the contact point, so the ball floats above the floor while it squashes\n- stretching on the screen axis instead of along the velocity\n- deforming text, logos or product UI that must stay legible\n- holding the squash too long; two to four frames on contact is plenty",
      "goodFor": [
        "characters",
        "mascots",
        "playful brands",
        "bouncing objects"
      ],
      "examples": [
        "fanxing321-a52ec8",
        "notdwd-2c76f5"
      ],
      "related": [
        "anticipation",
        "arc-motion",
        "follow-through"
      ]
    }
  ]
}
```

### 304

Not modified: `If-None-Match` matched the current `ETag`. No body; reuse the copy you have.

| Header | Description |
| --- | --- |
| `ETag` | Quoted SHA-256 hex digest of the response body. Changes whenever the data does. |