L'API publique de The Legal Seed permet aux intégrateurs tiers, cabinets partenaires et plateformes légales de réutiliser notre moteur juridique bilingue (FR/EN) : chat IA, recherche d'articles de loi marocains, annuaire d'avocats vérifiés, analyse de contrats.
Toutes les requêtes vers /api/v1/* doivent inclure une clé API
valide. La clé peut être transmise via l'en-tête Authorization: Bearer
ou l'en-tête x-api-key.
Les clés API commencent par tls_api_ et font 32 caractères.
curl https://legal-seed.com/api/v1/chat \
-H "Authorization: Bearer tls_api_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"messages":[{"role":"user","content":"Indemnité licenciement abusif"}]}'
ou via x-api-key :
curl https://legal-seed.com/api/v1/search?q=indemnit%C3%A9+licenciement \ -H "x-api-key: tls_api_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
Chaque clé API est limitée à 100 requêtes / heure glissantes.
Les réponses incluent les en-têtes suivants lorsque la limite est proche :
| Header | Description |
|---|---|
Retry-After | Secondes restantes avant reset (uniquement sur 429). |
Au-delà de la limite, l'API renvoie 429 Too Many Requests avec un
corps { error: "rate_limit_exceeded", retryAfterSeconds }.
| Code HTTP | Erreur | Cause |
|---|---|---|
| 400 | invalid_json | Le corps n'est pas du JSON valide. |
| 400 | invalid_request | Champs requis manquants ou invalides. |
| 401 | unauthorized | Clé API absente. |
| 401 | invalid_api_key | Clé API non reconnue. |
| 403 | forbidden | La clé n'a pas accès à cette ressource. |
| 429 | rate_limit_exceeded | Limite horaire dépassée pour cette clé. |
| 500 | server_error | Erreur interne (rare, journalisée). |
| 503 | ai_unavailable | Le modèle IA est temporairement indisponible. |
Toutes les erreurs renvoient un objet :
{ "error": "invalid_api_key", "detail": "The provided API key is not recognized." }
Agent d'orientation juridique bilingue. Identifie la spécialité, pose des questions clarifiantes, et fournit une réponse accompagnée de citations d'articles de loi marocains vérifiées.
| Champ | Type | Description |
|---|---|---|
messages | array | Tableau de messages {role, content}. Roles acceptés : user, assistant, system. |
lang | string | Langue de réponse. "fr" (défaut) ou "en". |
POST /api/v1/chat
Authorization: Bearer tls_api_xxx
Content-Type: application/json
{
"lang": "fr",
"messages": [
{ "role": "user", "content": "Mon employeur me licencie après 8 ans, quelle indemnité ?" }
]
}
{
"reply": "Votre situation relève du droit du travail (spécialité: travail). En cas de licenciement abusif après 8 ans d'ancienneté, l'article 59 du Code du Travail prévoit des dommages-intérêts calculés en fonction de l'ancienneté, du salaire et du préjudice subi...",
"citations": [
{
"article": "Article 59",
"source": "Code du Travail (loi 65-99)",
"url": "/moroccan-law/code-travail#art-59"
},
{
"article": "Article 41",
"source": "Code du Travail (loi 65-99)",
"url": "/moroccan-law/code-travail#art-41"
}
],
"detectedSpecialty": "travail",
"confidence": 0.92
}
| Champ | Type | Description |
|---|---|---|
reply | string | Réponse textuelle de l'agent. |
citations | array | Articles de loi vérifiés contre la base de connaissance. |
detectedSpecialty | string|null | Spécialité TLS détectée (famille, travail, penal, etc.). |
confidence | number | Indice de confiance 0..1. |
Recherche plein-texte sur la base de connaissance juridique marocaine : articles de loi (Code du Travail, Moudawana, Code Pénal, DOC, CGI...), fiches pratiques (guides), et articles de blog.
| Paramètre | Type | Défaut | Description |
|---|---|---|---|
q | string | — | Requis. Requête (min 2 caractères). |
limit | int | 10 | Nombre de résultats (max 50). |
specialty | string | null | Filtrer par spécialité (famille, travail, penal, affaires, immobilier, fiscal, social, pi, etrangers, bancaire, administratif, mediation). |
GET /api/v1/search?q=indemnit%C3%A9+licenciement&limit=5 Authorization: Bearer tls_api_xxx
{
"query": "indemnité licenciement",
"count": 5,
"totalFound": 18,
"limit": 5,
"results": [
{
"title": "Code du Travail — Article 59 : Versement des dommages-intérêts en cas de licenciement abusif",
"excerpt": "En cas de licenciement abusif, le salarié a droit à des dommages-intérêts dont le montant est fixé souverainement par le juge...",
"article": "Article 59",
"url": "/moroccan-law/code-travail#art-59",
"type": "legal-article",
"specialty": "travail"
},
{
"title": "Indemnité de licenciement abusif au Maroc : calcul et droits",
"excerpt": "L'indemnité de licenciement abusif au Maroc est calculée selon un barème progressif basé sur l'ancienneté...",
"url": "/guides/indemnite-licenciement-abusif-maroc",
"type": "guide",
"specialty": "travail"
}
]
}
Annuaire des avocats vérifiés The Legal Seed. Les champs PII (téléphone, email, adresse, numéro de barreau) ne sont pas exposés via l'API publique — ils requièrent un rendez-vous booked via la plateforme.
| Paramètre | Type | Défaut | Description |
|---|---|---|---|
city | string | null | Filtrer par ville (Casablanca, Rabat, Marrakech...). |
specialty | string | null | Filtrer par spécialité principale ou secondaire. |
limit | int | 10 | Nombre de résultats (max 50). |
GET /api/v1/lawyers?city=Casablanca&specialty=travail&limit=3 Authorization: Bearer tls_api_xxx
{
"count": 3,
"totalAvailable": 12,
"limit": 3,
"filters": { "city": "Casablanca", "specialty": "travail" },
"lawyers": [
{
"name": "Cabinet Alami & Associés",
"slug": "cabinet-alami-casablanca",
"city": "Casablanca",
"specialties": [
{ "slug": "travail", "label": "Droit du Travail", "isPrimary": true },
{ "slug": "affaires", "label": "Droit des Affaires", "isPrimary": false }
],
"consultationFee": "300 DH — 1ère consultation",
"rating": 4.8,
"verified": true,
"languages": ["français", "arabe", "anglais"],
"yearsExperience": 15,
"availability": "Disponible cette semaine"
}
]
}
Analyse IA d'un contrat au regard du droit marocain. Identifie les clauses à risque (high / medium / low / info) et propose une recommandation par clause.
| Champ | Type | Description |
|---|---|---|
contractText | string | Texte du contrat (min 50 caractères, max 8000). |
POST /api/v1/contracts/analyze
Authorization: Bearer tls_api_xxx
Content-Type: application/json
{
"contractText": "CONTRAT DE TRAVAIL À DURÉE INDÉTERMINÉE\n\nEntre M. X (employeur) et Mme Y (salariée)...\n\nArticle 1 — Période d'essai : 6 mois renouvelable...\n\nArticle 2 — Clause de non-concurrence : pendant 5 ans après la fin du contrat sur tout le territoire marocain...\n\n..."
}
{
"synthesis": "Le contrat présente 2 clauses à risque élevé et 2 clauses conformes. La période d'essai de 6 mois renouvelable dépasse la limite légale. La clause de non-concurrence de 5 ans est manifestement excessive. Recommandation : réviser avant signature.",
"clauses": [
{
"title": "Période d'essai",
"risk": "high",
"analysis": "L'article 52 du Code du Travail fixe la période d'essai à 3 mois pour les cadres, renouvelable une seule fois. 6 mois renouvelable est illicite.",
"recommendation": "Ramener à 3 mois et préciser 'renouvellement une seule fois'."
},
{
"title": "Clause de non-concurrence",
"risk": "high",
"analysis": "5 ans sur tout le territoire marocain est manifestement excessif. La jurisprudence considère qu'une telle clause n'est valable que si elle est limitée dans le temps (max 2 ans), dans l'espace et justifiée par l'intérêt de l'employeur.",
"recommendation": "Ramener à 2 ans maximum et limiter géographiquement aux villes d'implantation."
},
{
"title": "Durée du contrat",
"risk": "info",
"analysis": "CDI conforme au droit marocain.",
"recommendation": "Aucune modification nécessaire."
}
],
"stats": { "high": 2, "medium": 0, "low": 0, "info": 1 }
}
| Niveau | Définition |
|---|---|
high | Clause manifestement illicite, nulle, ou très risquée. |
medium | Clause valable mais perfectible, points d'attention. |
low | Clause conforme, avec mineurs ajustements possibles. |
info | Clause standard, information neutre. |
Pour les clients Enterprise, The Legal Seed expose un endpoint SCIM 2.0 permettant l'automatisation du provisioning utilisateur via Okta, Azure AD, Google Workspace, etc.
Authentification : Bearer token (Admin Token). Voir la spécification RFC 7644.
Pour toute question technique : api@thelegalseed.ma
Pour les questions de sécurité : security@thelegalseed.ma
Statut des services : /security
The Legal Seed — Maroc. Les réponses de l'IA ne constituent pas un conseil juridique. Consultez un avocat inscrit au barreau pour toute décision.