Naar de inhoud springen

API en integraties (CRM, Make, n8n)

Koppel je CRM of je ERP aan Sattotal met API-sleutels: synchroniseer klanten en leveranciers automatisch en veilig

Met de API van Sattotal kan een ander programma — je CRM, je ERP, Make, n8n, Zapier of een eigen script — klanten en leveranciers in je organisatie lezen en aanmaken zonder dat iemand een CSV met de hand hoeft te importeren. Je regelt dit met API-sleutels die de beheerder aanmaakt onder Instellingen → API, elk met een eigen naam en met rechten per bron, en die je op elk moment kunt intrekken. Hier lees je wat de API doet, hoe je een sleutel aanmaakt, hoe je de API aanroept en hoe je stap voor stap een synchronisatie met Make opzet.

Koppel je CRM en je automatiseringen

Elke tool die een HTTP-verzoek kan doen (Make, n8n, Zapier, je eigen CRM of ERP) kan klanten en leveranciers lezen, aanmaken en bijwerken.

Sleutels met een naam en rechten

Eén sleutel per integratie en binnen elke sleutel één recht per bron: je kunt leesrechten op leveranciers geven zonder schrijfrechten op klanten te geven. Maximaal 10 actieve sleutels per organisatie.

Incrementele synchronisatie

Met de parameter actualizadoDesde haal je alleen de klanten of leveranciers op die sinds de vorige run zijn gewijzigd: ideaal voor een scenario dat om de paar minuten draait.

Veilig van ontwerp

De sleutel wordt maar één keer getoond en onomkeerbaar versleuteld opgeslagen. Elke sleutel heeft alleen toegang tot de gegevens van zijn eigen organisatie en kun je direct intrekken.

Wie kan hem gebruiken

Sleutels worden aangemaakt en ingetrokken door de beheerders van de organisatie. De API zit in de betaalde abonnementen (Basic, Pro en Enterprise) en in de proefperiode; op het gratis abonnement toont het scherm een slotje met de optie om van abonnement te wisselen. Een sleutel handelt altijd namens de organisatie, niet namens een persoon: hij erft de rechten van geen enkele technicus en verschijnt niet als gebruiker in het team.

Zo maak je een sleutel aan

1

Ga naar Instellingen → API

Via het zijmenu, Instellingen, kaart „API”. Je ziet de lijst met sleutels van je organisatie (actieve en ingetrokken) en een kaart „Zo koppel je” met de basis-URL en een voorbeeld.

2

Klik op „Nieuwe sleutel”

Geef hem een naam waaraan je de integratie herkent („CRM van de winkel”, „Make”, „n8n”). Moet je hem ooit intrekken, dan weet je welke het is.

3

Kies de rechten

Vink de bronnen aan die de integratie nodig heeft — Klanten, Leveranciers of allebei — en kies per bron „Alleen lezen” (opvragen) of „Lezen en schrijven” (opvragen, aanmaken, bijwerken en archiveren). Een bron die je niet aanvinkt, is een bron waar de sleutel niet bij kan. Kies het minimum dat nodig is.

4

Kopieer de sleutel en bewaar hem in je tool

De volledige sleutel (begint met sat_) wordt maar één keer getoond. Kopieer hem met de knop en plak hem in Make, n8n of je CRM. Ben je hem kwijt, dan is hij niet terug te halen: je trekt hem in en maakt een nieuwe.

Instellingen → API: lijst met sleutels en een net aangemaakte sleutel

CRM Make

sat_Ab3k…x9Zq

Intrekken

n8n

sat_Qm7t…p2Lk

Ingetrokken

Sleutel aangemaakt

sat_Ab3k9Zq2Xv8Lp1Mn4Rt7Wy0Cd5Fg6Hj3Kl8Sx9ZqKopiëren

Dit is de enige keer dat je de volledige sleutel ziet. Ben je hem kwijt, trek hem dan in en maak een nieuwe.

Rechten van een sleutel

Alleen lezen

Kan die bron opsommen en opvragen. Elke poging om aan te maken, te wijzigen of te archiveren krijgt een 403-fout met de code PERMISO_DENEGADO en het recht dat ontbreekt.

