curl --request GET \
--url https://api.listo.delivery/v1/request_logs/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.listo.delivery/v1/request_logs/{id}"
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/request_logs/{id}', 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/request_logs/{id}",
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/request_logs/{id}"
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/request_logs/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.listo.delivery/v1/request_logs/{id}")
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{
"id": "req_4f9c2b7e1a8d3056b1c2d3e4",
"method": "POST",
"path": "/v1/deliveries",
"endpoint": "api/v1/deliveries#create",
"status": 201,
"error_code": null,
"duration_ms": 120,
"request_id": "0b1f6c9a-7e2d-4c53-9a41-5d8e3f2a6b10",
"api_key_prefix": "lst_live_Ab1",
"test": false,
"created_at": "2026-08-01T12:00:00Z",
"request_body": {
"reference": "order-1042"
},
"response_body": {
"id": "dlv_7hK2mQ9xR4tV6bN1cZ8sLwYe",
"status": "pending"
}
}Obtén una entrada del registro de solicitudes
Una llamada, con lo que envió (request_body) y lo que respondió Listo (response_body), ambos en JSON. En caso de fallo, la respuesta es el sobre de error que recibiste y la solicitud es lo que realmente salió por la red.
Estas son las copias guardadas. Una llave de API en cualquier parte de un cuerpo aparece con sus primeros caracteres seguidos de [key masked]. El enlace de un solo uso en la respuesta a POST /v1/connect_requests o a una llamada de incorporación de Stripe aparece como [redacted: one-time link]; lo que recibiste no se modifica. Un cuerpo de más de 64 KB se guarda como un objeto con _listo_truncated: true, su original_bytes y los primeros 64 KB como text, así que siempre se te indica cuando no estás leyendo todo. Los encabezados nunca se guardan.
Una llamada que no era tuya, o que se hizo con una llave del otro modo, es 404 not_found.
curl --request GET \
--url https://api.listo.delivery/v1/request_logs/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.listo.delivery/v1/request_logs/{id}"
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/request_logs/{id}', 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/request_logs/{id}",
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/request_logs/{id}"
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/request_logs/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.listo.delivery/v1/request_logs/{id}")
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{
"id": "req_4f9c2b7e1a8d3056b1c2d3e4",
"method": "POST",
"path": "/v1/deliveries",
"endpoint": "api/v1/deliveries#create",
"status": 201,
"error_code": null,
"duration_ms": 120,
"request_id": "0b1f6c9a-7e2d-4c53-9a41-5d8e3f2a6b10",
"api_key_prefix": "lst_live_Ab1",
"test": false,
"created_at": "2026-08-01T12:00:00Z",
"request_body": {
"reference": "order-1042"
},
"response_body": {
"id": "dlv_7hK2mQ9xR4tV6bN1cZ8sLwYe",
"status": "pending"
}
}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 ruta
El id req_ de la llamada, de GET /v1/request_logs. Una llamada que no es tuya, o que se hizo con una llave del otro modo, es 404 not_found.
Respuesta
La solicitud fue exitosa.
Una llamada con lo que se envió y lo que regresó. Los cuerpos son la copia guardada: una llave de API en cualquier parte de ellos se lee como sus primeros caracteres y [key masked], el enlace en la respuesta de POST /v1/connect_requests o de una llamada de onboarding de Stripe se lee [redacted: one-time link], y un cuerpo de más de 64 KB es un objeto con _listo_truncated: true, sus original_bytes y los primeros 64 KB como text. Los encabezados nunca se guardan.
El id de la llamada, con prefijo req_.
"req_4f9c2b7e1a8d3056b1c2d3e4"
El método HTTP de la llamada.
"POST"
La ruta que se llamó, con su cadena de consulta. Null en una llamada hecha antes de que se guardaran las rutas.
"/v1/deliveries"
A qué operación llegó la llamada, como controller#action.
"api/v1/deliveries#create"
El estado HTTP con el que respondió Listo.
422
El error.code de la respuesta cuando fue un error; si no, null.
"validation_failed"
Cuánto tardó Listo en responder, en milisegundos. Null cuando no se midió.
118
El id de solicitud de la llamada, el valor del encabezado de respuesta X-Request-Id. Null en una llamada hecha antes de que se guardaran los ids de solicitud.
"0b1f6c9a-7e2d-4c53-9a41-5d8e3f2a6b10"
Los primeros caracteres de la llave que hizo la llamada, nunca el secreto. Null cuando no hay una llave registrada para la llamada.
"lst_test_Ab1"
Verdadero cuando la llamada se hizo con una llave de prueba.
Cuándo recibió Listo la llamada, en ISO-8601 y en UTC.
"2026-11-06T16:02:11Z"
Lo que envió la llamada, como JSON. Null cuando no se envió nada, en una llamada hecha antes de que se guardaran los cuerpos, y en las tres consultas de depuración mismas, que no guardan cuerpos.
Lo que respondió Listo, como JSON. Null en las mismas filas que
request_body.