curl -X DELETE https://api.vibepeak.ai/v1/families/3fa85f64-5717-4562-b3fc-2c963f66afa6/members/2 \
-H "Authorization: Bearer vpk_live_xxxxx"
const response = await fetch('https://api.vibepeak.ai/v1/families/3fa85f64-5717-4562-b3fc-2c963f66afa6/members/2', {
method: 'DELETE',
headers: {
'Authorization': 'Bearer vpk_live_xxxxx'
}
});
const result = await response.json();
console.log(`Removing member, task: ${result.task_id}`);
import requests
response = requests.delete(
'https://api.vibepeak.ai/v1/families/3fa85f64-5717-4562-b3fc-2c963f66afa6/members/2',
headers={
'Authorization': 'Bearer vpk_live_xxxxx'
}
)
result = response.json()
print(f"Removing member, task: {result['task_id']}")
{
"family_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"task_id": "task_fam459rem",
"status": "generating",
"livemode": true,
"_links": {
"self": "/v1/families/3fa85f64-5717-4562-b3fc-2c963f66afa6",
"task": "/v1/tasks/task_fam459rem"
}
}
{
"error": {
"code": "PLAN_NOT_ALLOWED",
"message": "Families are available on the Pro, Max and Enterprise plans. Upgrade your plan to use this feature.",
"request_id": "req_xyz123"
}
}
{
"error": {
"code": "FAMILY_NOT_FOUND",
"message": "Family not found or not accessible with this API key.",
"request_id": "req_xyz123"
}
}
{
"error": {
"code": "FAMILY_MEMBER_NOT_FOUND",
"message": "Member index is out of range for this family.",
"request_id": "req_xyz123"
}
}
{
"error": {
"code": "FAMILY_NOT_READY",
"message": "Another generation is already in progress for this family. Poll the task until it finishes, then retry.",
"request_id": "req_xyz123"
}
}
{
"error": {
"code": "FAMILY_MEMBER_MINIMUM",
"message": "A family must have at least 1 member.",
"request_id": "req_xyz123"
}
}
Families
Remove Family Member
Remove a member from a family and regenerate its cast
DELETE
/
v1
/
families
/
{familyId}
/
members
/
{index}
curl -X DELETE https://api.vibepeak.ai/v1/families/3fa85f64-5717-4562-b3fc-2c963f66afa6/members/2 \
-H "Authorization: Bearer vpk_live_xxxxx"
const response = await fetch('https://api.vibepeak.ai/v1/families/3fa85f64-5717-4562-b3fc-2c963f66afa6/members/2', {
method: 'DELETE',
headers: {
'Authorization': 'Bearer vpk_live_xxxxx'
}
});
const result = await response.json();
console.log(`Removing member, task: ${result.task_id}`);
import requests
response = requests.delete(
'https://api.vibepeak.ai/v1/families/3fa85f64-5717-4562-b3fc-2c963f66afa6/members/2',
headers={
'Authorization': 'Bearer vpk_live_xxxxx'
}
)
result = response.json()
print(f"Removing member, task: {result['task_id']}")
{
"family_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"task_id": "task_fam459rem",
"status": "generating",
"livemode": true,
"_links": {
"self": "/v1/families/3fa85f64-5717-4562-b3fc-2c963f66afa6",
"task": "/v1/tasks/task_fam459rem"
}
}
{
"error": {
"code": "PLAN_NOT_ALLOWED",
"message": "Families are available on the Pro, Max and Enterprise plans. Upgrade your plan to use this feature.",
"request_id": "req_xyz123"
}
}
{
"error": {
"code": "FAMILY_NOT_FOUND",
"message": "Family not found or not accessible with this API key.",
"request_id": "req_xyz123"
}
}
{
"error": {
"code": "FAMILY_MEMBER_NOT_FOUND",
"message": "Member index is out of range for this family.",
"request_id": "req_xyz123"
}
}
{
"error": {
"code": "FAMILY_NOT_READY",
"message": "Another generation is already in progress for this family. Poll the task until it finishes, then retry.",
"request_id": "req_xyz123"
}
}
{
"error": {
"code": "FAMILY_MEMBER_MINIMUM",
"message": "A family must have at least 1 member.",
"request_id": "req_xyz123"
}
}
Removes a member from a family you own, then regenerates the family’s group
The family must be in
See Error Handling for more details.
card_image_url to reflect the remaining cast. Only the family’s owner can remove members.
Removing a family member requires a Pro, Max, or Enterprise plan, like all other family write operations.
ready status: if another generation is already in progress for this family, the request is rejected with 422 FAMILY_NOT_READY. A family must keep at least 1 member: removing the last one is rejected with 422 FAMILY_MEMBER_MINIMUM.
Unlike Delete Family, this endpoint returns
202 Accepted rather than 204 No Content, since the group card image needs to be regenerated for the remaining members.Path Parameters
string
required
The UUID of the family. Only accepts families you own.Example:
3fa85f64-5717-4562-b3fc-2c963f66afa6integer
required
The 0-based position of the member to remove, matching the order of the
members array returned by Get Family.Returns 404 FAMILY_MEMBER_NOT_FOUND if out of range.Example: 2Request Body
No body fields are required.string
HTTPS URL to receive a webhook notification when the family finishes regenerating its group card.See Webhooks for payload format and verification details.
Webhook URLs must use HTTPS and cannot point to private/internal networks (SSRF protection).
Response
Returns a202 Accepted response with a task to poll:
string
required
Unique identifier for the family.
string
required
Unique identifier for the generation task. Poll it via Get Task, or use
webhook_url for a notification instead.string
required
Always
generating for this response shape.boolean
required
true for live (vpk_live_) requests; false for test-mode (vpk_test_) requests. See Test Mode.object
required
HATEOAS links for navigation.
self: URL to fetch the family (/v1/families/{family_id})task: URL to poll for the generation task (/v1/tasks/{task_id})
curl -X DELETE https://api.vibepeak.ai/v1/families/3fa85f64-5717-4562-b3fc-2c963f66afa6/members/2 \
-H "Authorization: Bearer vpk_live_xxxxx"
const response = await fetch('https://api.vibepeak.ai/v1/families/3fa85f64-5717-4562-b3fc-2c963f66afa6/members/2', {
method: 'DELETE',
headers: {
'Authorization': 'Bearer vpk_live_xxxxx'
}
});
const result = await response.json();
console.log(`Removing member, task: ${result.task_id}`);
import requests
response = requests.delete(
'https://api.vibepeak.ai/v1/families/3fa85f64-5717-4562-b3fc-2c963f66afa6/members/2',
headers={
'Authorization': 'Bearer vpk_live_xxxxx'
}
)
result = response.json()
print(f"Removing member, task: {result['task_id']}")
{
"family_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"task_id": "task_fam459rem",
"status": "generating",
"livemode": true,
"_links": {
"self": "/v1/families/3fa85f64-5717-4562-b3fc-2c963f66afa6",
"task": "/v1/tasks/task_fam459rem"
}
}
{
"error": {
"code": "PLAN_NOT_ALLOWED",
"message": "Families are available on the Pro, Max and Enterprise plans. Upgrade your plan to use this feature.",
"request_id": "req_xyz123"
}
}
{
"error": {
"code": "FAMILY_NOT_FOUND",
"message": "Family not found or not accessible with this API key.",
"request_id": "req_xyz123"
}
}
{
"error": {
"code": "FAMILY_MEMBER_NOT_FOUND",
"message": "Member index is out of range for this family.",
"request_id": "req_xyz123"
}
}
{
"error": {
"code": "FAMILY_NOT_READY",
"message": "Another generation is already in progress for this family. Poll the task until it finishes, then retry.",
"request_id": "req_xyz123"
}
}
{
"error": {
"code": "FAMILY_MEMBER_MINIMUM",
"message": "A family must have at least 1 member.",
"request_id": "req_xyz123"
}
}
Polling for Completion
Poll the returnedtask_id via Get Task. Once status is completed, Get Family reflects the remaining members and the regenerated group card_image_url.
If the task fails, the family is left exactly as it was: the member is not removed.
Error Codes
| Code | Status | Description |
|---|---|---|
MISSING_API_KEY | 401 | No Authorization header was sent |
INVALID_API_KEY | 401 | The API key is invalid or has been revoked |
PLAN_NOT_ALLOWED | 403 | Your plan doesn’t allow editing a family (requires Pro, Max, or Enterprise) |
FAMILY_NOT_FOUND | 404 | Family doesn’t exist or isn’t yours |
FAMILY_MEMBER_NOT_FOUND | 404 | index is out of range for this family’s members array |
FAMILY_NOT_READY | 422 | Another generation is already in progress for this family |
FAMILY_MEMBER_MINIMUM | 422 | The family only has 1 member left and cannot be reduced further |