Lezen en schrijven

Kan in die bron naast opvragen ook aanmaken, bijwerken en archiveren. Dit recht heeft een tweerichtingssynchronisatie nodig.

Rechten gelden per bron

De rechten gelden per bron, en dat is al gebleken: toen de leveranciers erbij kwamen, kregen de bestaande sleutels — allemaal voor klanten — er GEEN toegang toe. Dat moest je aanvinken. Hetzelfde geldt voor elke bron die er later bij komt: een integratie ziet nooit meer dan wat je hebt toegestaan.

Zo authenticeer je

Stuur de sleutel bij elk verzoek mee, van server naar server, in de header Authorization: Bearer sat_…. Laat je tool geen autorisatieheaders toe, dan wordt hij ook geaccepteerd in de header x-api-key. De basis-URL is die van jouw Sattotal gevolgd door /api/v1 (klaar om te kopiëren op het scherm Instellingen → API).

GET /api/v1/me
Authorization: Bearer sat_Ab3k9…x9Zq

De API heeft bewust geen CORS: hij is bedoeld voor servers en automatiseringstools, niet voor webpagina's of apps die in de browser van je klanten draaien. Een sleutel mag nooit in een browser terechtkomen.

Wat kun je doen (eindpunten)

Alle antwoorden hebben de vorm success + data (en pagination bij lijsten). Een klant kun je opvragen op id of op code (CLI-0007); een leverancier alleen op id.

MethodePadWat het doetRecht
GET/meGeeft je organisatie en de sleutel waarmee je aanroept terug. Gebruik dit om in Make of n8n „de verbinding te testen”.Elk
GET/clientesGepagineerde lijst met klanten. Filters: busqueda, tipo, activo en actualizadoDesde. Zonder activo komen ook de gearchiveerde mee.Lezen
POST/clientesMaakt een klant aan met dezelfde regels als het formulier (fiscaal nummer volgens je land, geen dubbel fiscaal nummer of e-mailadres).Schrijven
GET/clientes/{id}Geeft één klant terug op id of op code.Lezen
PATCH/clientes/{id}Werkt alleen de meegestuurde velden bij. PUT wordt als synoniem geaccepteerd.Schrijven
DELETE/clientes/{id}Archiveert de klant (activo = false). Er wordt niets verwijderd en je kunt het zonder fout herhalen.Schrijven
GET/proveedoresGepagineerde lijst met leveranciers. Filters: busqueda, activo, tipoProveedor, codigo en actualizadoDesde. Zonder activo komen ook de gearchiveerde mee.Lezen
POST/proveedoresMaakt een leverancier aan. Alleen de naam is verplicht. Bestaat er al een met hetzelfde fiscaal nummer of dezelfde naam, dan volgt een 409 met het id van de bestaande.Schrijven
GET/proveedores/{id}Geeft één leverancier terug op id. De code werkt hier NIET: lees de waarschuwing hieronder.Lezen
PATCH/proveedores/{id}Werkt alleen de meegestuurde velden bij. De contactenlijst wordt in zijn geheel vervangen. PUT wordt als synoniem geaccepteerd.Schrijven
DELETE/proveedores/{id}Archiveert de leverancier (activo = false). Er wordt niets verwijderd en je kunt het zonder fout herhalen.Schrijven
GET/reparacionesGepagineerde lijst van bonnen, nieuwste inname eerst. Filters: cliente, estado, entradaDesde, entradaHasta en actualizadoDesde.Lezen
GET/reparaciones/{id}Geeft één bon terug op id of bonnummer.Lezen
GET/clientes/{id}/reparacionesDe bonnen van een klant (op id of klantcode), met dezelfde filters.Lezen
GET/clientes/{id}/resumenActiviteitsoverzicht van de klant: hoeveel reparaties hij heeft (in totaal, openstaand en per status), voor welk bedrag hij offertes heeft gekregen en wanneer hij voor het laatst langs is geweest.Lezen

Velden van de klant

