# Check consistency

`POST https://api.vidmoat.com/v1/consistency`

- Scope: `cast.read`
- Cost: Free

Whether saved members appear unchanged in an image or video of the account (`src`) or a finished generation (`jobId`). Face method on CPU: per member kept, drifted, absent or unknown, scored as a share of the member's own reference ceiling. A measurement, not an identity guarantee; thresholds are reported with each verdict.

### Body

- `castIds` (array of strings, required): 1 to 6 members.
- `src` (string, optional): An /uploads/ image or video of the account.
- `jobId` (string, optional): A finished generation.

## Response

Returns `200`.

### Response fields

- `verdicts` (array): `{ memberId, name, status, score?, ceilingShare?, method, frames, reason? }`.
- `summary` (string): One line per member.

## Errors

Besides the errors any request can get ([authentication](https://developer.vidmoat.com/developer/docs/authentication#when-a-request-is-refused), [rate limits](https://developer.vidmoat.com/developer/docs/rate-limits)):

| Status | Code | When |
| --- | --- | --- |
| 400 | [`invalid_request`](https://developer.vidmoat.com/developer/docs/errors#invalid_request) | No castIds, or media not in the account. |
| 429 | [`rate_limited`](https://developer.vidmoat.com/developer/docs/errors#rate_limited) | Too many checks. |

## Request examples

```bash curl
curl -X POST https://api.vidmoat.com/v1/consistency \
  -H "Authorization: Bearer $VIDMOAT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"jobId":"cm_job_1","castIds":["cm_5f2a9c1d7e3b"]}'
```

```js Node
const res = await fetch('https://api.vidmoat.com/v1/consistency', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.VIDMOAT_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    jobId: 'cm_job_1',
    castIds: [
      'cm_5f2a9c1d7e3b',
    ],
  }),
});
const data = await res.json();
if (!res.ok) throw new Error(data.error?.message ?? `HTTP ${res.status}`);
console.log(data);
```

```python Python
import os
import requests

res = requests.post(
    "https://api.vidmoat.com/v1/consistency",
    headers={"Authorization": f"Bearer {os.environ['VIDMOAT_KEY']}"},
    json={
      "jobId": "cm_job_1",
      "castIds": [
        "cm_5f2a9c1d7e3b",
      ],
    },
    timeout=60,
)
res.raise_for_status()
print(res.json())
```

---

Source: https://developer.vidmoat.com/developer/docs/api/cast/check-consistency
Previous: [Delete a cast member](https://developer.vidmoat.com/developer/docs/api/cast/delete-cast-member.md)
Next: [List plugins](https://developer.vidmoat.com/developer/docs/api/plugins/list-plugins.md)
All documentation: https://developer.vidmoat.com/llms-full.txt
