GET /v1/de/{cdc}/kude
curl --request GET \
--url https://api.emiti.fravelabs.com/v1/de/{cdc}/kude \
--header 'Authorization: <api-key>'import requests
url = "https://api.emiti.fravelabs.com/v1/de/{cdc}/kude"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://api.emiti.fravelabs.com/v1/de/{cdc}/kude', 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.emiti.fravelabs.com/v1/de/{cdc}/kude",
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: <api-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"
"net/http"
"io"
)
func main() {
url := "https://api.emiti.fravelabs.com/v1/de/{cdc}/kude"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<api-key>")
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.emiti.fravelabs.com/v1/de/{cdc}/kude")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.emiti.fravelabs.com/v1/de/{cdc}/kude")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"detail": [
{
"loc": [
"<string>"
],
"type": "<string>"
}
]
}Emisión y consulta
Descargar KuDE
Descarga directa del KuDE de un DE, disponible desde la emisión.
GET
/
v1
/
de
/
{cdc}
/
kude
GET /v1/de/{cdc}/kude
curl --request GET \
--url https://api.emiti.fravelabs.com/v1/de/{cdc}/kude \
--header 'Authorization: <api-key>'import requests
url = "https://api.emiti.fravelabs.com/v1/de/{cdc}/kude"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://api.emiti.fravelabs.com/v1/de/{cdc}/kude', 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.emiti.fravelabs.com/v1/de/{cdc}/kude",
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: <api-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"
"net/http"
"io"
)
func main() {
url := "https://api.emiti.fravelabs.com/v1/de/{cdc}/kude"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<api-key>")
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.emiti.fravelabs.com/v1/de/{cdc}/kude")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.emiti.fravelabs.com/v1/de/{cdc}/kude")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"detail": [
{
"loc": [
"<string>"
],
"type": "<string>"
}
]
}Endpoint de conveniencia para descargar el KuDE (Kuatia’i Documento Electrónico — representación visual del DE). Redirige a una URL pre-firmada de S3 con vigencia de 1 hora, así que tu cliente HTTP debe seguir el redirect.
El flag
curl -L -o factura.pdf https://api.emiti.fravelabs.com/v1/de/{cdc}/kude \
-H "Authorization: ApiKey emiti_k_..."
-L de cURL sigue el redirect automáticamente.
Disponible al instante
El KuDE está disponible apenas emitís el documento, en estadoP (pendiente), para que puedas imprimirlo en el acto —por ejemplo, en la caja de un comercio— sin esperar la respuesta de SIFEN. Cuando SIFEN aprueba el documento, este endpoint sirve automáticamente la versión definitiva. Siempre devuelve la representación más reciente disponible.
Estados posibles
| Status | Significado |
|---|---|
302 | KuDE listo. El header Location apunta a la URL S3 pre-firmada. Disponible desde la emisión (estado P) y tras la aprobación. |
202 | El KuDE aún se está generando. Reintentar en retry_after_seconds. |
409 | El DE existe pero todavía no tiene KuDE disponible (documentos emitidos antes de esta funcionalidad). |
404 | CDC no existe o pertenece a otro tenant. |
400 | CDC no tiene 44 caracteres. |
Alternativa: detalle del DE
Si ya estás consultando el detalle completo, el response incluyekude_url con la URL pre-firmada directamente — sin necesidad de una segunda llamada.