De velden zijn dezelfde als in de klantkaart: nombre en tipo (particular of empresa) zijn verplicht; nif_cif, apellidos, razonSocial, email, telefono, telefonoSecundario, direccion (calle, numero, piso, codigoPostal, localidad, provincia, pais) en notas zijn optioneel. Het fiscaal nummer wordt in hoofdletters opgeslagen en het e-mailadres in kleine letters. In het antwoord zijn alle sleutels altijd aanwezig, met null als er geen waarde is, zodat de veldtoewijzing in je tool niet breekt. Let op de naam: nombre is de voornaam (of de handelsnaam bij een bedrijf) en de achternaam gaat apart in apellidos, meervoud.

Velden die de API niet herkent

Bevat de body een sleutel die niet bestaat (bijvoorbeeld firstName in plaats van nombre, of apellido in het enkelvoud in plaats van apellidos), dan wordt het verzoek niet geweigerd, maar die waarde wordt niet opgeslagen. Zodat dat niet onopgemerkt blijft, bevat het antwoord bij het aanmaken en bewerken van een klant avisos.camposIgnorados met de lijst van die sleutels; adresvelden staan erin met hun pad, zoals direccion.ciudad. Zie je die, controleer dan de veldtoewijzing van je integratie. Velden die de API zelf teruggeeft (id, codigo, createdAt…) geven nooit een melding, dus je kunt een klant ophalen, wijzigen en in zijn geheel terugsturen.

POST /api/v1/clientes
{ "firstName": "Daniel", "nombre": "Florea", "tipo": "particular" }

201 Created
{
  "success": true,
  "data": { "nombre": "Florea", "apellidos": null, … },
  "avisos": { "camposIgnorados": ["firstName"] }
}

Voorbeeld: een klant aanmaken

Verzoek

POST /api/v1/clientes
Authorization: Bearer sat_Ab3k9…x9Zq
Content-Type: application/json

{
  "nombre": "Daniel",
  "apellidos": "Florea",
  "tipo": "empresa",
  "razonSocial": "Assista Tech SRL",
  "nif_cif": "RO12345678",
  "codigoPersonalizado": "801",
  "email": "daniel@example.com",
  "telefono": "+40 700 000 000",
  "direccion": { "localidad": "București", "pais": "RO" }
}

Antwoord (201)

{
  "success": true,
  "data": {
    "id": "64b0…0001",
    "codigo": "CLI-0042",
    "codigoPersonalizado": "801",
    "codigoVisible": "801",
    "tipo": "empresa",
    "nombre": "Daniel",
    "apellidos": "Florea",
    "razonSocial": "Assista Tech SRL",
    "nif_cif": "RO12345678",
    "email": "daniel@example.com",
    "activo": true,
    "createdAt": "2026-09-18T10:00:00.000Z",
    "updatedAt": "2026-09-18T10:00:00.000Z"
  }
}

Leveranciers

Naast klanten ontsluit de API ook de leverancierscatalogus: dezelfde vijf endpoints, dezelfde foutcodes en dezelfde incrementele synchronisatie. Het gaat alleen om de catalogus: inkopen en inkoopfacturen blijven waar ze al staan, in je ERP of in Sattotal.

Velden van de leverancier

Alleen nombre is verplicht. Optioneel zijn codigo, cif, email, telefono, telefonoSecundario, web, direccion (op één regel, hier geen object zoals bij klanten), ciudad, provincia, codigoPostal, pais, contactos, tipoProveedor (general, producto, servicio, logistica of otro), formaPago, plazoPago (in dagen; 0 betekent contant), cuentaCliente en notas. Elk contact heeft nombre —verplicht—, cargo, telefono, email en notas; contacten hebben geen eigen id.

Hoe contacten worden bijgewerkt

De lijst die je stuurt VERVANGT de bestaande. Stuur je een lege lijst, dan worden alle contacten verwijderd; stuur je de sleutel niet mee (of stuur je null), dan blijven ze zoals ze waren. Daardoor kun je een leverancier ophalen, één veld wijzigen en het hele object terugsturen zonder rare bijeffecten.

Verzoek

