Reschedule call attempt
curl --request PATCH \
--url https://api.instaview.sk/conversations/{id}/call-attempts/{attemptId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"scheduledAt": "2026-05-01T12:00:00Z"
}
'import requests
url = "https://api.instaview.sk/conversations/{id}/call-attempts/{attemptId}"
payload = { "scheduledAt": "2026-05-01T12:00:00Z" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({scheduledAt: '2026-05-01T12:00:00Z'})
};
fetch('https://api.instaview.sk/conversations/{id}/call-attempts/{attemptId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.instaview.sk/conversations/{id}/call-attempts/{attemptId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'scheduledAt' => '2026-05-01T12:00:00Z'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.instaview.sk/conversations/{id}/call-attempts/{attemptId}"
payload := strings.NewReader("{\n \"scheduledAt\": \"2026-05-01T12:00:00Z\"\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.instaview.sk/conversations/{id}/call-attempts/{attemptId}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"scheduledAt\": \"2026-05-01T12:00:00Z\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.instaview.sk/conversations/{id}/call-attempts/{attemptId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"scheduledAt\": \"2026-05-01T12:00:00Z\"\n}"
response = http.request(request)
puts response.read_bodyConversations
Reschedule Call Attempt
Reschedules an existing call attempt to a future time. Only call attempts in SCHEDULED status can be rescheduled. Blocked for ONLINE conversations.
PATCH
/
conversations
/
{id}
/
call-attempts
/
{attemptId}
Reschedule call attempt
curl --request PATCH \
--url https://api.instaview.sk/conversations/{id}/call-attempts/{attemptId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"scheduledAt": "2026-05-01T12:00:00Z"
}
'import requests
url = "https://api.instaview.sk/conversations/{id}/call-attempts/{attemptId}"
payload = { "scheduledAt": "2026-05-01T12:00:00Z" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({scheduledAt: '2026-05-01T12:00:00Z'})
};
fetch('https://api.instaview.sk/conversations/{id}/call-attempts/{attemptId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.instaview.sk/conversations/{id}/call-attempts/{attemptId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'scheduledAt' => '2026-05-01T12:00:00Z'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.instaview.sk/conversations/{id}/call-attempts/{attemptId}"
payload := strings.NewReader("{\n \"scheduledAt\": \"2026-05-01T12:00:00Z\"\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.instaview.sk/conversations/{id}/call-attempts/{attemptId}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"scheduledAt\": \"2026-05-01T12:00:00Z\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.instaview.sk/conversations/{id}/call-attempts/{attemptId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"scheduledAt\": \"2026-05-01T12:00:00Z\"\n}"
response = http.request(request)
puts response.read_bodyPATCH /interviews/{id}/call-attempts/{attemptId} is a permanent alias of this endpoint and keeps working unchanged, with the same scopes and the same response. See Resource names.ONLINE conversations: managing individual call attempts is forbidden on an
ONLINE conversation.Overview
Use this endpoint to move a scheduled call attempt to a different time — most often because the contact asked for a particular slot.Restrictions
- Status Restriction: You can only reschedule call attempts that are in
SCHEDULEDstatus. Attempts that are in any other state (e.g.,IN_PROGRESS,COMPLETED,FAILED,CANCELLED) cannot be rescheduled. - In-Progress Protection: If the attempt is currently being processed (status
IN_PROGRESS), the request will be blocked with a400 Bad Requesterror to prevent race conditions. - Future Time: The
scheduledAttime must be in the future. - Calling window: the time you send is used exactly as given, including when it falls outside the agent’s calling window. Rescheduling is you naming a time, which is usually a slot the contact asked for, so it overrides the agent’s hours rather than being moved into them.
Effect on the conversation
Moving an attempt also moves the conversation it belongs to:status becomes SCHEDULED, because an attempt is queued and waiting again. If the conversation had already settled on a terminal status, rescheduling reopens it — the status returns to SCHEDULED and finishedDate is cleared, under the same id. See Reopening a terminal conversation.
Webhooks
A successful reschedule emitsconversation.rescheduled with reason: "API_REQUEST", once the change is committed. A webhook still on the LEGACY vocabulary receives the same payload as interview.rescheduled.
Because this endpoint moves an existing attempt rather than ending one and creating another, the same callAttemptId appears in both previousAttempt and nextAttempt, and previousAttempt.status is SCHEDULED — no call took place. This is the only case where the two IDs match; for every other reason they differ.
{
"event": "conversation.rescheduled",
"data": {
"reason": "API_REQUEST",
"previousAttempt": {
"callAttemptId": "call-attempt-uuid",
"status": "SCHEDULED",
"attemptNumber": 1
},
"nextAttempt": {
"callAttemptId": "call-attempt-uuid",
"scheduledAt": "2026-05-01T14:30:00.000Z",
"attemptNumber": 1
}
}
}
A
reason of ADMIN on this event means InstaView staff moved the attempt
from the internal admin panel rather than you moving it through the API —
worth surfacing differently in your system.Example
{
"scheduledAt": "2026-05-01T14:30:00Z"
}
Queue Sync: The system automatically synchronizes with the internal processing queue when an attempt is rescheduled, ensuring it runs at the new specified time.
Authorizations
API key for authentication using Bearer scheme
Query Parameters
Required for ATS API keys to specify which company to access. Ignored for standard company API keys.
Body
application/json
New scheduled time for the call attempt (ISO string). Must be in the future. Used exactly as sent, including when it falls outside the agent's calling window.
Example:
"2026-05-01T12:00:00Z"
Response
204
Call attempt rescheduled successfully