Une clé nommée par canal
« Web principal », « App mobile », « Agence Rome » : autant de clés que de canaux, chacune nommée pour ce qu'elle est, afin qu'une fuite ou une erreur remonte à une seule intégration, jamais à tout le compte.
API de réservation
Il n'existe pas de version amoindrie de Tiqory réservée aux intégrations. Un plugin WordPress, une connexion revendeur ou notre propre panneau d'administration appellent exactement le même moteur, via une clé limitée à ce dont elle a besoin, et rien de plus.
Chacun restreint ce qu'une intégration donnée peut réellement faire, sans jamais restreindre ce que la plateforme elle-même peut faire.
« Web principal », « App mobile », « Agence Rome » : autant de clés que de canaux, chacune nommée pour ce qu'elle est, afin qu'une fuite ou une erreur remonte à une seule intégration, jamais à tout le compte.
Une clé reçoit exactement les capacités dont elle a besoin : lire un produit, créer un checkout, envoyer un lead, jamais un accès général à tout ce que l'API sait faire.
Chaque organisation décide, capacité par capacité, si un navigateur peut l'appeler directement ou si l'appel doit passer par un serveur détenant une clé. Leads, support et feedback en exigent toujours une.
Une clé compromise se fait tourner, et tout appelant encore équipé de l'ancien secret cesse de fonctionner dès la requête suivante, sans délai d'expiration de jeton à attendre.
Cinq étapes, à chaque fois qu'une requête porte une clé d'API.
La clé en clair arrive sous la forme préfixe.secret. Le préfixe retrouve la ligne correspondante, puis le secret est comparé à son empreinte stockée par une vérification à temps constant, jamais par une simple égalité.
L'action demandée doit figurer explicitement dans la liste des capacités accordées à cette clé. Son absence renvoie la même erreur générique, que la clé existe ou non.
Le trafic de cette clé compte contre son propre quota configuré, isolé de toute autre clé du même compte. Le trafic public sans clé, lui, est compté par adresse IP.
Une fois authentifié, l'appel n'opère qu'à l'intérieur de l'organisation propriétaire de la clé. Aucun chemin ne mène du catalogue d'un autre client, même en devinant un identifiant interne.
La date de dernière utilisation et l'adresse IP appelante se mettent à jour à chaque requête réussie, si bien qu'une clé inactive ou oubliée devient visible bien avant que quiconque ne pense à la chercher.
Un produit recherché par son alias public renvoie ses options, ses types de billets, ses dates disponibles, ses prix résolus et sa capacité restante, déjà corrects pour la devise et le pays de la requête.
{
"data": {
"name": "City Food Tour",
"alias": "city-food-tour",
"currency": "EUR",
"options": [
{
"code": "general",
"next_slot": "2026-08-14T10:00:00+02:00",
"remaining": 12,
"price": {
"amount": 42.5,
"currency": "EUR"
}
}
]
}
}Un produit appartenant à une autre organisation et un produit qui n'existe tout simplement pas renvoient exactement le même « introuvable », jamais une erreur de permission qui confirmerait que le produit existe ailleurs. Une clé invalide ou révoquée reçoit sa propre erreur distincte, mais aucune réponse ne révèle jamais si la ressource demandée appartient à un autre client.
Faites-la tourner. La rotation émet immédiatement un nouveau préfixe et un nouveau secret et invalide l'ancienne paire, si bien que tout appelant encore équipé du secret divulgué échoue dès la requête suivante, sans délai de propagation à attendre.
Non. Toute requête authentifiée par une clé s'exécute dans le périmètre de sa propre organisation. Un produit appartenant à quelqu'un d'autre renvoie le même « introuvable » qu'un produit qui n'existe pas du tout.
Non. products.read et checkout.create peuvent s'exécuter directement depuis un navigateur si l'organisation les laisse publiques. leads.create, support.create et feedback.create exigent toujours une clé, puisqu'elles existent spécifiquement pour être appelées depuis un serveur contrôlé par l'organisation.
Une valeur par défaut raisonnable pour chaque capacité, comptée par adresse IP : généreuse pour la navigation, plus stricte pour créer un checkout ou envoyer un lead. Une clé remplace cette valeur par défaut par son propre quota configuré, de 10 à 10 000 requêtes par minute.
Une réponse 429 avec un en-tête Retry-After, plus la limite et le nombre de requêtes restantes, pour qu'une intégration puisse ralentir automatiquement au lieu de deviner quand réessayer.
Tiqory garde disponibilité, tarifs, paiements et accès parfaitement synchronisés à mesure que votre activité grandit. Dites-nous où vous allez ; nous vous montrons comment y arriver sans repartir de zéro.