POST /api/v1/proveedores
Authorization: Bearer sat_Ab3k9…x9Zq
Content-Type: application/json

{
  "nombre": "Distribuciones Norte",
  "cif": "B12345678",
  "tipoProveedor": "producto",
  "plazoPago": 30,
  "cuentaCliente": "C-4471",
  "contactos": [
    { "nombre": "Ana Ruiz", "cargo": "Ventas", "email": "ana@norte.es" }
  ]
}

Antwoord (201)

{
  "success": true,
  "data": {
    "id": "64b0…0009",
    "codigo": "PROV-004",
    "nombre": "Distribuciones Norte",
    "cif": "B12345678",
    "tipoProveedor": "producto",
    "plazoPago": 30,
    "cuentaCliente": "C-4471",
    "contactos": [
      { "nombre": "Ana Ruiz", "cargo": "Ventas",
        "telefono": null, "email": "ana@norte.es", "notas": null }
    ],
    "excluidoRecargoEquivalencia": false,
    "activo": true,
    "createdAt": "2026-09-19T08:00:00.000Z",
    "updatedAt": "2026-09-19T08:00:00.000Z"
  }
}

Bankgegevens komen niet uit de API

Het IBAN en de bankrekeningen van de leverancier worden niet teruggegeven en niet geaccepteerd, en dat is bewust: als een sleutel ooit uitlekt, heb je er niets aan voor fraude met gewijzigde rekeningnummers, de meest voorkomende vorm bij leveranciers. cuentaCliente komt wel mee: dat is JOUW klantnummer bij die leverancier, waarmee een ERP zijn inkopen aflettert.

De gelijkstellingstoeslag is alleen-lezen

Het veld excluidoRecargoEquivalencia komt mee in het antwoord en je mag het met dezelfde waarde terugsturen (zodat je het hele object kunt terugsturen), maar het wijzigen via de API levert een 400 op: het bepaalt of de toeslag op je inkopen bij die leverancier van toepassing is, en verschuift dus de belastbare grondslag van je inkoopfacturen. Je wijzigt het op de leverancierskaart. Buiten Spanje heeft het geen enkel effect.

Met de leverancierscode vind je geen leverancier

Anders dan bij klanten is de leverancierscode (PROV-004) niet uniek: hij kan zelfs binnen je eigen werkplaats dubbel voorkomen. Daarom accepteert GET /proveedores/{id} uitsluitend het id. Bewaart je ERP alleen de code, gebruik dan het filter van de lijst: GET /proveedores?codigo=PROV-004 geeft alles terug wat overeenkomt en jij kiest.

Reparatiebonnen (alleen lezen)

Via de API kun je ook reparatiebonnen opvragen: bonnummer, status, datums, het apparaat (type, merk, model, serienummer, IMEI) en de offerte. Alleen lezen: bonnen worden nog steeds in Sattotal aangemaakt en van status veranderd, waar ook het ontvangstbewijs en de afgifte worden ondertekend. De sleutel heeft de bron Reparaties nodig; sleutels voor klanten of leveranciers kunnen er niet bij.

Velden van de bon

Elke bon bevat numeroFicha, estado, prioridad, ubicacion, averiaDeclarada, diagnostico, de datums van het traject (inname, start en einde van diagnose en reparatie, melding aan de klant, afgifte en ultimoCambioEstado, wanneer de bon zijn huidige status kreeg), een klantoverzicht (id, codigo, codigoVisible, nombre, apellidos, razonSocial), het apparaat (id, codigo, tipo, marca, modelo, numeroSerie, imei, color), de offerte (numero, total, estado, fechaEnvio en fechaRespuesta, of null als er geen is), de toegewezen technicus (alleen de naam) en plazoEntregaEstimado, de levertermijn die de klant op het ontvangstbewijs heeft gekregen. Interne notities, handtekeningen, foto’s, documenten en apparaatwachtwoorden worden nooit teruggegeven.

Verzoek

GET /api/v1/clientes/CLI-0042/reparaciones?estado=reparado
Authorization: Bearer sat_Ab3k9…x9Zq

Antwoord (201)

