Base URL https://api.afer.pro aferapp.com

API de Afer

Integra tu web, tu e-commerce o tus sistemas con Afer: crea facturas, albaranes, pedidos, contactos y oportunidades de CRM, consulta disponibilidad de alquiler y publica tu flota de charter desde cualquier aplicación.

POST https://api.afer.pro/{endpoint}

Cómo funciona

Todos los endpoints se llaman por HTTP POST con un cuerpo JSON y cabecera Content-Type: application/json. El nombre del endpoint va en la ruta y no distingue mayúsculas de minúsculas: /crearFactura y /crearfactura son equivalentes.

curl -X POST 'https://api.afer.pro/crearContacto' \
  -H 'Content-Type: application/json' \
  -d '{
    "cliente_afer_fk": 108,
    "contacto": {
      "persona_contacto": "Maria Ferrer",
      "email_contacto": "maria@ejemplo.com"
    }
  }'
<?php

$data = [
  'cliente_afer_fk' => 108,
  'contacto' => [
    'persona_contacto' => 'Maria Ferrer',
    'email_contacto'   => 'maria@ejemplo.com',
  ],
];

$ch = curl_init('https://api.afer.pro/crearContacto');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);

$respuesta = json_decode(curl_exec($ch), true);
curl_close($ch);
const respuesta = await fetch('https://api.afer.pro/crearContacto', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    cliente_afer_fk: 108,
    contacto: {
      persona_contacto: 'Maria Ferrer',
      email_contacto: 'maria@ejemplo.com'
    }
  })
});

const resultado = await respuesta.json();

Identificación

Según el endpoint, la cuenta de Afer sobre la que se opera se identifica de una de estas formas:

cliente_afer_fkint Identificador numérico de tu cuenta de Afer. Se envía en el cuerpo de la petición. Lo usan los endpoints de facturación y CRM. Afer te facilita este identificador al activar la integración.
accessTokenstring Token cifrado que identifica tu cuenta. Se envía en el cuerpo de la petición. Lo usan los endpoints de charters y del portal del cliente. Afer te facilita este token al activar la integración.
api_tokenstring Token cifrado opcional que refuerza la identificación en crearFactura: si se envía, debe corresponder a la misma cuenta que cliente_afer_fk o la petición se rechaza.
Seguridad

Trata accessToken y api_token como secretos: guárdalos en el servidor y no los expongas en código que se ejecute en el navegador. Las llamadas desde dominios web requieren que Afer autorice previamente tu dominio (CORS).

Identificadores cifrados

La API nunca expone identificadores internos de base de datos. Los endpoints de creación devuelven el identificador del elemento creado en forma de token cifrado (por ejemplo "aBc123XyZ…"), y los endpoints que aceptan referencias a elementos (boardId, charterId, templateId…) esperan ese mismo formato cifrado. Guarda estos tokens tal cual: son estables y sirven para llamadas posteriores.

Respuestas

Las respuestas son JSON. El resultado de la operación llega envuelto en la clave data:

200 · application/json
{
  "data": {
    "url": "https://clientes.aferapp.com/mi-empresa/?loginToken=aBc123XyZ"
  }
}

En endpoints de creación, data contiene directamente el identificador cifrado del elemento creado. Cuando una búsqueda no produce resultados, data puede ser false.

Errores

Hay dos formas de error, según el endpoint:

  • Excepciones de validación — parámetros obligatorios ausentes o identificación inválida. La petición devuelve un mensaje de error descriptivo (por ejemplo "El parametro fecha inicio está vacío.").
  • Errores de negocio — algunos endpoints devuelven el detalle en el propio resultado, como una cadena que empieza por Error: o un objeto {"msg": "…", "error": "error"}. Cada ficha de endpoint documenta sus casos.

Endpoints disponibles