Quickstart
Autenticate, consultá tu flota y explorá la API — todo en menos de 5 minutos.
Requisitos previos
- Credenciales de API:
email,passwordyapiKeyentregadas durante el onboarding
Paso 1 — Autenticarse
Obtené un token JWT llamando al endpoint de inicio de sesión:
- cURL
- JavaScript
- Python
- PHP
- C#
curl -s -X POST \
-H "tenant: $TENANT" \
-H "Content-Type: application/json" \
-d '{"email":"dev@yourcompany.com","password":"your_password"}' \
"https://$TENANT/apidev/v1/login"
const TENANT = 'geotareas.com';
const API_KEY = 'gtk_prod_xxxxxxxxxxxx'; // from onboarding
const loginRes = await fetch(`https://${TENANT}/apidev/v1/login`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'tenant': TENANT,
},
body: JSON.stringify({
email: 'dev@yourcompany.com',
password: 'your_password',
}),
});
const { data } = await loginRes.json();
const token = data.authorization;
import requests
TENANT = "geotareas.com"
API_KEY = "gtk_prod_xxxxxxxxxxxx" # from onboarding
login = requests.post(
f"https://{TENANT}/apidev/v1/login",
headers={"tenant": TENANT, "Content-Type": "application/json"},
json={"email": "dev@yourcompany.com", "password": "your_password"},
)
token = login.json()["data"]["authorization"]
$tenant = 'geotareas.com';
$apiKey = 'gtk_prod_xxxxxxxxxxxx'; // from onboarding
$ch = curl_init("https://{$tenant}/apidev/v1/login");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ["tenant: {$tenant}", "Content-Type: application/json"],
CURLOPT_POSTFIELDS => json_encode(['email' => 'dev@yourcompany.com', 'password' => 'your_password']),
CURLOPT_RETURNTRANSFER => true,
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
$token = $response['data']['authorization'];
using System.Net.Http;
using System.Text;
using System.Text.Json;
var tenant = "geotareas.com";
var apiKey = "gtk_prod_xxxxxxxxxxxx"; // from onboarding
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("tenant", tenant);
var payload = JsonSerializer.Serialize(new {
email = "dev@yourcompany.com",
password = "your_password"
});
var loginResponse = await client.PostAsync(
$"https://{tenant}/apidev/v1/login",
new StringContent(payload, Encoding.UTF8, "application/json"));
var loginJson = JsonDocument.Parse(await loginResponse.Content.ReadAsStringAsync());
var token = loginJson.RootElement.GetProperty("data").GetProperty("authorization").GetString();
Respuesta:
{
"success": true,
"data": { "authorization": "eyJhbGciOi..." },
"meta": {}
}
El token es válido por 1 hora. No hay endpoint de actualización — simplemente volvé a autenticarte cuando expire. La clave de API (gtk_prod_...) es permanente y se entregó durante el onboarding — la usarás junto con el token en cada solicitud de aquí en adelante.
Paso 2 — Consultá tu flota
Usá el token + la clave de API para llamar a cualquier endpoint protegido. Cada solicitud requiere 3 encabezados:
Authorization: Bearer <token>
X-API-Key: <your_api_key>
tenant: <your_tenant>
- cURL
- JavaScript
- Python
- PHP
- C#
curl -s \
-H "Authorization: Bearer $TOKEN" \
-H "X-API-Key: $APIKEY" \
-H "tenant: $TENANT" \
"https://$TENANT/apidev/v1/fleet/devices?limit=5&status=A"
const headers = {
'Authorization': `Bearer ${token}`,
'X-API-Key': API_KEY,
'tenant': TENANT,
};
const res = await fetch(
`https://${TENANT}/apidev/v1/fleet/devices?limit=5&status=A`,
{ headers }
);
const devices = await res.json();
console.log(devices.data);
headers = {
"Authorization": f"Bearer {token}",
"X-API-Key": API_KEY,
"tenant": TENANT,
}
devices = requests.get(
f"https://{TENANT}/apidev/v1/fleet/devices",
headers=headers,
params={"limit": 5, "status": "A"},
)
print(devices.json()["data"])
$ch = curl_init("https://{$tenant}/apidev/v1/fleet/devices?limit=5&status=A");
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => [
"Authorization: Bearer {$token}",
"X-API-Key: {$apiKey}",
"tenant: {$tenant}",
],
CURLOPT_RETURNTRANSFER => true,
]);
$devices = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($devices['data']);
client.DefaultRequestHeaders.Clear();
client.DefaultRequestHeaders.Add("Authorization", $"Bearer {token}");
client.DefaultRequestHeaders.Add("X-API-Key", apiKey);
client.DefaultRequestHeaders.Add("tenant", tenant);
var devicesResponse = await client.GetStringAsync(
$"https://{tenant}/apidev/v1/fleet/devices?limit=5&status=A");
var devices = JsonDocument.Parse(devicesResponse);
Respuesta:
{
"success": true,
"data": [
{
"id": "104820579301",
"name": "Truck-42",
"plate": "ABC-1234",
"status": "A",
"lastPosition": {
"lat": -34.6037,
"lng": -58.3816,
"speed": 45,
"timestamp": "2026-04-04T14:23:00"
}
}
],
"meta": { "total": 128, "limit": 5, "offset": 0 }
}
Paso 3 — Explorá la API completa
Ya te autenticaste, leíste datos y realizaste una operación de escritura. Esto es lo demás que podés hacer:
| Dominio | Probá esto | Endpoint |
|---|---|---|
| Flota | Listar vehículos con posición GPS | GET /fleet/devices |
| Flota | Listar conductores y asignaciones | GET /fleet/drivers |
| Telemetría | Ingestar puntos GPS desde dispositivos | POST /telemetry |
| Tareas | Crear y actualizar tareas | POST /tasks |
| Tareas | Descargar adjuntos de una tarea | GET /tasks/{id}/attachments |
| Catálogos | Procedencias, productos y coberturas | GET /catalogs/origins |
| Geocodificación | Resolver una dirección a coordenadas | POST /geocoding/forward |
| Reportes | Kilómetros recorridos en un rango de fechas | GET /reports/avl/kilometers |
| Reportes | Detalle de tareas con campos dinámicos | GET /reports/gt/tasks-general |
| Reportes | Ubicación en vivo del personal en calle | GET /reports/gt/live-location |
Todos los paths llevan el prefijo /apidev/v1/.
Pruebas con Postman
Hay una colección de Postman lista para usar. Mirá la página de la Colección de Postman para las instrucciones de importación y la lista completa de solicitudes prearmadas.
Qué sigue
Por caso de uso:
- Rastreo de flota e IoT — Flota y Telemetría, Reportes AVL
- Gestión de tareas — Tareas, Adjuntos de tareas
- Operación en calle — Reportes GT Operations, Ubicación en vivo
- Direcciones y cobertura — Geocodificación, Catálogos
Fundamentos:
- Autenticación — Modelo completo de autenticación dual y resolución de problemas
- Límite de solicitudes — Entendé los límites y evitá errores 429
- Manejo de errores — Envoltorio estándar de errores y códigos
- Cobertura de la API — Inventario completo de endpoints (más de 90 endpoints)