Karvia

Karvia Developers

APIs, webhooks y MCP

Contratos públicos para conectar flotas, talleres y plataformas con Karvia. La consola operativa vive en Integraciones (login). Host canónico: https://api.karvia.mx

Superficies Karvia: plataforma web + WhatsApp operativo. No hay app nativa en App Store / Play Store.

Abrir IntegracionesHablar con ventasPassport API

Inicio rápido

1) Elige el riel (webhook, MCP o Passport). 2) Crea la llave correcta en el dashboard. 3) Llama api.karvia.mx con JSON. 4) Verifica el estado real en Integraciones.

export KARVIA_API=https://api.karvia.mx
export KARVIA_KEY=kmcp_prod_YOUR_KEY
Usa siempre el host canónico https://api.karvia.mx en integraciones y ejemplos.

Estado de integraciones

Live = productizado. Path = contrato vía webhook/API existente (sin SDK nativo). Stub = se pueden guardar credenciales; sync aún no.

LivePathStub
MCP Agent API
Integraciones → API / MCP
Live
Geotab / Samsara (conexión)
Integraciones → Telemetría
Live
VisionQube camera
Integraciones → Telemetría
Live
Webhooks Samsara / Geotab / Airbag / genérico
POST /api/webhooks/…
Live
Webhook DMS de taller
POST /api/webhooks/dms/…
Live
Buk HRIS
Integraciones → HRIS
Live
GetCarSignal / CarSignal
Vía webhook DMS (JSON)
Path
Passport B2B
Cola + sync de scores; NFT puede requerir ops
Path
Workday / Runa
Próximamente
Stub

Autenticación

Hay tres familias de llaves. No las mezcles: cada endpoint espera un prefijo distinto.

kmcp_prod_*MCP + webhooks de telemetríaIntegraciones → API / MCP
X-API-Key / Bearer (taller)Webhooks DMSTaller → Webhooks (Premium)
pk_live_*Passport B2BEmitidas por Karvia (ventas)
Authorization: Bearer kmcp_prod_YOUR_KEY
# DMS workshop:
X-API-Key: YOUR_WORKSHOP_KEY
# Passport B2B:
Authorization: Bearer pk_live_YOUR_KEY

Webhooks entrantes (telemetría)

Envía eventos desde Samsara, Geotab, Airbag u orígenes genéricos. Usa una llave Agent API (Bearer kmcp_prod_…) con permiso de telemetría y el secreto de webhook configurado en Integraciones.

Endpoints

POSThttps://api.karvia.mx/api/webhooks/samsara

Secreto: header X-Samsara-Signature (HMAC). Respuesta 200 { received, eventId }.

POSThttps://api.karvia.mx/api/webhooks/geotab

Secreto: ?token= o X-Geotab-Token / X-Webhook-Secret.

POSThttps://api.karvia.mx/api/webhooks/airbag

Secreto: X-Airbag-Signature / X-Webhook-Secret / ?token=.

POSThttps://api.karvia.mx/api/webhooks/generic

Contrato genérico. Campos mínimos: external_vehicle_id (o vehicle_id). Opcional type: diagnostics | fault | trip | alert | behavior | gps.

curl -X POST https://api.karvia.mx/api/webhooks/generic \
  -H "Authorization: Bearer kmcp_prod_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "external_vehicle_id": "CAR-1234",
    "latitude": 19.4326,
    "longitude": -99.1332,
    "speed": 65,
    "odometer": 42000
  }'
Configura URLs y secretos en Integraciones → Webhooks. El endpoint siempre está “on”; la salud del tenant depende del último evento recibido.

DMS / GetCarSignal / CarSignal

CarSignal (trycarsignal.com / getcarsignal.com) y DMS genéricos (Zapier, Make, n8n, CDK vía JSON) usan webhooks de taller. No hay conector nativo por marca. Hay dos endpoints con contratos distintos.

Honestidad comercial: no hay SDK nativo CDK / DealerSocket / GetCarSignal. El path es JSON → webhook.

A) Webhook público DMS

POSThttps://api.karvia.mx/api/webhooks/dms/{workshopId}

Auth obligatoria con X-API-Key (llave de taller). Evento procesado: service_completion. Respuesta 200.

curl -X POST https://api.karvia.mx/api/webhooks/dms/WORKSHOP_ID \
  -H "X-API-Key: YOUR_WORKSHOP_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "event_type": "service_completion",
    "dms_reference": "RO-99881",
    "vehicle": {
      "vin": "3VW…",
      "plate": "ABC123A",
      "make": "Volkswagen",
      "model": "Virtus",
      "year": 2022,
      "mileage": 48200
    },
    "service": {
      "type": "maintenance",
      "description": "Servicio 40k + aceite",
      "total_cost": 2490.0
    },
    "invoice": { "currency": "MXN", "total": 2490.0 }
  }'

