curl --request POST \
--url https://api.pruff.com/api/clients/files/requestType/{requestType}/requestId/{requestId} \
--header 'Content-Type: multipart/form-data' \
--header 'x-api-key: <api-key>' \
--form 'files=@example-file;type=application/octet-stream'import requests
url = "https://api.pruff.com/api/clients/files/requestType/{requestType}/requestId/{requestId}"
files = { "files": ("example-file", open("example-file", "rb"), "application/octet-stream") }
headers = {"x-api-key": "<api-key>"}
response = requests.post(url, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('files', 'factura-10235.pdf');
const options = {method: 'POST', headers: {'x-api-key': '<api-key>'}};
options.body = form;
fetch('https://api.pruff.com/api/clients/files/requestType/{requestType}/requestId/{requestId}', 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.pruff.com/api/clients/files/requestType/{requestType}/requestId/{requestId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"files\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\nfactura-10235.pdf\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Content-Type: multipart/form-data",
"x-api-key: <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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.pruff.com/api/clients/files/requestType/{requestType}/requestId/{requestId}"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"files\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\nfactura-10235.pdf\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
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.pruff.com/api/clients/files/requestType/{requestType}/requestId/{requestId}")
.header("x-api-key", "<api-key>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"files\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\nfactura-10235.pdf\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.pruff.com/api/clients/files/requestType/{requestType}/requestId/{requestId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"files\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\nfactura-10235.pdf\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"requestType": "factoring",
"requestId": 123,
"uploaded": 2
}Subir archivos a una operación
Sube uno o más archivos adjuntos a una operación (factoring, confirming, línea de crédito o solicitud de crédito). Los archivos se guardan en la carpeta de documentos de esa operación.
Los archivos nuevos reemplazan a los existentes según su nombre: si la parte del nombre antes del primer punto (por ejemplo factura en factura.v2.pdf) coincide con el comienzo del nombre de un archivo ya guardado, ese archivo existente se elimina y se reemplaza por el nuevo. Por eso, usa un nombre base único para cada archivo, que no sea el comienzo del nombre de otro archivo de la operación, y no empieces un nombre con un punto (por ejemplo .pdf).
Con creditLine, usa nombres base únicos entre todas las líneas de crédito del mismo cliente.
Revisa que el requestId corresponda a una operación de tu empresa antes de subir.
La solicitud se envía como multipart/form-data (no JSON). Repite el campo files por cada archivo. Usa exactamente ese nombre de campo. La subida completa debe terminar en 55 segundos.
Puedes subir hasta 10 archivos por solicitud, de hasta 20 MB cada uno. La solicitud completa (Content-Length) no puede superar 51 MB: 50 MB de archivos más 1 MB para el resto del formulario. Envía siempre el header Content-Length; una subida sin él (por ejemplo, con Transfer-Encoding: chunked) se rechaza.
Formatos permitidos: PDF, JPG, JPEG, PNG, GIF, WEBP, HEIC, DOC, DOCX, XLS, XLSX, PPT, PPTX, ODT, CSV, TXT, XML, MSG, ZIP y RAR. Pruff revisa solo la extensión del nombre de cada archivo; el Content-Type de cada parte no se valida y puede faltar.
curl --request POST \
--url https://api.pruff.com/api/clients/files/requestType/{requestType}/requestId/{requestId} \
--header 'Content-Type: multipart/form-data' \
--header 'x-api-key: <api-key>' \
--form 'files=@example-file;type=application/octet-stream'import requests
url = "https://api.pruff.com/api/clients/files/requestType/{requestType}/requestId/{requestId}"
files = { "files": ("example-file", open("example-file", "rb"), "application/octet-stream") }
headers = {"x-api-key": "<api-key>"}
response = requests.post(url, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('files', 'factura-10235.pdf');
const options = {method: 'POST', headers: {'x-api-key': '<api-key>'}};
options.body = form;
fetch('https://api.pruff.com/api/clients/files/requestType/{requestType}/requestId/{requestId}', 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.pruff.com/api/clients/files/requestType/{requestType}/requestId/{requestId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"files\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\nfactura-10235.pdf\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Content-Type: multipart/form-data",
"x-api-key: <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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.pruff.com/api/clients/files/requestType/{requestType}/requestId/{requestId}"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"files\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\nfactura-10235.pdf\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
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.pruff.com/api/clients/files/requestType/{requestType}/requestId/{requestId}")
.header("x-api-key", "<api-key>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"files\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\nfactura-10235.pdf\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.pruff.com/api/clients/files/requestType/{requestType}/requestId/{requestId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"files\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\nfactura-10235.pdf\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"requestType": "factoring",
"requestId": 123,
"uploaded": 2
}Parámetros de ruta
Cuerpo
Respuesta
Archivos guardados.