---
title: "Update errand group"
method: POST
path: "/v1/errands/group/{id}/plan"
tags: ["Owner"]
---

# Update errand group

`POST /v1/errands/group/{id}/plan`

## Request

- Base URL: `https://api.vicem.ai`
- URL: `https://api.vicem.ai/v1/errands/group/{id}/plan`
- Auth: HTTP bearer

## Path parameters

- `id` string, required

## Request body

- UpdateErrandGroupRequest
  - `remove` string
  - `add` string

## Response `200`

OK

- CreateErrandGroupResponse
  - `id` string, required
  - `status` 'planned' | 'running' | 'done' | 'cancelled', required
  - `mode` 'sequential' | 'parallel', required
  - `request` string, required
  - `goal` string, required
  - `allowedFacts` string[], required
  - `destinations` object[], required
    - `errandId` string, required
    - `name` string, nullable, required
    - `targetE164` string, required
    - `source` 'contact' | 'places' | 'typed', required
    - `label` string, nullable, required
    - `status` 'planned' | 'queued' | 'dialing' | 'ivr' | 'on_hold' | 'talking' | 'done' | 'failed' | 'needs_owner' | 'cancelled', required
    - `statusLine` string, required
  - `refused` object[], required
    - `name` string, nullable, required
    - `message` string, required
  - `payloadHash` string, nullable, required
  - `blocker` object, nullable, required
    - `reason` 'no_number' | 'invalid' | 'needs_area_code' | 'emergency' | 'premium' | 'short_code' | 'own_number' | 'unsupported_country' | 'opted_out' | 'business_dnc' | 'owner_daily_cap' | 'destination_daily_cap' | 'no_minutes' | 'service_off' | 'no_caller', required
    - `message` string, required
  - `comparison` object, nullable, required
    - `title` string, required
    - `theySaid` string, required
    - `quotes` integer, required
    - `lowestErrandId` string, required
    - `rows` object[], required
      - `errandId` string, required
      - `name` string, nullable, required
      - `number` string, nullable, required
      - `result` 'achieved' | 'partial' | 'not_achieved' | 'no_answer' | 'voicemail' | 'needs_owner' | 'refused_ai' | 'no_answer_closed', nullable, required
      - `price` string, nullable, required
      - `amount` number, nullable, required
      - `earliest` string, nullable, required
      - `included` string, nullable, required
      - `reference` string, nullable, required
      - `claim` 'they_said', required
      - `bookLabel` string, nullable, required
  - `createdAt` string, date-time, required
  - `approvedAt` string, date-time, required
  - `finishedAt` string, date-time, required

## Other responses

- `400`: Invalid request (body not JSON, or schema validation failed).
- `401`: Missing, expired or invalid bearer token.
- `404`: No such resource, or not visible to this caller.
- `413`: Body over the limit (64 KB; 512 KB for contact import).
- `500`: Unexpected server error (reported to Sentry).

---

[API](https://skmtc.dev/vicem/apis/vicem-api.md) · [All operations](https://skmtc.dev/vicem/apis/vicem-api/llms.txt) · [OpenAPI document](https://skmtc.dev/vicem/apis/vicem-api/revisions/9efcec07e5f4?raw)