Si VIN/placa no matchea un vehículo Karvia: 200 con warning (queda en log para revisión manual). Éxito: work_order_id + service_record_id.

B) Webhook taller premium

POSThttps://api.karvia.mx/api/workshops/webhooks/dms/{workshopId}

Requiere cuenta Taller Premium. Auth obligatoria: X-API-Key o Authorization Bearer. Body: arreglo services obligatorio.

curl -X POST https://api.karvia.mx/api/workshops/webhooks/dms/WORKSHOP_ID \
  -H "Authorization: Bearer YOUR_WORKSHOP_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "dms_reference": "cs-wo-12345",
    "vehicle": { "vin": "3VW…", "plate": "ABC123A", "make": "VW", "model": "Virtus", "year": 2022 },
    "services": [
      { "type": "oil_change", "description": "Cambio de aceite", "total_cost": 890 }
    ]
  }'

Respuesta 200: { success, created_orders, count }. Mint de llaves: Taller → Webhooks (POST /api/workshops/mine/api-keys).

MCP (Agentic Hub)

Model Context Protocol sobre datos de flota (salud, alertas, viajes, copiloto). Crea la llave en Integraciones → API / MCP. Son los mismos datos del dashboard web y WhatsApp operativo.

Transportes

GEThttps://api.karvia.mx/api/mcp/sse

SSE legacy (Cursor / mcp-remote).

POSThttps://api.karvia.mx/api/mcp/stream

Streamable HTTP (Claude Cloud / clientes modernos).

Cursor mcp.json

{
  "mcpServers": {
    "karvia_hub": {
      "url": "https://api.karvia.mx/api/mcp/sse",
      "headers": {
        "Authorization": "Bearer kmcp_prod_YOUR_KEY"
      }
    }
  }
}

mcp-remote

npx -y mcp-remote https://api.karvia.mx/api/mcp/sse \
  --header "Authorization:Bearer kmcp_prod_YOUR_KEY"
Crea y revoca llaves en Integraciones → API / MCP. Claude Connect también puede emitir llaves OAuth. Scopes de taller: lectura/escritura de taller en el CRM workshop.

Passport B2B (/api/v1)

Identidad vehicular verificable para partners. Llaves pk_live_* emitidas por Karvia (habla con ventas). Mint y attest se encolan y se procesan; la emisión NFT on-chain puede requerir ops si aún no existe passport.

GEThttps://api.karvia.mx/api/v1/passport/stats

Público — métricas de plataforma.

POSThttps://api.karvia.mx/api/v1/passport/mint
curl -X POST https://api.karvia.mx/api/v1/passport/mint \
  -H "Authorization: Bearer pk_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "vin": "3VW…",
    "make": "Volkswagen",
    "model": "Virtus",
    "year": 2022,
    "ownerWallet": "0x…"
  }'

201 { requestId, status: "pending" }. 409 si el VIN ya tiene passport. Requiere vin, make, model.

POSThttps://api.karvia.mx/api/v1/passport/{tokenId}/attest

masterScore requerido (0–10000 basis points). Opcional: legal, mechanical, driving, maintenance, eventType.

GEThttps://api.karvia.mx/api/v1/passport/{tokenId}

Lectura pública del passport.

POSThttps://api.karvia.mx/api/v1/telemetry

Body: vin, eventType, payload.

POSThttps://api.karvia.mx/api/v1/telemetry/batch

Máx. 100 eventos por request.

POSThttps://api.karvia.mx/api/v1/passport/{tokenId}/documents

docType + referencia IPFS/URL.

POSThttps://api.karvia.mx/api/v1/webhook/{apiKey}

Key en path. Requiere event + vin.

Solo usa los endpoints listados aquí. Más contexto comercial: Pasaportes.

Integraciones solo en el dashboard

La conexión pull de telemetría (Geotab/Samsara/VisionQube) y HRIS (Buk) se configura iniciando sesión en Integraciones — no son APIs públicas de partner.

Telemetría (conexión)

Geotab / Samsara / VisionQube: guardar credenciales → Probar → Sincronizar → mapear cada unidad. Si solo empujas datos, usa Webhooks.

HRIS

Buk: disponible (envío de scores). Workday / Runa: próximamente.

Abrir Integraciones →

OpenAPI

Especificación machine-readable de los mismos contratos. Úsala en Postman, Insomnia o generadores de cliente.

Descargar openapi.yaml
https://karvia.mx/developers/openapi.yaml