API publique v1

Connectez Noltya sans contourner les permissions du CRM.

Une API HTTPS bornée au workspace de la clé, avec scopes minimaux, pagination, rate limit et idempotence pour les écritures sensibles.
https://api.noltya.fr/api/public-api/v1

Démarrage en 3 étapes

1

Créer une clé

Nommez la connexion et cochez uniquement les scopes utiles.

2

Tester la connexion

Appelez /connection : aucun scope métier n’est nécessaire.

3

Brancher le premier flux

Conservez une clé d’idempotence stable pour chaque écriture.

curl "https://api.noltya.fr/api/public-api/v1/connection" \
  -H "Authorization: Bearer nlt_live_…" \
  -H "Accept: application/json"

Authentification

Créez une clé dédiée depuis Connexions & automatisations → Clés API. Le secret complet n’est affiché qu’une fois. Le workspace et les scopes sont toujours dérivés de la clé côté serveur.

Authorization: Bearer nlt_live_…
Accept: application/json
leads:read

Lire les leads

leads:write

Créer des leads

dossiers:read

Lire les dossiers

customers:read

Lire les clients

appointments:read

Lire les rendez-vous

quotes:read

Lire les devis et leurs lignes

invoices:read

Lire les factures et avoirs

payments:read

Lire les paiements et annulations

contacts:read

Afficher les identités et coordonnées personnelles

documents:write

Déposer une pièce dans un dossier

cee:tariffs:write

Synchroniser une grille tarifaire CEE

Routes

GET
/connection

Valider la clé sans scope métier

Aucun

GET
/leads

Lister les leads par curseur

leads:read

GET
/leads/:id

Lire un lead

leads:read

POST
/leads

Créer un lead de façon idempotente

leads:write

GET
/dossiers

Lister les dossiers par curseur

dossiers:read

GET
/dossiers/:id

Lire un dossier

dossiers:read

GET
/customers

Lister les clients par curseur

customers:read

GET
/customers/:id

Lire un client

customers:read

GET
/appointments

Lister les rendez-vous par curseur

appointments:read

GET
/appointments/:id

Lire un rendez-vous

appointments:read

GET
/quotes

Lister les devis par curseur

quotes:read

GET
/quotes/:id

Lire un devis et ses lignes

quotes:read

GET
/invoices

Lister les factures par curseur

invoices:read

GET
/invoices/:id

Lire une facture et ses lignes

invoices:read

GET
/credit-notes

Lister les avoirs par curseur

invoices:read

GET
/credit-notes/:id

Lire un avoir et ses lignes

invoices:read

GET
/payments

Lister les paiements par curseur

payments:read

GET
/payments/:id

Lire un paiement

payments:read

POST
/dossiers/:dossierId/documents

Déposer un document contrôlé

documents:write

PUT
/cee-partners/:organizationId/tariffs

Remplacer une grille CEE versionnée

cee:tariffs:write

Pagination

Les listes acceptent une limite de 1 à 100. Réutilisez nextCursor tel quel jusqu’à ce qu’il soit nul.

GET /leads?limit=100&cursor=…

{
  "data": [],
  "nextCursor": null
}

Idempotence

Les créations de lead, dépôts documentaires et synchronisations CEE exigent une clé ASCII stable de 8 à 200 caractères.

Idempotency-Key: source-record-12345

Exemple : créer un lead

curl -X POST "https://api.noltya.fr/api/public-api/v1/leads" \
  -H "Authorization: Bearer nlt_live_…" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: formulaire-78452" \
  -d '{
    "company": "Solaire Exemple",
    "firstName": "Aline",
    "lastName": "Martin",
    "email": "aline@example.com",
    "phone": "0600000000",
    "source": "Partenaire"
  }'

Au moins une société, un contact, un prénom ou un nom est requis. Le scope contacts:read est nécessaire pour relire les identités, coordonnées, adresses, notes de rendez-vous, identités de facturation et références libres de paiement. Sans lui, ces champs sont omis des listes et détails.

Déposer un document

Envoyez un seul champ file en multipart. title, category, documentType et notes sont facultatifs.

curl -X POST "https://api.noltya.fr/api/public-api/v1/dossiers/DOSSIER_ID/documents" \
  -H "Authorization: Bearer nlt_live_…" \
  -H "Idempotency-Key: document-78452" \
  -F "file=@attestation.pdf" \
  -F "title=Attestation chantier"

Synchroniser une grille CEE

Le partenaire doit déjà exister dans le workspace. Une grille vide ou une publication antérieure à la dernière version est refusée.

{
  "version": "catalogue-2026-07-30.1",
  "publishedAt": "2026-07-30T08:00:00.000Z",
  "tariffs": [
    {
      "id": "bar-th-171-precaire",
      "label": "BAR-TH-171 précaire",
      "operationCode": "BAR-TH-171",
      "householdCategory": "PRECARITE",
      "pricePerMwhCumacCents": 850
    }
  ]
}

Documents, erreurs et limites

Le dépôt documentaire utilise multipart/form-data avec un seul champ file et un plafond de 10 Mo. Les fichiers suivent les contrôles antivirus et de doublon de Noltya; aucune information de stockage interne n’est exposée.

Les erreurs retournent un statut HTTP standard et un champ message. Une clé non autorisée répond 401, un scope absent 403, une réutilisation incompatible de clé d’idempotence 409, une validation invalide 400 et un dépassement de débit 429. Le débit par défaut est de 120 requêtes par minute et par clé.

{
  "message": "La clé API ne possède pas le scope dossiers:read.",
  "statusCode": 403
}