{
  "success": true,
  "data": [{
    "id": "64b0…0042",
    "numeroFicha": "ORD-2026-0042",
    "estado": "reparado",
    "prioridad": "normal",
    "averiaDeclarada": "No carga",
    "diagnostico": "Conector de carga dañado",
    "fechas": {
      "entrada": "2026-09-20T09:00:00.000Z",
      "finReparacion": "2026-09-22T17:30:00.000Z",
      "entrega": null
    },
    "cliente": { "id": "64b0…0001", "codigoVisible": "801", "nombre": "Daniel" },
    "dispositivo": {
      "tipo": "movil", "marca": "Apple", "modelo": "iPhone 13",
      "numeroSerie": "F2LXX0000", "imei": "356789012345678"
    },
    "presupuesto": { "numero": "PRES-2026-0010", "total": 89.9, "estado": "aprobado" },
    "tecnico": { "nombre": "Andrei Popescu" },
    "plazoEntregaEstimado": "3 días laborables"
  }],
  "pagination": { "total": 1, "page": 1, "limit": 25, "totalPages": 1 }
}

De klant vinden aan de hand van het nummer dat belt

Opent je CRM of telefooncentrale de klantkaart zodra er een gesprek binnenkomt, gebruik dan GET /clientes?telefono=<nummer>. Er wordt gezocht in het eerste en het tweede telefoonnummer, ongeacht hoe het nummer is geschreven: spaties, streepjes, het landnummer (+31 of 0031) en de 0 aan het begin maken niet uit. Zo vindt “06 12345678” een klant die is opgeslagen als “+31 6-1234-5678”. Er zijn minstens 6 cijfers nodig.

Klantoverzicht voor je CRM

GET /clientes/{id}/resumen geeft in één aanroep terug wat een CRM meestal op de klantkaart laat zien: totalReparaciones, reparacionesAbiertas (het apparaat is nog in de werkplaats), porEstado, totalPresupuestado en totalPresupuestosAprobados (in de valuta van de werkplaats, die in moneda meekomt), primeraReparacion, ultimaReparacion en ultimaActividad (de laatste wijziging in een van zijn bonnen). Net als de bonnen heeft dit de bron Reparaties nodig.

Verzoek

GET /api/v1/clientes?telefono=0722 123 456
→ { "data": [{ "id": "64b0…0001", "codigoVisible": "801", "telefono": "+40 722 123 456", … }] }

GET /api/v1/clientes/801/resumen
{
  "success": true,
  "data": {
    "cliente": { "id": "64b0…0001", "codigoVisible": "801" },
    "moneda": "RON",
    "totalReparaciones": 7,
    "reparacionesAbiertas": 1,
    "porEstado": { "entregado": 6, "en_reparacion": 1 },
    "totalPresupuestosAprobados": 1240.5,
    "ultimaReparacion": "2026-10-02T09:15:00.000Z",
    "ultimaActividad": "2026-10-06T16:40:00.000Z",
    …
  }
}

Alleen synchroniseren wat is veranderd

Je hoeft niet bij elke run alles op te halen. Bewaar in je tool de datum en tijd van de laatste uitvoering en vraag met de parameter actualizadoDesde alleen de klanten of leveranciers op die sindsdien zijn gewijzigd. Het antwoord is oplopend gesorteerd op wijzigingsdatum, met een stabiele volgorde bij gelijke datums, zodat je erdoorheen kunt pagineren zonder records over te slaan. Gearchiveerde records komen ook mee (met activo = false), zodat je CRM de archivering kan overnemen.

GET /api/v1/clientes?actualizadoDesde=2026-09-18T10:00:00Z&limit=100&page=1
Authorization: Bearer sat_Ab3k9…x9Zq
1

Eerste run

Loop GET /clientes door met limit=100 en page=1, 2, 3… tot totalPages op is. Bewaar de starttijd.

2

Volgende runs

Vraag GET /clientes?actualizadoDesde=<bewaarde tijd> op en verwerk alleen wat binnenkomt. Bewaar opnieuw de starttijd van deze run.

3

