Obtener cuentas de un usuario
curl --request GET \
--url https://api.pruff.com/api/clients/wallet/user/{email} \
--header 'x-api-key: <api-key>'import requests
url = "https://api.pruff.com/api/clients/wallet/user/{email}"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.pruff.com/api/clients/wallet/user/{email}', 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/wallet/user/{email}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"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"
"net/http"
"io"
)
func main() {
url := "https://api.pruff.com/api/clients/wallet/user/{email}"
req, _ := http.NewRequest("GET", url, nil)
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.get("https://api.pruff.com/api/clients/wallet/user/{email}")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.pruff.com/api/clients/wallet/user/{email}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body[
{
"businessName": "Cliente Ejemplo SpA",
"id": "76111111-6",
"identifier": "76111111-6",
"country": "CL",
"active": true,
"activatedAt": "2025-03-04T15:10:42.318Z",
"pausedAt": null,
"deactivatedAt": null,
"createdAt": "2025-03-04T15:10:41.905Z",
"enrolledPath": "public",
"enrolledBy": "Ana Pérez",
"users": "Ana Pérez",
"lastExtraction": "2025-03-04T15:14:09.552Z",
"status": "Conectado"
},
{
"businessName": "Comercial Ejemplo Ltda",
"id": "77222222-K",
"identifier": "77222222-K",
"country": "CL",
"active": false,
"activatedAt": "2025-02-11T12:45:30.207Z",
"pausedAt": null,
"deactivatedAt": null,
"createdAt": "2025-02-11T12:45:29.884Z",
"enrolledPath": "public",
"enrolledBy": "Ana Pérez",
"users": "Ana Pérez",
"lastExtraction": "2025-02-18T09:21:44.630Z",
"status": "No Conectado"
}
]{
"message": "Unauthorized: Invalid API Key"
}{
"message": "User not found"
}{
"message": "Rate limit exceeded: 501 requests in the current 60s window, limit is 500. Retry in 12s.",
"displayMessage": "Superaste el límite de 500 solicitudes cada 60 segundos. Vuelve a intentarlo en 12 segundos.",
"data": {
"code": "RATE_LIMIT_EXCEEDED",
"scope": "All API keys of your company share this budget.",
"limit": 500,
"used": 501,
"windowSeconds": 60,
"retryAfterSeconds": 12,
"resetAt": "2026-11-04T15:00:12.000Z",
"hint": "Wait until resetAt (or honor the Retry-After header) before retrying. Avoid repeating identical requests: reuse responses you already fetched, use filters and larger pageSize values instead of one request per item, and cap your client concurrency."
}
}{
"message": "Internal server error"
}{
"message": "request_timeout",
"displayMessage": "La solicitud excedió el tiempo máximo permitido"
}Usuarios
Obtener cuentas de un usuario
Devuelve las cuentas (empresas conectadas a tu empresa) a las que el usuario tiene acceso, ordenadas alfabéticamente por businessName.
Si el usuario tiene un rol que permite ver todas las empresas, recibe todas las cuentas de tu empresa, y cada elemento incluye además activatedAt, enrolledPath, enrolledBy y users. En otro caso, recibe solo las cuentas que tiene asignadas él y las de sus subordinados, y esos cuatro campos no vienen en la respuesta. Usa este endpoint con usuarios de tu empresa.
Las cuentas eliminadas en meses anteriores al mes en curso no se incluyen. Si el usuario no tiene cuentas, la respuesta es una lista vacía.
GET
/
wallet
/
user
/
{email}
Obtener cuentas de un usuario
curl --request GET \
--url https://api.pruff.com/api/clients/wallet/user/{email} \
--header 'x-api-key: <api-key>'import requests
url = "https://api.pruff.com/api/clients/wallet/user/{email}"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.pruff.com/api/clients/wallet/user/{email}', 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/wallet/user/{email}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"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"
"net/http"
"io"
)
func main() {
url := "https://api.pruff.com/api/clients/wallet/user/{email}"
req, _ := http.NewRequest("GET", url, nil)
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.get("https://api.pruff.com/api/clients/wallet/user/{email}")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.pruff.com/api/clients/wallet/user/{email}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body[
{
"businessName": "Cliente Ejemplo SpA",
"id": "76111111-6",
"identifier": "76111111-6",
"country": "CL",
"active": true,
"activatedAt": "2025-03-04T15:10:42.318Z",
"pausedAt": null,
"deactivatedAt": null,
"createdAt": "2025-03-04T15:10:41.905Z",
"enrolledPath": "public",
"enrolledBy": "Ana Pérez",
"users": "Ana Pérez",
"lastExtraction": "2025-03-04T15:14:09.552Z",
"status": "Conectado"
},
{
"businessName": "Comercial Ejemplo Ltda",
"id": "77222222-K",
"identifier": "77222222-K",
"country": "CL",
"active": false,
"activatedAt": "2025-02-11T12:45:30.207Z",
"pausedAt": null,
"deactivatedAt": null,
"createdAt": "2025-02-11T12:45:29.884Z",
"enrolledPath": "public",
"enrolledBy": "Ana Pérez",
"users": "Ana Pérez",
"lastExtraction": "2025-02-18T09:21:44.630Z",
"status": "No Conectado"
}
]{
"message": "Unauthorized: Invalid API Key"
}{
"message": "User not found"
}{
"message": "Rate limit exceeded: 501 requests in the current 60s window, limit is 500. Retry in 12s.",
"displayMessage": "Superaste el límite de 500 solicitudes cada 60 segundos. Vuelve a intentarlo en 12 segundos.",
"data": {
"code": "RATE_LIMIT_EXCEEDED",
"scope": "All API keys of your company share this budget.",
"limit": 500,
"used": 501,
"windowSeconds": 60,
"retryAfterSeconds": 12,
"resetAt": "2026-11-04T15:00:12.000Z",
"hint": "Wait until resetAt (or honor the Retry-After header) before retrying. Avoid repeating identical requests: reuse responses you already fetched, use filters and larger pageSize values instead of one request per item, and cap your client concurrency."
}
}{
"message": "Internal server error"
}{
"message": "request_timeout",
"displayMessage": "La solicitud excedió el tiempo máximo permitido"
}Parámetros de ruta
Respuesta
Lista de cuentas del usuario.