curl --request POST \
--url https://api.novatrade24.com/v1/partners/{sellerId}/orders/{uuid}/transport/pickup \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--data '
{
"pickupDate": "2023-12-25"
}
'import requests
url = "https://api.novatrade24.com/v1/partners/{sellerId}/orders/{uuid}/transport/pickup"
payload = { "pickupDate": "2023-12-25" }
headers = {
"Idempotency-Key": "<idempotency-key>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'Idempotency-Key': '<idempotency-key>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({pickupDate: '2023-12-25'})
};
fetch('https://api.novatrade24.com/v1/partners/{sellerId}/orders/{uuid}/transport/pickup', 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.novatrade24.com/v1/partners/{sellerId}/orders/{uuid}/transport/pickup",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'pickupDate' => '2023-12-25'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"Idempotency-Key: <idempotency-key>"
],
]);
$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.novatrade24.com/v1/partners/{sellerId}/orders/{uuid}/transport/pickup"
payload := strings.NewReader("{\n \"pickupDate\": \"2023-12-25\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Idempotency-Key", "<idempotency-key>")
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.post("https://api.novatrade24.com/v1/partners/{sellerId}/orders/{uuid}/transport/pickup")
.header("Idempotency-Key", "<idempotency-key>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"pickupDate\": \"2023-12-25\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.novatrade24.com/v1/partners/{sellerId}/orders/{uuid}/transport/pickup")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Idempotency-Key"] = '<idempotency-key>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"pickupDate\": \"2023-12-25\"\n}"
response = http.request(request)
puts response.read_body{
"vins": [
{
"vin": "<string>",
"shipmentId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "NOT_STARTED",
"pickupConfirmed": true,
"deliveryConfirmed": true,
"arrivalConfirmed": true,
"pickupDate": "2023-12-25",
"deliveryDate": "2023-12-25"
}
],
"status": "NOT_STARTED",
"pickupConfirmed": true,
"pickupDate": "2023-12-25",
"deliveryConfirmed": true,
"deliveryDate": "2023-12-25",
"arrivalConfirmed": true,
"cmrUploaded": true
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>",
"traceId": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>",
"traceId": "<string>",
"errors": [
{
"field": "<string>",
"message": "<string>",
"rejectedValue": "<unknown>"
}
]
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>",
"traceId": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>",
"traceId": "<string>"
}Confirm pickup.
Records the date the vehicle left the seller’s premises, and how it was collected.
Repeatable. A second call with a corrected pickupDate replaces the
recorded one; there is no separate reversal operation. Novatrade24
records steps of a compliance process that have already happened, so a
pickup that happened cannot be revoked — only the date it was recorded
under can be corrected.
A driver is identified by document, not by this body: upload one of
CONTACT_ID_CARD, CONTACT_PASSPORT or CONTACT_DRIVERS_LICENSE
through POST /transport/documents.
curl --request POST \
--url https://api.novatrade24.com/v1/partners/{sellerId}/orders/{uuid}/transport/pickup \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--data '
{
"pickupDate": "2023-12-25"
}
'import requests
url = "https://api.novatrade24.com/v1/partners/{sellerId}/orders/{uuid}/transport/pickup"
payload = { "pickupDate": "2023-12-25" }
headers = {
"Idempotency-Key": "<idempotency-key>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'Idempotency-Key': '<idempotency-key>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({pickupDate: '2023-12-25'})
};
fetch('https://api.novatrade24.com/v1/partners/{sellerId}/orders/{uuid}/transport/pickup', 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.novatrade24.com/v1/partners/{sellerId}/orders/{uuid}/transport/pickup",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'pickupDate' => '2023-12-25'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"Idempotency-Key: <idempotency-key>"
],
]);
$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.novatrade24.com/v1/partners/{sellerId}/orders/{uuid}/transport/pickup"
payload := strings.NewReader("{\n \"pickupDate\": \"2023-12-25\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Idempotency-Key", "<idempotency-key>")
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.post("https://api.novatrade24.com/v1/partners/{sellerId}/orders/{uuid}/transport/pickup")
.header("Idempotency-Key", "<idempotency-key>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"pickupDate\": \"2023-12-25\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.novatrade24.com/v1/partners/{sellerId}/orders/{uuid}/transport/pickup")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Idempotency-Key"] = '<idempotency-key>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"pickupDate\": \"2023-12-25\"\n}"
response = http.request(request)
puts response.read_body{
"vins": [
{
"vin": "<string>",
"shipmentId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "NOT_STARTED",
"pickupConfirmed": true,
"deliveryConfirmed": true,
"arrivalConfirmed": true,
"pickupDate": "2023-12-25",
"deliveryDate": "2023-12-25"
}
],
"status": "NOT_STARTED",
"pickupConfirmed": true,
"pickupDate": "2023-12-25",
"deliveryConfirmed": true,
"deliveryDate": "2023-12-25",
"arrivalConfirmed": true,
"cmrUploaded": true
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>",
"traceId": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>",
"traceId": "<string>",
"errors": [
{
"field": "<string>",
"message": "<string>",
"rejectedValue": "<unknown>"
}
]
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>",
"traceId": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>",
"traceId": "<string>"
}Authorizations
OAuth 2.0 client_credentials grant via Keycloak service account.
Clients are provisioned per IntegrationOrganization in the
nt24-idp realm.
Headers
Client-generated unique key (UUID recommended) for this write operation.
Identical key + identical body within 24h returns the cached response.
Identical key + different body returns 422.
1 - 255Path Parameters
UUID of the seller trade partner (must be in caller's authorized list).
Body
Response
Pickup confirmed.
One entry per vehicle of the order, sorted by VIN. Always present, and empty only for an order with no vehicle. Added in 1.5.0-draft; the order-level fields above keep their meaning.
Show child attributes
Show child attributes
The whole order's state, across its transports. On an order
split across several shipments this is the least advanced
transport: DELIVERED only once every transport has arrived. A
shipment with no transport is not counted here; its vehicles
read NOT_STARTED in vins, which also says which vehicles got
further.
NOT_STARTED, PICKUP_CONFIRMED, DELIVERED