Koppel, dupliceer niet

Bewaar het Sattotal-id naast het record in je CRM. Krijg je bij het aanmaken een 409 DUPLICADO, dan bevat het antwoord existenteId: koppel die in plaats van een nieuwe aan te maken.

Paginering en zoeken

Lijsten accepteren page (vanaf 1) en limit (standaard 25, maximaal 100; vraag je meer, dan wordt het afgekapt op 100). Het veld busqueda zoekt in naam, achternaam, bedrijfsnaam, fiscaal nummer, e-mailadres, code en telefoon.

Foutcodes en wat je doet

Alle foutantwoorden bevatten success: false, een toelichtende tekst en een stabiele code waarop je programma kan beslissen. Dit zijn de codes die je kunt krijgen:

NO_AUTORIZADO

De sleutel ontbreekt, heeft niet ons formaat of bestaat niet. Controleer de header Authorization.

CLAVE_REVOCADA

De sleutel was geldig, maar een beheerder heeft hem ingetrokken. Maak een nieuwe onder Instellingen → API en werk hem bij in je tool.

PLAN_REQUERIDO

De organisatie zit op het gratis abonnement. De API werkt weer zodra je overstapt op een betaald abonnement.

PERMISO_DENEGADO

De sleutel heeft niet het recht dat voor deze bewerking nodig is. Het antwoord geeft in ambitoRequerido aan welk recht ontbreekt: maak een sleutel met dat recht.

NO_ENCONTRADO

Er is geen klant en geen leverancier met dat id in je organisatie. Die van andere organisaties zijn nooit zichtbaar, en „bestaat niet” wordt niet onderscheiden van „is niet van jou”.

DUPLICADO

Er bestaat al een record met dat gegeven: fiscaal nummer of e-mailadres bij klanten; fiscaal nummer, naam of code bij leveranciers. Het antwoord bevat campo en existenteId, zodat je het kunt koppelen in plaats van een tweede aan te maken.

VALIDACION

Een veld komt niet door de validatie (of de JSON is ongeldig). In details staan het veld en de reden, net als in het formulier.

IDENTIFICADOR_FISCAL_REQUERIDO

Die klant heeft een fiscaal nummer nodig: in jouw land is het verplicht voor het meegestuurde klanttype (bijvoorbeeld altijd voor bedrijven).

RATE_LIMIT

Te veel verzoeken. Wacht het aantal seconden uit de header Retry-After en probeer het opnieuw.

API_DESACTIVADA

De API is tijdelijk uitgeschakeld voor onderhoud. Probeer het later opnieuw.

Limieten

120 verzoeken per minuut per sleutel (ruim genoeg voor een periodieke synchronisatie; het remt een per ongeluk ontstane lus af). 10 actieve sleutels per organisatie. Lijsten geven maximaal 100 records per pagina terug. Zit de organisatie op het gratis abonnement met het maandquotum op, dan stopt het aanmaken van klanten net als in de applicatie.

Stap voor stap: klanten synchroniseren met Make

Een typisch scenario: elke 15 minuten de nieuwe of gewijzigde klanten en leveranciers uit Sattotal naar je CRM halen. In n8n doe je hetzelfde met de node HTTP Request en een node Schedule.

1

Maak de sleutel aan in Sattotal

Instellingen → API → Nieuwe sleutel, recht „Alleen lezen” als je alleen gaat lezen, „Lezen en schrijven” als je ook klanten vanuit het CRM gaat aanmaken. Kopieer de sleutel.

2

HTTP-module „Make a request”

URL: je basis-URL + /clientes. Methode GET. Header Authorization met als waarde Bearer en je sleutel. Vink „Parse response” aan om met de JSON te werken.

3

Test de verbinding

Voer allereerst één verzoek uit naar /me: komen je organisatie en de naam van de sleutel terug, dan is de authenticatie in orde.

4

Voeg het incrementele filter toe

Bewaar de datum van de laatste uitvoering in een Data store of een variabele en geef die mee als actualizadoDesde in de URL. Plan het scenario elke 15 minuten.

5

Wijs de velden toe aan je CRM

