Autenticación

OAuth 2.0 + Token

Flujo completo de autenticación para REST API y WebSocket. Usá las mismas credenciales de tu cuenta IOL.

Flujo de autenticación

El mismo token sirve para REST API y WebSocket. Obtenerlo una vez, usarlo en ambos.

1

REST API

POST /auth/token
2

Token JWT

access_token
3

Usar en

REST + WebSocket

Paso 1: Obtener token

Enviá tus credenciales de IOL (las mismas que usás en la app) para obtener un access_token.

POST/auth/token
auth.py
Autenticación
import requests

API_URL = "https://api.iolinversiones.com"

# Autenticación
response = requests.post(f"{API_URL}/auth/token", json={
    "grant_type": "password",
    "username": "TU_USUARIO",  # 👈 Mismo de la app IOL
    "password": "TU_PASSWORD"
})

data = response.json()
token = data["data"]["access_token"]
print(f"Token obtenido: {token[:20]}...")

Respuesta exitosa

JSON
{
"success": true,
"data": {
"access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
"token_type": "bearer",
"expires_in": 86400,
"refresh_token": "def50200b9c7f8e..."
}
}

Paso 2: Usar en REST API

Incluí el token en el header Authorization de cada request.

Header de autorización
GET /broker/accounts HTTP/1.1
Host: api.iolinversiones.com
Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...

Paso 3: Usar en WebSocket

El mismo token funciona para autenticarte en el WebSocket de market data. Enviá el mensaje de autenticación inmediatamente después de conectar.

Mensaje de autenticación:

JSON
{
"action": "auth_token",
"token": "eyJhbGciOiJSUzI1NiIs..."
}

Respuesta exitosa:

JSON
{
"type": "Success",
"code": 200,
"msg": "Connected"
}
Ver ejemplo completo de WebSocket

Renovar token (Refresh)

Los tokens expiran en 24 horas. Usá el refresh_tokenpara obtener uno nuevo sin pedir credenciales de nuevo.

Refresh token request
POST /auth/token HTTP/1.1
Host: api.iolinversiones.com
Content-Type: application/json
{
"grant_type": "refresh_token",
"refresh_token": "def50200b9c7f8e..."
}

Tiempo de vida de tokens

  • access_token: 24 horas
  • refresh_token: 30 días

Errores comunes

401Credenciales inválidas

Usuario o contraseña incorrectos. Verificá que estés usando las mismas credenciales de tu cuenta IOL.

401Token expirado

El access_token ya no es válido. Usá el refresh_token para obtener uno nuevo, o volvé a autenticar con credenciales.

400grant_type inválido

El campo grant_type debe ser "password" para autenticación inicial o "refresh_token" para renovar.

Buenas prácticas

  • Guardá el refresh_token de forma segura - No lo expongas en código cliente o logs.
  • Renová antes de que expire - Implementá lógica para renovar el token antes de las 24 horas.
  • Usá variables de entorno - Nunca hardcodees credenciales en el código fuente.
  • Manejá errores de auth - Capturá 401 y re-autenticá automáticamente cuando sea posible.

Siguientes pasos