curl --request GET \
--url https://api.listo.delivery/v1/deliveries \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.listo.delivery/v1/deliveries"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.listo.delivery/v1/deliveries', 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.listo.delivery/v1/deliveries",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.listo.delivery/v1/deliveries"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.listo.delivery/v1/deliveries")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.listo.delivery/v1/deliveries")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"id": "dlv_7hK2mQ9xR4tV6bN1cZ8sLwYe",
"external_id": "order-841",
"origin": "api",
"code": "LS-2004",
"status": "courier_assigned",
"store_id": "st_4bR8kM2wQ7xT1nV5cZ9pLdYe",
"test": false,
"payment": {
"method": "cash",
"status": "unpaid",
"url": null,
"cash_to_collect_cents": 5410,
"paid_at": null
},
"order_value_cents": 3630,
"fee_cents": 1780,
"business_fee_cents": 0,
"customer_fee_cents": 1780,
"tip_cents": 0,
"currency": "MXN",
"quote_id": null,
"pickup": {
"name": "Tortería La Mera Mera",
"street": "Av. Juan Palomar y Arias 765",
"lat": 20.691145,
"lng": -103.426885,
"notes": "Toca el timbre del local, no la puerta principal"
},
"dropoff": {
"name": "Ana Torres",
"phone": "+528112345678",
"street": "Blvd. Puerta de Hierro 4965",
"apt_unit": "Apt 3",
"lat": 20.709395,
"lng": -103.413393,
"notes": "Ring buzzer 3",
"handoff": "meet_at_door"
},
"manifest": null,
"vehicle": "moto",
"courier": {
"name": "Luis Herrera",
"vehicle": "Motorcycle",
"vehicle_type": "motorcycle",
"plate": "8XYZ123",
"phone": {
"masked": "+525512345678",
"pin": null
},
"location": null,
"imminent": false
},
"pickup_eta_at": null,
"dropoff_eta_at": null,
"tracking_url": "https://app.listo.delivery/t/abc123",
"verification": null,
"return_verification": {
"pincode": null
},
"proof": null,
"proofs": {
"pickup": null,
"dropoff": null,
"return": null
},
"cancellation": null,
"failure_reason": null,
"charges": [],
"refunds": [],
"refunded_cents": 0,
"refundable_cents": 0,
"support_reference": null,
"pickup_ready_at": null,
"requested_at": null,
"courier_assigned_at": "2026-07-31T22:14:44Z",
"picked_up_at": null,
"delivered_at": null,
"canceled_at": null,
"returned_at": null,
"created_at": "2026-08-02T00:01:00Z",
"updated_at": "2026-07-31T22:14:44Z"
}
],
"has_more": false,
"cursor": null
}{
"error": {
"code": "invalid_api_key",
"message": "The API key is missing, revoked, or not valid for this mode.",
"param": null,
"retryable": false,
"doc_url": "https://docs.listo.delivery/en/errors/invalid_api_key",
"request_id": "0b1f6c9a-7e2d-4c53-9a41-5d8e3f2a6b10"
}
}{
"error": {
"code": "not_found",
"message": "No resource with that id exists for this API key.",
"param": null,
"retryable": false,
"doc_url": "https://docs.listo.delivery/en/errors/not_found",
"request_id": "0b1f6c9a-7e2d-4c53-9a41-5d8e3f2a6b10"
}
}{
"error": {
"code": "validation_failed",
"message": "A field failed validation. See param for the field it applies to.",
"param": "created_after",
"retryable": false,
"doc_url": "https://docs.listo.delivery/en/errors/validation_failed",
"request_id": "0b1f6c9a-7e2d-4c53-9a41-5d8e3f2a6b10"
}
}Lista envíos
Tus envíos, los más nuevos primero, paginados por keyset igual que las tiendas. Filtra por status, payment_status, store_id, external_id, created_after y created_before.
Esta es también la vía de recuperación después de una caída de webhooks. Vuelve a leer los envíos cuyo estado quizá te perdiste; el objeto que recibes es el mismo que habría traído el webhook, y es donde están las cosas ahora. Puedes volver a enviar un evento con POST /v1/events/{event_id}/resend, pero un evento reenviado lleva la instantánea del momento en que ocurrió, así que un cambio de estado de hace un día describe un estado que el pedido ya dejó atrás. Usa un reenvío para depurar un manejador, y esta lista para ponerte al día.
curl --request GET \
--url https://api.listo.delivery/v1/deliveries \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.listo.delivery/v1/deliveries"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.listo.delivery/v1/deliveries', 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.listo.delivery/v1/deliveries",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.listo.delivery/v1/deliveries"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.listo.delivery/v1/deliveries")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.listo.delivery/v1/deliveries")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"id": "dlv_7hK2mQ9xR4tV6bN1cZ8sLwYe",
"external_id": "order-841",
"origin": "api",
"code": "LS-2004",
"status": "courier_assigned",
"store_id": "st_4bR8kM2wQ7xT1nV5cZ9pLdYe",
"test": false,
"payment": {
"method": "cash",
"status": "unpaid",
"url": null,
"cash_to_collect_cents": 5410,
"paid_at": null
},
"order_value_cents": 3630,
"fee_cents": 1780,
"business_fee_cents": 0,
"customer_fee_cents": 1780,
"tip_cents": 0,
"currency": "MXN",
"quote_id": null,
"pickup": {
"name": "Tortería La Mera Mera",
"street": "Av. Juan Palomar y Arias 765",
"lat": 20.691145,
"lng": -103.426885,
"notes": "Toca el timbre del local, no la puerta principal"
},
"dropoff": {
"name": "Ana Torres",
"phone": "+528112345678",
"street": "Blvd. Puerta de Hierro 4965",
"apt_unit": "Apt 3",
"lat": 20.709395,
"lng": -103.413393,
"notes": "Ring buzzer 3",
"handoff": "meet_at_door"
},
"manifest": null,
"vehicle": "moto",
"courier": {
"name": "Luis Herrera",
"vehicle": "Motorcycle",
"vehicle_type": "motorcycle",
"plate": "8XYZ123",
"phone": {
"masked": "+525512345678",
"pin": null
},
"location": null,
"imminent": false
},
"pickup_eta_at": null,
"dropoff_eta_at": null,
"tracking_url": "https://app.listo.delivery/t/abc123",
"verification": null,
"return_verification": {
"pincode": null
},
"proof": null,
"proofs": {
"pickup": null,
"dropoff": null,
"return": null
},
"cancellation": null,
"failure_reason": null,
"charges": [],
"refunds": [],
"refunded_cents": 0,
"refundable_cents": 0,
"support_reference": null,
"pickup_ready_at": null,
"requested_at": null,
"courier_assigned_at": "2026-07-31T22:14:44Z",
"picked_up_at": null,
"delivered_at": null,
"canceled_at": null,
"returned_at": null,
"created_at": "2026-08-02T00:01:00Z",
"updated_at": "2026-07-31T22:14:44Z"
}
],
"has_more": false,
"cursor": null
}{
"error": {
"code": "invalid_api_key",
"message": "The API key is missing, revoked, or not valid for this mode.",
"param": null,
"retryable": false,
"doc_url": "https://docs.listo.delivery/en/errors/invalid_api_key",
"request_id": "0b1f6c9a-7e2d-4c53-9a41-5d8e3f2a6b10"
}
}{
"error": {
"code": "not_found",
"message": "No resource with that id exists for this API key.",
"param": null,
"retryable": false,
"doc_url": "https://docs.listo.delivery/en/errors/not_found",
"request_id": "0b1f6c9a-7e2d-4c53-9a41-5d8e3f2a6b10"
}
}{
"error": {
"code": "validation_failed",
"message": "A field failed validation. See param for the field it applies to.",
"param": "created_after",
"retryable": false,
"doc_url": "https://docs.listo.delivery/en/errors/validation_failed",
"request_id": "0b1f6c9a-7e2d-4c53-9a41-5d8e3f2a6b10"
}
}Autorizaciones
Tu llave de API, enviada como Authorization: Bearer <key>. Las llaves reales y de prueba son distintas; la llave que envías decide en qué modo actúa la llamada. Para probar llamadas, usa una llave de prueba (empieza con lst_test_): no se envía ningún repartidor real y no se mueve dinero real, pero los webhooks se disparan y el dropoff.phone que des puede recibir mensajes de WhatsApp, así que usa tu propio número. Una llave real (empieza con lst_live_) reserva y cobra envíos reales.
Parámetros de consulta
Respuesta
La solicitud fue exitosa.