# Video · edit people

`POST /v1/videos/edits/people` — Read the people in a frame of your clip, left to right: what each wears and where their head is.

- Base URL: https://eroq.ai/v1
- Auth: `Authorization: Bearer eroq_sk_…` (create keys at https://eroq.ai/dashboard/keys)
- Credits: free

Free to call. Made for Replace Pro (`eroq-replace-pro`): send one frame of the clip (its first, where everyone stands) and how many people to read. For each person, left to right: `outfit`, their clothing and accessories (never their face, body or who they might be) — put it in that person's picture prompt (POST /v1/images/generations) to keep the clip's clothes; and `placement`, where their head is (`x` its centre, `top` the crown, `head` its height, as fractions of the frame) — send the list as `placements` to POST /v1/videos/edits so each picture lands at that spot and size. `placement` is null when a head could not be boxed: send no placements then.

Answers `503 people_unavailable` when the frame cannot be read.

## POST /v1/videos/edits/people

Read the people in a frame of your clip, left to right: what each wears and where their head is.

### Request body

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `frame` | string | yes | One frame of the clip, as a `data:image/jpeg\|webp\|png;base64,…` URI (under 3 MB). |
| `people` | integer | no | How many people to read, left to right — 1 to 6. Default 1. |

### Example request

```bash
curl https://eroq.ai/v1/videos/edits/people \
  -H "Authorization: Bearer $EROQ_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "frame": "data:image/webp;base64,UklGR…",
  "people": 2
}'
```

```javascript
const res = await fetch('https://eroq.ai/v1/videos/edits/people', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.EROQ_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "frame": "data:image/webp;base64,UklGR…",
    "people": 2
  }),
})
console.log(await res.json())
```

```python
import os, requests

res = requests.post(
    "https://eroq.ai/v1/videos/edits/people",
    headers={"Authorization": f"Bearer {os.environ['EROQ_API_KEY']}"},
    json={
        "frame": "data:image/webp;base64,UklGR…",
        "people": 2
    },
)
print(res.json())
```

```go
package main

import (
	"fmt"
	"io"
	"net/http"
	"os"
	"strings"
)

func main() {
	body := strings.NewReader(`{
  "frame": "data:image/webp;base64,UklGR…",
  "people": 2
}`)

	req, _ := http.NewRequest("POST", "https://eroq.ai/v1/videos/edits/people", body)
	req.Header.Set("Authorization", "Bearer "+os.Getenv("EROQ_API_KEY"))
	req.Header.Set("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)
	defer res.Body.Close()
	out, _ := io.ReadAll(res.Body)
	fmt.Println(string(out))
}
```

### Response


```json
{
  "object": "video.edit.people",
  "people": [
    {
      "outfit": "orange and blue striped short-sleeved shirt open over a white t-shirt, light blue jeans, silver chains, white sunglasses",
      "placement": { "x": 0.35, "top": 0.13, "head": 0.18 }
    },
    {
      "outfit": "orange knitted short-sleeved polo, black leather trousers, silver watch, dark sunglasses",
      "placement": { "x": 0.67, "top": 0.1, "head": 0.18 }
    }
  ]
}
```

---
Canonical: https://eroq.ai/docs/video-edit-people · Index for agents: https://eroq.ai/llms.txt · OpenAPI: https://eroq.ai/openapi.json
