API Precio Dolar

Guia de uso para clientes que consumen la API de cotizacion de dolar BNA.

Inicio

La API devuelve la cotizacion de compra y venta del dolar Banco Nacion.

URL APIhttps://vxtlogistica.com/api_dolar/api_precio_dolar.php
MetodoPOST
FormatoContent-Type: application/json
Costo1 credito por cada solicitud procesada.
Los campos compra y venta se devuelven como numeros JSON con punto decimal.

Credenciales

Cada cliente recibe un client_id y un secret. Ambos deben enviarse en cada solicitud.

X-Client-Id: CLIENT_ID
X-Client-Secret: CLIENT_SECRET
Content-Type: application/json

Alternativa con Authorization

Tambien se puede enviar el secret como Bearer, manteniendo el client id en header.

Authorization: Bearer CLIENT_SECRET
X-Client-Id: CLIENT_ID
Content-Type: application/json
No enviar el secret en aplicaciones frontend publicas. Usarlo siempre desde un backend propio.

Creditos

El servicio descuenta automaticamente 1 credito por cada consulta exitosa. La respuesta incluye el saldo anterior y el saldo posterior.

{
  "credits": {
    "mode": "database",
    "consumed": 1,
    "balance_before": 100,
    "balance_after": 99,
    "movement_id": 10,
    "reference_id": "7b7f3e..."
  }
}

Si el cliente no tiene saldo disponible, la API no devuelve la cotizacion y responde INSUFFICIENT_CREDITS.

Request

La consulta no necesita parametros. Enviar un JSON vacio.

{}

Campos alternativos

Si no se usan headers, tambien se pueden enviar credenciales en el body.

{
  "client_id": "CLIENT_ID",
  "secret": "CLIENT_SECRET"
}

Ejemplo curl

curl -X POST "https://vxtlogistica.com/api_dolar/api_precio_dolar.php" \
  -H "Content-Type: application/json" \
  -H "X-Client-Id: CLIENT_ID" \
  -H "X-Client-Secret: CLIENT_SECRET" \
  -d '{}'

Respuesta exitosa

{
  "success": true,
  "data": {
    "compra": 1447.94,
    "venta": 1499.5,
    "fecha": "30/06/2026 - 11:54",
    "variacion": "0,09%",
    "class-variacion": "up",
    "valor_cierre_ant": "1498,22",
    "raw": {
      "compra": "1447,94",
      "venta": "1499,50",
      "fecha": "30/06/2026 - 11:54",
      "variacion": "0,09%",
      "class-variacion": "up",
      "valor_cierre_ant": "1498,22"
    },
    "fetched_at": "2026-06-30T13:39:33-03:00",
    "credits": {
      "mode": "database",
      "consumed": 1,
      "balance_before": 100,
      "balance_after": 99,
      "movement_id": 10,
      "reference_id": "7b7f3e..."
    }
  }
}

Campos

CampoTipoDescripcion
successbooleanIndica si la consulta fue exitosa.
data.compranumberPrecio de compra normalizado.
data.ventanumberPrecio de venta normalizado.
data.fechastringFecha y hora informada para la cotizacion, si esta disponible.
data.variacionstringVariacion informada para la cotizacion, si esta disponible.
data.valor_cierre_antstringValor de cierre anterior, si esta disponible.
data.rawobjectDatos originales recibidos, sin normalizar.
data.fetched_atstringFecha y hora en la que esta API hizo la consulta, en formato ISO 8601.
data.creditsobjectDetalle del credito descontado y saldo restante.

Errores frecuentes

ErrorHTTPSignificado
UNAUTHORIZED401Falta client/secret o las credenciales son invalidas.
INSUFFICIENT_CREDITS402El cliente no tiene creditos disponibles.
METHOD_NOT_ALLOWED405Se llamo con un metodo distinto de POST.
INVALID_JSON422El body no es JSON valido.
SOURCE_UNAVAILABLE502No se pudo consultar la cotizacion externa.
INVALID_SOURCE_JSON502La fuente respondio algo que no es JSON valido.
MISSING_SOURCE_FIELDS502La fuente no envio los campos compra y venta.
INVALID_SOURCE_DATA502La fuente envio compra o venta con formato no numerico.

Ejemplo sin creditos

{
  "success": false,
  "error": {
    "code": "INSUFFICIENT_CREDITS",
    "message": "No hay creditos disponibles.",
    "credits": {
      "balance": 0,
      "required": 1
    }
  }
}

Datos adicionales

Si la cotizacion incluye mas campos disponibles, la API tambien los devuelve dentro de data.