Développeurs
API Hello Veyora
Disponible avec la formule Business. Créez vos clés dans Intégrations ; chaque clé n’accède qu’aux données de votre entreprise et seulement avec les permissions que vous lui donnez.
Authentification
Authorization: Bearer vey_VOTRE_CLE- 401 — clé absente, invalide, révoquée, ou formule Business inactive.
- 403 — la clé n’a pas la permission requise.
- 400 — données envoyées invalides (le détail est dans la réponse).
/api/public/v1/contactsLister les contacts
Renvoie les contacts du CRM de votre entreprise, du plus récent au plus ancien.
limit — 1 à 200 (défaut 50)
curl -X GET "https://helloveyora.com/api/public/v1/contacts?limit=10" \
-H "Authorization: Bearer vey_VOTRE_CLE"Réponse
{
"data": [
{ "id": "…", "first_name": "Marie", "last_name": "Durand", "email": "marie@exemple.fr", "phone": null,
"company_name": "Exemple SARL", "kind": "prospect", "status": "nouveau", "created_at": "…", "updated_at": "…" }
]
}Essayer
/api/public/v1/contactsCréer un contact
Ajoute un contact au CRM. Prénom ou nom obligatoire ; kind vaut prospect, client ou contact.
curl -X POST "https://helloveyora.com/api/public/v1/contacts" \
-H "Authorization: Bearer vey_VOTRE_CLE" \
-H "Content-Type: application/json" \
-d '{ "first_name": "Marie", "last_name": "Durand", "email": "marie@exemple.fr", "company_name": "Exemple SARL", "kind": "prospect" }'Réponse
{ "data": { "id": "…", "first_name": "Marie", "…": "…" } } // 201 CreatedEssayer
Attention : cette requête crée un vrai contact dans votre CRM.
/api/public/v1/documentsLister devis et factures
Lecture seule. Filtrez par type avec kind.
limit — 1 à 200 (défaut 50)kind — type de document (ex. facture, devis)
curl -X GET "https://helloveyora.com/api/public/v1/documents?limit=10" \
-H "Authorization: Bearer vey_VOTRE_CLE"Réponse
{
"data": [
{ "id": "…", "kind": "facture", "number": "F-2026-001", "customer_name": "Exemple SARL", "issue_date": "2026-10-01",
"due_date": "2026-10-31", "total_ht": 100, "total_tva": 20, "total_ttc": 120, "amount_paid": 0, "currency": "EUR", "status": "…" }
]
}Essayer
Webhooks sortants
Événements : contact.created, document.created. Chaque envoi est un POST JSON avec les en-têtes X-Veyora-Event et X-Veyora-Signature: sha256=… (HMAC SHA-256 du corps brut avec la clé de signature du webhook). Répondez par un code 2xx ; sinon l’envoi est noté « Échec » dans le journal et peut être relancé.
{
"event": "contact.created",
"created_at": "2026-10-01T12:00:00Z",
"data": { "id": "…", "first_name": "Marie", "last_name": "Durand", "email": "marie@exemple.fr", "kind": "prospect", "status": "nouveau" }
}Vérifier la signature (Node.js) :
import { createHmac, timingSafeEqual } from "node:crypto";
const raw = await request.text();
const expected = "sha256=" + createHmac("sha256", process.env.VEYORA_WEBHOOK_SECRET).update(raw).digest("hex");
const given = request.headers.get("x-veyora-signature") ?? "";
const valid = given.length === expected.length && timingSafeEqual(Buffer.from(given), Buffer.from(expected));