Source: https://dinakar-rewind.docs.pageloop.ai/api-reference/admin/adminattendingenrichplayerphotos

# Backfill player photos through the image pipeline

POST `https://api.rewind.rest/v1/admin/attending/enrich-player-photos`

Fetches the MLB silo cutout for every player and the ESPN full-body PNG when an espn\_id is known. Stores both via the existing image pipeline (R2 + thumbhash + dominant\_color) keyed on (domain='attending', entity\_type='player\_silo'|'player\_full'). Idempotent.

## Authorization

#### Authorization (header, string, required)

API key. Read keys (rw\_live\_...) access GET endpoints. Admin keys (rw\_admin\_...) access all endpoints.

## Body

#### player\_ids (body, array of integer)

#### skip\_existing (body, boolean)

#### silo\_only (body, boolean)

#### limit (body, integer)

## Response

#### 200

Photo backfill completed

#### status (enum (string), required) — allowed: completed

#### scanned (integer, required)

#### silo\_inserted (integer, required)

#### silo\_skipped (integer, required)

#### silo\_failed (integer, required)

#### full\_inserted (integer, required)

#### full\_skipped (integer, required)

#### full\_failed (integer, required)

#### failures (array of object, required)

#### properties

#### player\_id (integer, required)

#### reason (string, required)

#### 401

Unauthorized

#### error (string, required)

#### status (integer, required)

#### 500

Internal server error

#### error (string, required)

#### status (integer, required)

#### Request

```bash cURL
curl -X POST 'https://api.rewind.rest/v1/admin/attending/enrich-player-photos' \
  -H 'Authorization: Bearer <token>' \
  -H 'Content-Type: application/json' \
  -d '{"player_ids": [0], "skip_existing": true, "silo_only": true, "limit": 0}'
```

```javascript JavaScript
const res = await fetch('https://api.rewind.rest/v1/admin/attending/enrich-player-photos', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer <token>',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({"player_ids": [0], "skip_existing": true, "silo_only": true, "limit": 0}),
});
const data = await res.json();
```

```python Python
import requests

res = requests.post(
    'https://api.rewind.rest/v1/admin/attending/enrich-player-photos',
    headers={'Authorization': 'Bearer <token>'},
    json={"player_ids": [0], "skip_existing": true, "silo_only": true, "limit": 0}
)
data = res.json()
```

#### Response

```json 200
{
  "status": "completed",
  "scanned": 0,
  "silo_inserted": 0,
  "silo_skipped": 0,
  "silo_failed": 0,
  "full_inserted": 0,
  "full_skipped": 0,
  "full_failed": 0,
  "failures": [
    {
      "player_id": 0,
      "reason": "string"
    }
  ]
}
```

```json 401
{
  "error": "Not found",
  "status": 404
}
```

```json 500
{
  "error": "Not found",
  "status": 404
}
```