Loop door data[] en wijs id, codigo, nombre, apellidos, email, telefono, nif_cif en direccion toe. Bewaar het Sattotal-id in je CRM, zodat je bijwerkt in plaats van dupliceert.

Om klanten vanuit het CRM aan te maken gebruik je nog een HTTP-module met methode POST naar /clientes en de JSON-body van de klant. Krijg je 409, gebruik dan existenteId om te koppelen.

Goede beveiligingsgewoonten

Eén sleutel per integratie

Zo kun je er één intrekken zonder de andere te breken, en zie je in de lijst wanneer elke sleutel voor het laatst is gebruikt.

Nooit in de browser of in een openbare repository

Bewaar hem in de credential-opslag van je tool (verbindingen in Make, credentials in n8n, omgevingsvariabelen). Zet je hem in een repository of op een website, beschouw hem dan als gelekt.

Gelekt? Intrekken en een nieuwe maken

Intrekken werkt direct: de oude sleutel krijgt vanaf dan 401 CLAVE_REVOCADA. Werk de nieuwe bij in je tool en je bent klaar.

API-specificatie

De complete technische referentie (paden, parameters, schema's en foutcodes) is gepubliceerd in een open formaat op /api/v1/openapi.json, zonder dat je een sleutel nodig hebt. Standaard is hij in het Spaans; voeg ?lang= met je taal toe om hem vertaald te krijgen (bijvoorbeeld ?lang=nl, of /api/v1/openapi.json?lang=en). Je kunt hem importeren in Postman, Insomnia, Make of n8n om alle aanroepen klaar te hebben staan.

Veelgestelde vragen

Ik ben de sleutel kwijt, kan ik hem nog eens bekijken?

Nee. Hij wordt alleen bij het aanmaken getoond en daarna onomkeerbaar opgeslagen. Trek hem in onder Instellingen → API en maak een nieuwe.

Zijn er webhooks zodat Sattotal mijn CRM waarschuwt als er iets verandert?

Nog niet. De aanbevolen manier is periodiek opvragen met de parameter actualizadoDesde, die alleen teruggeeft wat is veranderd.

Welke gegevens stelt de API beschikbaar?

Klanten en leveranciers: opsommen, aanmaken, opvragen, bijwerken en archiveren. De rechten gelden per bron, dus een sleutel die is gemaakt voordat de leveranciers bestonden, komt er pas bij als een beheerder die bron aanvinkt. Daarnaast de reparatiebonnen, alleen lezen (status, datums, apparaat en offerte), met een eigen recht.

Kan ik een klant via de API verwijderen?

Nee, alleen archiveren (activo = false), net als in de applicatie. Dat geldt voor klanten en leveranciers allebei. Een gearchiveerd record blijft in de synchronisatie verschijnen, zodat je CRM dat kan overnemen.

Zit de API in het gratis abonnement?

Nee. Hij zit in Basic, Pro en Enterprise en in de proefperiode. Op het gratis abonnement kun je de sleutels die je hebt aangemaakt nog wel bekijken en intrekken.

Van de klant komt alleen de achternaam door. Waarom wordt de voornaam niet opgeslagen?

Bijna altijd ligt het aan de veldtoewijzing: de voornaam hoort in nombre en de achternaam in apellidos. Stuurt je tool de voornaam onder een andere sleutel (firstName, name, apellido…), dan negeert de API die en meldt dat in avisos.camposIgnorados in het antwoord. Pas de toewijzing aan en stuur de klant opnieuw met een PATCH.

Kan ik de klant vinden met het nummer dat me belt?

Ja. Roep GET /api/v1/clientes?telefono= aan met het nummer zoals het binnenkomt: het maakt niet uit of er een landnummer, spaties of streepjes in staan, en er wordt ook in het tweede telefoonnummer gezocht. Met het id van de klant kun je daarna zijn bonnen (/clientes/{id}/reparaciones) en zijn overzicht (/clientes/{id}/resumen) opvragen.

Wil je het zelf proberen?

Probeer Sattotal gratis met voorbeeldgegevens, zonder creditcard.