GoLynk Documentation
golynk.ch
Plan requis : L'accès à l'API REST nécessite le plan Freelance Pro (9.90 CHF/mois) ou le plan GDS Premium (19 CHF/mois). La génération de clés API est disponible dans Paramètres → Intégrations.

URL de base

Toutes les requêtes API sont adressées à l'URL suivante :

https://golynk.ch/api/v1

L'API supporte uniquement HTTPS. Les requêtes HTTP seront redirigées vers HTTPS.

Authentification

L'API GoLynk utilise des clés API Bearer. Chaque clé est générée dans votre espace GoLynk (Paramètres → Intégrations → Clés API) et associée à votre compte.

Format de la clé

Les clés API ont le format glk_live_[32 caractères]. La partie après le préfixe est hashée en SHA-256 en base de données — GoLynk ne peut pas reconstituer votre clé après sa création.

Utilisation

Incluez votre clé dans l'en-tête HTTP Authorization de chaque requête :

Authorization: Bearer glk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Générer une clé API

Connectez-vous à GoLynk et allez dans Paramètres → Intégrations.
Dans la section Clés API, cliquez sur Générer une clé.
Donnez un nom descriptif à votre clé (ex : "Intégration Zapier", "Script comptable").
Copiez la clé immédiatement. Elle ne sera plus jamais affichée en clair. Si vous la perdez, générez-en une nouvelle et révoquez l'ancienne.
Ne committez jamais votre clé API dans votre code source ou un dépôt Git. Utilisez des variables d'environnement (.env) ou un gestionnaire de secrets (HashiCorp Vault, AWS Secrets Manager, etc.).

Rate limiting

L'API est limitée à 120 requêtes par minute par clé API. Les en-têtes de réponse indiquent votre consommation :

En-têteDescription
X-RateLimit-LimitLimite totale (120)
X-RateLimit-RemainingRequêtes restantes dans la fenêtre actuelle
X-RateLimit-ResetTimestamp Unix de la prochaine réinitialisation
Retry-AfterSecondes à attendre (présent uniquement en cas de dépassement 429)

En cas de dépassement, l'API retourne 429 Too Many Requests. Attendez la durée indiquée par Retry-After avant de réessayer.

Endpoints

Tous les endpoints retournent du JSON (Content-Type: application/json). Les listes sont paginées par défaut (page 1, 20 éléments).

Clients

GET/clients
Liste tous les clients du compte, paginés.
GET/clients/:id
Récupère un client par son identifiant.
POST/clients
Crée un nouveau client. Corps JSON requis : name (string), email (string, optionnel).
PUT/clients/:id
Met à jour un client existant. Corps JSON avec les champs à modifier.
DELETE/clients/:id
Supprime un client. Irréversible.

Factures

GET/factures
Liste les factures. Filtrable par status (paid, pending, overdue), from/to (ISO 8601), client_id.
GET/factures/:id
Détail d'une facture avec ses lignes.

Comptabilité

GET/ecritures
Écritures comptables. Filtrable par from/to, compte (numéro de compte), limit (max 100).
GET/plan-comptable
Liste tous les comptes du plan comptable avec leurs types et soldes actuels.

Projets & Produits

GET/projets
Liste les projets avec budget, dépenses réelles et marge.
GET/produits
Liste le catalogue produits/services avec niveaux de stock actuels.

Autres

GET/sync-status
Statut de la dernière synchronisation bancaire (Stripe, Revolut) : date, nombre d'écritures importées, erreurs éventuelles.
POST/send-email
Envoie un email via le SMTP configuré. Nécessite SMTP actif. Corps : to, subject, body (HTML ou texte).

Paramètres communs

Ces paramètres de query string sont disponibles sur tous les endpoints de type liste :

ParamètreTypeDéfautDescription
pageinteger1Numéro de page (commence à 1)
limitinteger20Éléments par page (max 100)
fromstringDate de début ISO 8601 (ex: 2026-01-01)
tostringDate de fin ISO 8601 (ex: 2026-12-31)
searchstringRecherche textuelle dans les champs pertinents
statusstringFiltre par statut (valeurs selon l'endpoint)

Format de réponse

// Succès (liste paginée)
{
  "data": [...],
  "pagination": {
    "page": 1,
    "limit": 20,
    "total": 142,
    "pages": 8
  }
}

// Succès (objet unique)
{
  "data": { ... }
}

// Erreur
{
  "error": "Message d'erreur",
  "code": "ERROR_CODE"
}

Codes d'erreur HTTP

CodeStatutCause
400Bad RequestCorps de requête invalide ou paramètre manquant
401UnauthorizedClé API manquante, invalide ou révoquée
403ForbiddenPlan insuffisant pour cet endpoint
404Not FoundRessource introuvable (mauvais ID)
429Too Many RequestsLimite de rate limit atteinte (120 req/min)
500Internal Server ErrorErreur serveur interne. Contactez support@golynk.ch

Exemples de code

cURL

# Liste des clients
curl -X GET "https://golynk.ch/api/v1/clients?page=1&limit=10" \
  -H "Authorization: Bearer glk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json"

# Créer un client
curl -X POST "https://golynk.ch/api/v1/clients" \
  -H "Authorization: Bearer glk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"name":"Acme SA","email":"contact@acme.ch","address":"Rue de Genève 1, 1201 Genève"}'

JavaScript (fetch)

const API_KEY = 'glk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
const BASE_URL = 'https://golynk.ch/api/v1';

// Récupérer les factures en retard
const response = await fetch(`${BASE_URL}/factures?status=overdue&limit=50`, {
  headers: {
    'Authorization': `Bearer ${API_KEY}`,
    'Content-Type': 'application/json'
  }
});

const { data, pagination } = await response.json();
console.log(`${pagination.total} factures en retard`);
data.forEach(invoice => {
  console.log(`${invoice.number} - ${invoice.client_name} - CHF ${invoice.total}`);
});

Python

import requests

API_KEY = "glk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
BASE_URL = "https://golynk.ch/api/v1"
headers = {"Authorization": f"Bearer {API_KEY}"}

# Récupérer les écritures du mois
params = {"from": "2026-04-01", "to": "2026-04-30", "limit": 100}
r = requests.get(f"{BASE_URL}/ecritures", headers=headers, params=params)
r.raise_for_status()

entries = r.json()["data"]
total = sum(e["amount"] for e in entries if e["type"] == "credit")
print(f"Total crédits avril 2026 : CHF {total:.2f}")
Webhooks (à venir) : Le système de webhooks permettra à GoLynk de notifier votre serveur lors d'événements (nouvelle facture payée, stock bas, etc.). La configuration sera disponible dans Paramètres → Intégrations → Webhooks. Abonnez-vous à la newsletter pour être notifié du lancement.