Trips
Record stop arrival
Record the arrival timestamp on a trip stop by trip and stop ID, marking when the driver checked in at the shipper or consignee location.
PUT
/
api
/
p
/
v
{version}
/
trips
/
{tripId}
/
stops
/
{stopId}
/
arrival
Record stop arrival
curl --request PUT \
--url https://integrations.alvys.com/api/p/v{version}/trips/{tripId}/stops/{stopId}/arrival \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json-patch+json' \
--data '
{
"ArrivedAt": "<string>"
}
'const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json-patch+json'},
body: JSON.stringify({ArrivedAt: '<string>'})
};
fetch('https://integrations.alvys.com/api/p/v{version}/trips/{tripId}/stops/{stopId}/arrival', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://integrations.alvys.com/api/p/v{version}/trips/{tripId}/stops/{stopId}/arrival"
payload = { "ArrivedAt": "<string>" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json-patch+json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://integrations.alvys.com/api/p/v{version}/trips/{tripId}/stops/{stopId}/arrival",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'ArrivedAt' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json-patch+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://integrations.alvys.com/api/p/v{version}/trips/{tripId}/stops/{stopId}/arrival"
payload := strings.NewReader("{\n \"ArrivedAt\": \"<string>\"\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json-patch+json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://integrations.alvys.com/api/p/v{version}/trips/{tripId}/stops/{stopId}/arrival")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json-patch+json")
.body("{\n \"ArrivedAt\": \"<string>\"\n}")
.asString();{
"AppointmentRequested": true,
"AppointmentConfirmed": true,
"ScheduleType": "<string>",
"Id": "<string>",
"StopType": "<string>",
"References": [
{
"Name": "<string>",
"Value": "<string>",
"Id": "<string>",
"ReferenceId": "<string>",
"Type": "<string>",
"Access": "<string>",
"Origin": "<string>"
}
],
"$type": "<string>",
"AppointmentDate": "2023-11-07T05:31:56Z",
"LoadingType": "<string>",
"Address": {
"Street": "<string>",
"City": "<string>",
"State": "<string>",
"ZipCode": "<string>",
"Country": "<string>"
},
"Coordinates": {
"Latitude": "<string>",
"Longitude": "<string>"
},
"Status": "<string>",
"ArrivedAt": "2023-11-07T05:31:56Z",
"DepartedAt": "2023-11-07T05:31:56Z",
"CompanyId": "<string>",
"CompanyNumber": "<string>",
"CompanyName": "<string>",
"Eta": {
"Planned": "2023-11-07T05:31:56Z",
"Live": "2023-11-07T05:31:56Z",
"Manual": "2023-11-07T05:31:56Z"
}
}{
"Errors": {},
"Type": "<string>",
"Title": "<string>",
"Status": 123,
"Detail": "<string>",
"Instance": "<string>"
}{
"Type": "<string>",
"Title": "<string>",
"Status": 123,
"Detail": "<string>",
"Instance": "<string>"
}{
"Type": "<string>",
"Title": "<string>",
"Status": 123,
"Detail": "<string>",
"Instance": "<string>"
}{
"Type": "<string>",
"Title": "<string>",
"Status": 123,
"Detail": "<string>",
"Instance": "<string>"
}{
"Type": "<string>",
"Title": "<string>",
"Status": 123,
"Detail": "<string>",
"Instance": "<string>"
}This endpoint marks the stop as arrived and updates the stop’s
The
The response returns the updated stop object.
ArrivedAt timestamp.The
ArrivedAt field is required and must be an ISO 8601 date/time. A value sent without a UTC offset is read as the stop’s local time.
Accepted formats.
yyyy-MM-dd, optionally followed by THH:mm, THH:mm:ss, or fractional seconds, and optionally a Z or ±hh:mm offset. A value in any other format — including MM/dd/yyyy — is rejected with 400 and the offending field named.Endpoint
PUT /api/p/v{version}/trips/{tripId}/stops/{stopId}/arrival
Request Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| version | string | Yes | API version (e.g. 1.0). |
| tripId | string | Yes | Unique identifier of the trip. |
| stopId | string | Yes | Unique identifier of the stop. |
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
| ArrivedAt | string (datetime) | Yes | Arrival timestamp, ISO 8601. Without a UTC offset it is read as the stop’s local time. |
Example Request Body
{
"ArrivedAt": "2026-03-16T12:34:30.277Z"
}
Example CURL request
curl --location --request PUT 'https://integrations.alvys.com/api/p/v1/trips/{tripId}/stops/{stopId}/arrival' \
--header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
--header 'Content-Type: application/json' \
--data '{
"ArrivedAt": "2026-03-16T12:34:30.277Z"
}'
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| Id | string | Unique identifier of the stop. |
| Address.Street | string | Street address of the stop location. |
| Address.City | string | City of the stop location. |
| Address.State | string | State of the stop location. |
| Address.ZipCode | string | ZIP code of the stop location. |
| AppointmentConfirmed | boolean | Indicates whether the appointment has been confirmed. |
| AppointmentDate | string (datetime) | Appointment date and time for the stop. |
| AppointmentRequested | boolean | Indicates whether an appointment has been requested. |
| ArrivedAt | string (datetime) | Timestamp when the stop was marked as arrived (UTC). |
| DepartedAt | string (datetime) | Timestamp when the stop was departed (UTC). |
| Eta | object | Estimated time of arrival at this stop. null when no planned, live, or manual estimate exists. Planned and Live require HOS-aware ETAs (Growth or Scale package, or the Samsara Premium add-on); Manual is available on every plan. |
| Eta.Planned | string (datetime) | ETA from route planning, set when the trip is planned or re-planned. |
| Eta.Live | string (datetime) | ETA recalculated from the latest vehicle location while the trip is in transit. |
| Eta.Manual | string (datetime) | ETA entered by a user or integration, or defaulted from the stop date or appointment. |
| ScheduleType | string | Schedule type (APPT or FCFS). |
| LoadingType | string | Loading type (Live, Drop, Hook, etc.). |
| StopType | string | Type of stop (Pickup, Delivery, Waypoint). |
| Status | string | Operational status of the stop. |
| Coordinates.Latitude | string | Latitude of the stop location. |
| Coordinates.Longitude | string | Longitude of the stop location. |
| References[] | array | List of references associated with the stop. |
| References[].Id | string | Reference identifier. |
| References[].ReferenceId | string | External reference identifier. |
| References[].Name | string | Name of the reference field. |
| References[].Value | string | Value of the reference. |
| References[].Type | string | Type of reference. |
| References[].Access | string | Access level. |
| References[].Origin | string | Origin of the reference. |
| CompanyId | string | Identifier of the company associated with the stop. |
| CompanyNumber | string | Company registration or identification number. |
| CompanyName | string | Company name associated with the stop. |
Example Response
{
"AppointmentRequested": true,
"AppointmentConfirmed": true,
"AppointmentDate": "2026-03-16T12:34:30.277Z",
"ScheduleType": "string",
"LoadingType": "string",
"Id": "string",
"Address": {
"Street": "string",
"City": "string",
"State": "string",
"ZipCode": "string"
},
"Coordinates": {
"Latitude": "string",
"Longitude": "string"
},
"Status": "string",
"StopType": "string",
"ArrivedAt": "2026-03-16T12:34:30.277Z",
"DepartedAt": "2026-03-16T12:34:30.277Z",
"References": [
{
"Id": "string",
"ReferenceId": "string",
"Name": "string",
"Value": "string",
"Type": "string",
"Access": "string",
"Origin": "string"
}
],
"CompanyId": "string",
"CompanyNumber": "string",
"CompanyName": "string",
"Eta": {
"Planned": "2026-03-16T10:40:00.000Z",
"Live": "2026-03-16T10:52:00.000Z",
"Manual": null
}
}
Status Codes
| Status Code | Description |
|---|---|
| 200 OK | Stop arrival successfully recorded. |
| 400 Bad Request | Invalid request body or timestamp format. |
| 404 Not Found | Trip or stop could not be found. |
Rate Limits
All endpoints are subject to API rate limits to ensure service stability and protect against traffic spikes. Refer to the Rate Limits documentation for more information.Authorizations
OAuth 2.0 client-credentials access token. Obtain one from https://auth.alvys.com/oauth/token (grant_type=client_credentials, audience=https://api.alvys.com/public/), then paste it here. The playground sends it as Authorization: Bearer <token>.
Path Parameters
API version (e.g., 1.0)
Example:
"1.0"
Body
application/json-patch+jsonapplication/jsontext/jsonapplication/*+json
Response
OK
- Option 1
- Option 2
- Option 3
Show child attributes
Show child attributes
Type discriminator for polymorphic serialization
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Estimated time of arrival at this stop. Null when no estimate exists.
Show child attributes
Show child attributes
⌘I
Record stop arrival
curl --request PUT \
--url https://integrations.alvys.com/api/p/v{version}/trips/{tripId}/stops/{stopId}/arrival \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json-patch+json' \
--data '
{
"ArrivedAt": "<string>"
}
'const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json-patch+json'},
body: JSON.stringify({ArrivedAt: '<string>'})
};
fetch('https://integrations.alvys.com/api/p/v{version}/trips/{tripId}/stops/{stopId}/arrival', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://integrations.alvys.com/api/p/v{version}/trips/{tripId}/stops/{stopId}/arrival"
payload = { "ArrivedAt": "<string>" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json-patch+json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://integrations.alvys.com/api/p/v{version}/trips/{tripId}/stops/{stopId}/arrival",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'ArrivedAt' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json-patch+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://integrations.alvys.com/api/p/v{version}/trips/{tripId}/stops/{stopId}/arrival"
payload := strings.NewReader("{\n \"ArrivedAt\": \"<string>\"\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json-patch+json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://integrations.alvys.com/api/p/v{version}/trips/{tripId}/stops/{stopId}/arrival")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json-patch+json")
.body("{\n \"ArrivedAt\": \"<string>\"\n}")
.asString();{
"AppointmentRequested": true,
"AppointmentConfirmed": true,
"ScheduleType": "<string>",
"Id": "<string>",
"StopType": "<string>",
"References": [
{
"Name": "<string>",
"Value": "<string>",
"Id": "<string>",
"ReferenceId": "<string>",
"Type": "<string>",
"Access": "<string>",
"Origin": "<string>"
}
],
"$type": "<string>",
"AppointmentDate": "2023-11-07T05:31:56Z",
"LoadingType": "<string>",
"Address": {
"Street": "<string>",
"City": "<string>",
"State": "<string>",
"ZipCode": "<string>",
"Country": "<string>"
},
"Coordinates": {
"Latitude": "<string>",
"Longitude": "<string>"
},
"Status": "<string>",
"ArrivedAt": "2023-11-07T05:31:56Z",
"DepartedAt": "2023-11-07T05:31:56Z",
"CompanyId": "<string>",
"CompanyNumber": "<string>",
"CompanyName": "<string>",
"Eta": {
"Planned": "2023-11-07T05:31:56Z",
"Live": "2023-11-07T05:31:56Z",
"Manual": "2023-11-07T05:31:56Z"
}
}{
"Errors": {},
"Type": "<string>",
"Title": "<string>",
"Status": 123,
"Detail": "<string>",
"Instance": "<string>"
}{
"Type": "<string>",
"Title": "<string>",
"Status": 123,
"Detail": "<string>",
"Instance": "<string>"
}{
"Type": "<string>",
"Title": "<string>",
"Status": 123,
"Detail": "<string>",
"Instance": "<string>"
}{
"Type": "<string>",
"Title": "<string>",
"Status": 123,
"Detail": "<string>",
"Instance": "<string>"
}{
"Type": "<string>",
"Title": "<string>",
"Status": 123,
"Detail": "<string>",
"Instance": "<string>"
}