Requeue or skip a campaign contact
import { createClient, createResources } from "@morevoice/sdk";
const mv = createResources({ client: createClient({ baseUrl: "https://api.morevoice.ai/v1", auth: process.env.MOREVOICE_API_KEY }),});
const campaignContact = await mv.campaigns.contacts.update("cmp_ojFwMD7YNTROjaTP0i3ZFb", "ctc_NKhjnYPvBUr2gmEgqwqw5N", { status: "skipped",});console.log(campaignContact);import os
import requests
response = requests.patch( "https://api.morevoice.ai/v1/campaigns/cmp_ojFwMD7YNTROjaTP0i3ZFb/contacts/ctc_NKhjnYPvBUr2gmEgqwqw5N", headers={"Authorization": f"Bearer {os.environ['MOREVOICE_API_KEY']}"}, json={ "status": "skipped", },)response.raise_for_status()print(response.json())curl -X PATCH https://api.morevoice.ai/v1/campaigns/cmp_ojFwMD7YNTROjaTP0i3ZFb/contacts/ctc_NKhjnYPvBUr2gmEgqwqw5N \ -H "Authorization: Bearer $MOREVOICE_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "status": "skipped"}'Status scheduled dials the contact again now (refused for a number on the do-not-call list); skipped takes it out of the campaign. A contact being dialled can’t change.
Try it in the API playground with a test-mode key.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”A campaign ID (cmp_…).
A contact ID (ctc_…).
Header Parameters
Section titled “Header Parameters”The API version to use for this request. Defaults to the version the API key is pinned to.
Example
2026-11-01Request Bodyrequired
Section titled “Request Bodyrequired”Requeue or skip a contact, like the dashboard’s contact actions.
object
Scheduled: dial it again now (refused for a do-not-call number); skipped: take it out of the campaign.
Responses
Section titled “Responses”OK
A contact in a campaign, with its dialling state and result.
object
A campaign ID (prefix cmp_).
The import said the person consented. Marketing calls also need a consent record with evidence (§30A).
An ISO-8601 timestamp in UTC.
A contact ID (prefix ctc_).
The last attempt’s result (answered, no_answer, busy, voicemail, …).
true in live mode, false in test mode.
The disposition the assistant recorded.
E.164.
Why it is not dialled: dnc_import, dnc_dial_time, registry, no_consent, no_consent_evidence, no_calling_window, manual, …
Pending → dialing → scheduled | callback → … → done | failed; skipped, dnc, invalid and cancelled are never dialled.
An ISO-8601 timestamp in UTC.
object
Example
{ "attempts": 1, "campaign_id": "cmp_2Yb7mCq9aPLk", "completed_at": "2026-11-02T09:17:30.000Z", "consent": true, "created_at": "2026-11-01T08:00:00.000Z", "id": "ctc_1aB2cD3eF4g", "last_attempt_at": "2026-11-02T09:14:00.000Z", "last_call_id": "call_3Hk9PqR2sT", "last_result": "answered", "livemode": true, "name": "Dana Levi", "next_attempt_at": null, "object": "campaign_contact", "outcome": "interested", "outcome_data": { "notes": "Wants the annual plan" }, "phone": "+972501234567", "row": 2, "skip_reason": null, "status": "done", "timezone": null, "updated_at": "2026-11-02T09:17:30.000Z", "variables": { "plan": "Gold" }}The request is invalid: a parameter is missing, malformed or unknown, or the version header is unknown.
Every /v1 error.
object
object
A stable, machine-readable code from the error-code catalogue.
Structured context, e.g. required_scope or the compliance verdict.
object
A link to the documentation of this code.
A human-readable explanation. Do not parse it.
The request parameter the error relates to, e.g. to or metadata[order_id].
The X-Request-Id of this request. Quote it when you contact support.
The category of the error.
Example
{ "error": { "code": "parameter_missing", "doc_url": "https://docs.morevoice.ai/api/errors#parameter-missing", "message": "Missing required parameter: to.", "param": "to", "request_id": "req_7Hk2LmN9pQ4rS6tV8wX0yZ", "type": "invalid_request_error" }}Headers
Section titled “Headers”The request’s ID (req_…). Quote it when you contact support.
No valid API key was sent.
Every /v1 error.
object
object
A stable, machine-readable code from the error-code catalogue.
Structured context, e.g. required_scope or the compliance verdict.
object
A link to the documentation of this code.
A human-readable explanation. Do not parse it.
The request parameter the error relates to, e.g. to or metadata[order_id].
The X-Request-Id of this request. Quote it when you contact support.
The category of the error.
Example
{ "error": { "code": "invalid_api_key", "doc_url": "https://docs.morevoice.ai/api/errors#invalid-api-key", "message": "Invalid API key.", "request_id": "req_7Hk2LmN9pQ4rS6tV8wX0yZ", "type": "authentication_error" }}Headers
Section titled “Headers”The request’s ID (req_…). Quote it when you contact support.
The key may not do this (a missing scope, a plan limit, or a compliance block).
Every /v1 error.
object
object
A stable, machine-readable code from the error-code catalogue.
Structured context, e.g. required_scope or the compliance verdict.
object
A link to the documentation of this code.
A human-readable explanation. Do not parse it.
The request parameter the error relates to, e.g. to or metadata[order_id].
The X-Request-Id of this request. Quote it when you contact support.
The category of the error.
Example
{ "error": { "code": "missing_scope", "doc_url": "https://docs.morevoice.ai/api/errors#missing-scope", "message": "This API key lacks the calls:write scope.", "request_id": "req_7Hk2LmN9pQ4rS6tV8wX0yZ", "type": "permission_error" }}Headers
Section titled “Headers”The request’s ID (req_…). Quote it when you contact support.
No object with this ID exists in this organisation and mode.
Every /v1 error.
object
object
A stable, machine-readable code from the error-code catalogue.
Structured context, e.g. required_scope or the compliance verdict.
object
A link to the documentation of this code.
A human-readable explanation. Do not parse it.
The request parameter the error relates to, e.g. to or metadata[order_id].
The X-Request-Id of this request. Quote it when you contact support.
The category of the error.
Example
{ "error": { "code": "resource_missing", "doc_url": "https://docs.morevoice.ai/api/errors#resource-missing", "message": "No such object: 'call_4Gk2'.", "param": "id", "request_id": "req_7Hk2LmN9pQ4rS6tV8wX0yZ", "type": "not_found" }}Headers
Section titled “Headers”The request’s ID (req_…). Quote it when you contact support.
Too many requests, or no call capacity right now. Retry after the Retry-After delay.
Every /v1 error.
object
object
A stable, machine-readable code from the error-code catalogue.
Structured context, e.g. required_scope or the compliance verdict.
object
A link to the documentation of this code.
A human-readable explanation. Do not parse it.
The request parameter the error relates to, e.g. to or metadata[order_id].
The X-Request-Id of this request. Quote it when you contact support.
The category of the error.
Example
{ "error": { "code": "rate_limited", "doc_url": "https://docs.morevoice.ai/api/errors#rate-limited", "message": "Too many requests. Retry after 1 second.", "request_id": "req_7Hk2LmN9pQ4rS6tV8wX0yZ", "type": "rate_limit_error" }}Headers
Section titled “Headers”Seconds to wait before retrying.
The request’s ID (req_…). Quote it when you contact support.
Something went wrong on MoreVoice’s side. Retry with the same Idempotency-Key.
Every /v1 error.
object
object
A stable, machine-readable code from the error-code catalogue.
Structured context, e.g. required_scope or the compliance verdict.
object
A link to the documentation of this code.
A human-readable explanation. Do not parse it.
The request parameter the error relates to, e.g. to or metadata[order_id].
The X-Request-Id of this request. Quote it when you contact support.
The category of the error.
Example
{ "error": { "code": "internal_error", "doc_url": "https://docs.morevoice.ai/api/errors#internal-error", "message": "Something went wrong on MoreVoice's side.", "request_id": "req_7Hk2LmN9pQ4rS6tV8wX0yZ", "type": "api_error" }}Headers
Section titled “Headers”The request’s ID (req_…). Quote it when you contact support.