L'API REST vous permet d'intégrer Expert Copro Gestion à vos outils existants : logiciels de comptabilité, extensions navigateur, scripts d'automatisation, ou toute application tierce.
L'API REST publique d'Expert Copro Gestion permet de connecter tâches, propriétés, documents et assemblées générales à vos outils existants — logiciel de comptabilité, extension navigateur, script d'automatisation. L'authentification se fait par une clé API personnelle, envoyée dans l'en-tête HTTP X-API-Key, avec des permissions lecture seule ou lecture-écriture.
L'API est organisée autour de ressources REST. Elle accepte les corps de requête en JSON, retourne des réponses JSON et utilise les codes de statut HTTP standards.
# Lister vos taches curl -H "X-API-Key: ecg_votre_cle_api" \ https://www.expert-copro-gestion.fr/api/client/v1/tasks.php
{
"success": true,
"data": [
{
"id": 12,
"title": "Verifier etancheite toiture bat A",
"status": "todo",
"priority": "high",
"due_date": "2026-04-10"
}
],
"meta": { "total": 47, "page": 1 }
}
L'API utilise des clés API pour authentifier les requêtes. Chaque clé est liée à un utilisateur et une organisation.
Connectez-vous à votre espace client et allez dans Paramètres > Clés API.
Générez une clé avec les permissions souhaitées : read (lecture seule) ou read + write (lecture/écriture).
Ajoutez le header X-API-Key à chaque requête HTTP.
X-API-Key: ecg_a1b2c3d4e5f6...
{
"success": false,
"error": {
"code": "UNAUTHORIZED",
"message": "Cle API invalide ou expiree."
}
}
L'API applique un rate limiting pour garantir la stabilité du service.
429 Too Many Requests. Attendez quelques secondes avant de retenter.HTTP/1.1 429 Too Many Requests Content-Type: application/json Retry-After: 60
Toutes les réponses suivent le même format. En cas d'erreur, success vaut false et un objet error décrit le problème.
200 Succès201 Ressource créée400 Requête invalide401 Non authentifié403 Permission insuffisante404 Ressource introuvable422 Erreur de validation429 Trop de requêtes500 Erreur serveur{
"success": false,
"error": {
"code": "NOT_FOUND",
"message": "Tache introuvable."
}
}
{
"success": false,
"error": {
"code": "VALIDATION_ERROR",
"message": "Champs invalides.",
"fields": {
"title": "Titre requis.",
"due_date": "Format de date invalide."
}
}
}
Les endpoints de liste retournent des résultats paginés. Utilisez les paramètres page et per_page.
| Paramètre | Défaut | Description |
|---|---|---|
page | 1 | Numéro de page |
per_page | 20 | Résultats par page (max 100) |
{
"success": true,
"data": [ /* ... resultats ... */ ],
"meta": {
"page": 2,
"per_page": 20,
"total": 47,
"pages": 3
}
}
Retourne la liste paginée des tâches de votre organisation avec filtres optionnels.
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
status | string | optionnel | todo, in_progress, done, cancelled. Virgule pour multi. |
priority | string | optionnel | low, medium, high |
assigned_to_user_id | integer | optionnel | ID du membre assigné |
overdue | boolean | optionnel | 1 = tâches en retard |
q | string | optionnel | Recherche texte (titre + description) |
sort | string | optionnel | created_at, due_date, priority, status, title |
order | string | optionnel | asc ou desc (défaut) |
curl -H "X-API-Key: ecg_votre_cle" \ "https://www.expert-copro-gestion.fr/api/client/v1/tasks.php?status=todo,in_progress&sort=due_date&order=asc"
{
"success": true,
"data": [
{
"id": 12,
"title": "Verifier etancheite toiture bat A",
"description": "Infiltrations au 3e etage",
"status": "todo",
"priority": "high",
"assigned_to": "Duclim SARL",
"assigned_to_user_id": 8,
"assignee_name": "Nicolas Lambert",
"property_name": "Residence Les Pins",
"due_date": "2026-04-10",
"document_count": 2,
"created_at": "2026-04-01 09:00:00"
}
],
"meta": {
"page": 1,
"per_page": 20,
"total": 47,
"pages": 3
}
}
Retourne le détail complet d'une tâche avec ses documents attachés.
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
id | integer | requis | ID de la tâche |
curl -H "X-API-Key: ecg_votre_cle" \ "https://www.expert-copro-gestion.fr/api/client/v1/tasks.php?id=12"
{
"success": true,
"data": {
"id": 12,
"title": "Verifier etancheite toiture bat A",
"description": "Infiltrations au 3e etage",
"status": "todo",
"priority": "high",
"due_date": "2026-04-10",
"creator_name": "Sophie Martin",
"assignee_name": "Nicolas Lambert",
"property_name": "Residence Les Pins",
"documents": [
{
"id": 1,
"original_name": "devis-toiture.pdf",
"mime_type": "application/pdf",
"size": 245000
}
]
}
}
Retourne les compteurs par statut et les statistiques globales.
curl -H "X-API-Key: ecg_votre_cle" \ "https://www.expert-copro-gestion.fr/api/client/v1/tasks.php?stats=1"
{
"success": true,
"data": {
"total": 47,
"todo": 18,
"in_progress": 12,
"done": 14,
"cancelled": 3,
"overdue": 5,
"high_priority": 8
}
}
Cree une nouvelle tâche. Nécessite la permission write.
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
title | string | requis | Titre (max 255 car.) |
description | string | optionnel | Description détaillée |
status | string | optionnel | todo (défaut), in_progress, done, cancelled |
priority | string | optionnel | low, medium (défaut), high |
assigned_to_user_id | integer | optionnel | ID du membre assigné |
assigned_to | string | optionnel | Prestataire externe (texte libre) |
property_id | integer | optionnel | ID du bien concerné |
due_date | string | optionnel | Échéance (YYYY-MM-DD) |
curl -X POST \ -H "X-API-Key: ecg_votre_cle" \ -H "Content-Type: application/json" \ -d '{ "title": "Verifier etancheite toiture", "priority": "high", "assigned_to_user_id": 8, "due_date": "2026-04-15" }' \ https://www.expert-copro-gestion.fr/api/client/v1/tasks.php
{
"success": true,
"data": {
"id": 48,
"title": "Verifier etancheite toiture",
"status": "todo",
"priority": "high",
"assigned_to_user_id": 8,
"assignee_name": "Nicolas Lambert",
"due_date": "2026-04-15",
"created_at": "2026-04-08 14:30:00"
}
}
Met à jour une tâche existante. Envoyez uniquement les champs à modifier. Permission write requise.
curl -X PUT \ -H "X-API-Key: ecg_votre_cle" \ -H "Content-Type: application/json" \ -d '{ "status": "done" }' \ "https://www.expert-copro-gestion.fr/api/client/v1/tasks.php?id=48"
{
"success": true,
"data": {
"id": 48,
"status": "done",
"completed_at": "2026-04-08 16:00:00",
// ... tous les champs
}
}
Supprime définitivement une tâche et tous ses documents. Permission write requise.
curl -X DELETE \ -H "X-API-Key: ecg_votre_cle" \ "https://www.expert-copro-gestion.fr/api/client/v1/tasks.php?id=48"
{
"success": true,
"data": {
"deleted": 48
}
}
Retourne la liste des documents attachés à une tâche (PDF, images, Word, Excel).
PDF, JPEG, PNG, GIF, WebP, Word (.doc, .docx), Excel (.xls, .xlsx). Maximum 20 documents par tâche, 10 Mo par fichier.
curl -H "X-API-Key: ecg_votre_cle" \ "https://www.expert-copro-gestion.fr/api/client/v1/tasks.php?id=12&documents=1"
{
"success": true,
"data": [
{
"id": 1,
"original_name": "devis-toiture.pdf",
"mime_type": "application/pdf",
"size": 245000,
"uploaded_by_name": "Julie Moreau",
"created_at": "2026-04-01 14:30:00"
}
]
}
Retourne la liste paginée des biens et immeubles de votre organisation.
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
page | integer | optionnel | Page (défaut: 1) |
per_page | integer | optionnel | Par page (défaut: 20, max: 100) |
curl -H "X-API-Key: ecg_votre_cle" \
https://www.expert-copro-gestion.fr/api/client/v1/properties.php
{
"success": true,
"data": [
{
"id": 1,
"name": "Residence Les Pins",
"address": "12 rue des Pins, 75016 Paris",
"lots_count": 45,
"created_at": "2026-01-15 10:00:00"
}
],
"meta": { "page": 1, "total": 3 }
}
Retourne le détail complet d'un bien ou immeuble.
| Champ | Type | Description |
|---|---|---|
id | integer | Identifiant unique |
name | string | Nom du bien |
address | string | Adresse complète |
lots_count | integer | Nombre de lots |
notes | string | Notes internes |
created_at | datetime | Date de création |
curl -H "X-API-Key: ecg_votre_cle" \ "https://www.expert-copro-gestion.fr/api/client/v1/properties.php?id=1"
{
"success": true,
"data": {
"id": 1,
"name": "Residence Les Pins",
"address": "12 rue des Pins, 75016 Paris",
"lots_count": 45,
"notes": "Gardien: M. Fernandez",
"created_at": "2026-01-15 10:00:00"
}
}
Met à jour en lot les références internes de vos propriétés. Permet d'associer votre numérotation interne aux numéros d'immatriculation RNCOP.
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
bindings | array | requis | Tableau d'objets de liaison (max 500) |
bindings[].numero_immatriculation | string | requis | Numéro d'immatriculation RNCOP de la propriété |
bindings[].internal_ref | string | requis | Référence interne à associer |
internal_ref est suivi dans user_modified_fields pour éviter l'ecrasement lors des enrichissements RNCOP ultérieurs.curl -X POST \ -H "X-API-Key: ecg_votre_cle" \ -H "Content-Type: application/json" \ -d '{ "bindings": [ { "numero_immatriculation": "ABC1234567", "internal_ref": "COPRO-001" }, { "numero_immatriculation": "DEF7654321", "internal_ref": "COPRO-002" } ] }' \ "https://www.expert-copro-gestion.fr/api/client/v1/properties.php?action=bind-refs"
{
"success": true,
"data": {
"updated": 2,
"errors": [],
"total_errors": 0
}
}
Recherche dans le Registre National des Copropriétés (RNCOP) toutes les propriétés gérées par un syndic identifié par son numéro SIREN.
Utilise le filtre siret_representant_legal__contains sur la base data.gouv.fr pour retrouver toutes les copropriétés associées au SIREN.
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
siren | string | requis | Numéro SIREN du syndic (9 chiffres exactement) |
curl -H "X-API-Key: ecg_votre_cle" \ "https://www.expert-copro-gestion.fr/api/v1/rncop.php?siren=123456789"
{
"success": true,
"data": [
{
"numero_immatriculation": "ABC1234567",
"nom_copropriete": "Residence Les Pins",
"adresse": "12 rue des Pins 75016 Paris",
"nombre_lots": 45,
"siret_representant_legal": "12345678900012"
}
]
}
Retourne la liste des assemblées générales (AG) de votre organisation, avec filtres optionnels et pagination.
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
status | string | optionnel | planifiee, en_cours, ag_tenue, cloturee, annulee. Virgule pour multi. |
type | string | optionnel | ordinaire ou extraordinaire |
property_id | integer | optionnel | Filtre sur un immeuble précis |
q | string | optionnel | Recherche texte (nom de l'immeuble) |
page | integer | optionnel | Numéro de page (défaut 1) |
per_page | integer | optionnel | Résultats par page (10 à 100, défaut 20) |
curl -H "X-API-Key: ecg_votre_cle" \ "https://www.expert-copro-gestion.fr/api/client/v1/ag.php?status=planifiee,en_cours&type=ordinaire"
{
"success": true,
"data": {
"ag": [
{
"id": 42,
"property_id": 7,
"property_name": "Residence Les Pins",
"type": "ordinaire",
"status": "planifiee",
"date_ag": "2026-09-15",
"exercice": "2025",
"gestionnaire_name": "Sophie Martin"
}
]
}
}
Retourne le détail d'une AG : ses informations, les tâches de son rétroplanning (pivot_tasks), la fiche récapitulative (recap) et les documents attachés.
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
id | integer | requis | ID de l'AG (dans le chemin) |
curl -H "X-API-Key: ecg_votre_cle" \ "https://www.expert-copro-gestion.fr/api/client/v1/ag.php/42"
{
"success": true,
"data": {
"ag": {
"id": 42,
"property_name": "Residence Les Pins",
"type": "ordinaire",
"status": "planifiee",
"date_ag": "2026-09-15"
},
"pivot_tasks": [
{ "id": 310, "title": "Verification des comptes", "due_date": "2026-07-15", "status": "todo" }
],
"recap": {},
"documents": []
}
}
Cree une AG pour un immeuble. A la création (statut planifiee), le rétroplanning est généré automatiquement : une tâche par étape du modèle de votre organisation, datée à partir de date_ag.
Nécessite une clé API avec la permission write.
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
property_id | integer | requis | ID de l'immeuble |
date_ag | string | requis | Date de l'AG au format YYYY-MM-DD |
type | string | optionnel | ordinaire (défaut) ou extraordinaire |
exercice | string | optionnel | Exercice comptable concerné (ex : 2025) |
date_verif_comptes | string | optionnel | Date de vérification des comptes (YYYY-MM-DD), ancre certaines étapes |
gestionnaire_user_id | integer | optionnel | Gestionnaire (défaut : hérité de l'immeuble) |
comptable_user_id | integer | optionnel | Comptable (défaut : hérité de l'immeuble) |
observations | string | optionnel | Notes libres |
curl -X POST -H "X-API-Key: ecg_votre_cle" -H "Content-Type: application/json" \ -d '{"property_id":7,"date_ag":"2026-09-15","type":"ordinaire","exercice":"2025"}' \ "https://www.expert-copro-gestion.fr/api/client/v1/ag.php"
{
"success": true,
"data": { "id": 42 }
}
Crée plusieurs AG en une seule requête (max 500 lignes). Chaque ligne résout l'immeuble par sa référence (property_ref : référence interne, puis numéro d'immatriculation RNCOP, puis nom approchant). Chaque AG créée génère son rétroplanning.
Nécessite une clé API avec la permission write.
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
rows | array | requis | Lignes à importer (1 à 500) |
rows[].property_ref | string | requis | Référence interne, n° d'immatriculation ou nom de l'immeuble |
rows[].date_ag | string | requis | Date au format YYYY-MM-DD |
rows[].type | string | optionnel | AGO/ordinaire (défaut) ou AGE/extraordinaire |
rows[].gestionnaire_email | string | optionnel | Email du gestionnaire (résolu en interne) |
rows[].exercice | string | optionnel | Exercice comptable |
options.create_missing_properties | boolean | optionnel | Cree l'immeuble via RNCOP si introuvable (property_ref = n° d'immatriculation) |
curl -X POST -H "X-API-Key: ecg_votre_cle" -H "Content-Type: application/json" \ -d '{"rows":[{"property_ref":"LES-PINS","date_ag":"2026-09-15","type":"AGO"}],"options":{"create_missing_properties":false}}' \ "https://www.expert-copro-gestion.fr/api/client/v1/ag.php/import"
{
"success": true,
"data": {
"imported": 1,
"errors": [],
"agIds": [42],
"createdPropIds": []
}
}
Modification partielle : seuls les champs fournis sont mis à jour. Si date_ag ou date_verif_comptes change, les échéances des tâches non terminées du rétroplanning sont recalculées automatiquement.
Nécessite une clé API avec la permission write.
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
date_ag | string | optionnel | Nouvelle date (YYYY-MM-DD) |
status | string | optionnel | planifiee, en_cours, ag_tenue, cloturee, annulee |
exercice | string | optionnel | Exercice comptable |
observations | string | optionnel | Notes libres |
curl -X PUT -H "X-API-Key: ecg_votre_cle" -H "Content-Type: application/json" \ -d '{"date_ag":"2026-09-22"}' \ "https://www.expert-copro-gestion.fr/api/client/v1/ag.php/42"
{ "success": true, "data": { "ok": true } }
Marque une AG comme cloturee. La transition n'est possible que depuis le statut ag_tenue (AG tenue, en attente de clôture). Nécessite la permission write.
curl -X POST -H "X-API-Key: ecg_votre_cle" \ "https://www.expert-copro-gestion.fr/api/client/v1/ag.php/42/close"
{ "success": true, "data": { "ok": true } }
Marque une AG comme annulee. Les tâches non terminées de son rétroplanning passent automatiquement en cancelled. Nécessite la permission write.
curl -X POST -H "X-API-Key: ecg_votre_cle" \ "https://www.expert-copro-gestion.fr/api/client/v1/ag.php/42/cancel"
{ "success": true, "data": { "ok": true } }
Supprime définitivement une AG. Les tâches de son rétroplanning sont supprimées en cascade. Nécessite la permission write.
curl -X DELETE -H "X-API-Key: ecg_votre_cle" \ "https://www.expert-copro-gestion.fr/api/client/v1/ag.php/42"
{ "success": true, "data": { "ok": true } }
Retourne les résolutions votées en assemblée (lecture seule), telles qu'enregistrées après l'AG (extraction du PV). Nécessite la permission read.
curl -H "X-API-Key: ecg_votre_cle" \ "https://www.expert-copro-gestion.fr/api/client/v1/ag.php/42/resolutions"
{
"success": true,
"data": {
"resolutions": [
{
"id": 5,
"numero": "1",
"titre": "Approbation des comptes de l'exercice 2025",
"majorite_article": "25",
"resultat": "adoptee"
}
]
}
}
Retourne, toutes AG confondues, les décisions votées (résolutions adoptee ou reportee) de votre organisation, avec un statut d'exécution dérivé des tâches de suivi qui leur sont rattachées. Permet de répondre à « qu'a-t-on voté qui n'est pas encore exécuté ? ».
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
property_id | integer | optionnel | Filtre sur un immeuble |
exercice | string | optionnel | Filtre sur un exercice comptable |
status | string | optionnel | Filtre sur le statut d'exécution : a_lancer, en_cours, en_souffrance, fait, reportee, abandonnee, en_attente |
q | string | optionnel | Recherche texte sur l'intitulé |
page | integer | optionnel | Numéro de page (défaut 1) |
per_page | integer | optionnel | Résultats par page (10-100, défaut 50) |
execution_status est dérivé des tâches liées : a_lancer, en_cours, fait, en_souffrance (au moins une tâche en retard), ou reportee. Il peut aussi refléter un statut forcé manuellement : abandonnee, fait ou en_attente. La réponse est paginée (total, page, per_page).curl -H "X-API-Key: ecg_votre_cle" \ "https://www.expert-copro-gestion.fr/api/client/v1/ag.php/decisions?status=reportee"
{
"success": true,
"data": {
"decisions": [
{
"id": 5,
"numero": "1",
"titre": "Ravalement de la facade",
"majorite_article": "25",
"resultat": "adoptee",
"property_name": "Residence Les Pins",
"date_ag": "2026-05-15",
"execution_status": "en_souffrance",
"has_tasks": true
}
],
"total": 1,
"page": 1,
"per_page": 50
}
}
Retourne la liste des clés API actives de votre organisation. Réservée aux administrateurs d'organisation.
| Champ | Type | Description |
|---|---|---|
id | integer | Identifiant unique de la clé |
name | string | Nom descriptif de la clé |
key_display | string | Préfixe masqué (ex: ecg_a1b2...x9z0) |
permissions | array | ["read"] ou ["read","write"] |
expires_at | datetime|null | Date d'expiration (null = illimitée) |
last_used | datetime|null | Dernière utilisation |
created_at | datetime | Date de création |
key_display) est visible.curl -H "X-API-Key: ecg_votre_cle" \
https://www.expert-copro-gestion.fr/api/v1/api-keys.php
{
"success": true,
"data": [
{
"id": 3,
"name": "Extension Chrome",
"key_display": "ecg_a1b2...x9z0",
"permissions": ["read", "write"],
"expires_at": "2026-07-15 00:00:00",
"last_used": "2026-04-16 09:12:00",
"created_at": "2026-04-15 10:00:00"
}
]
}
Génère une nouvelle clé API. La clé complète est retournée une seule fois dans la réponse. Réservée aux administrateurs d'organisation avec un plan payant.
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
name | string | requis | Nom descriptif (max 100 car.) |
permissions | array | requis | ["read"] ou ["read","write"] |
expires_in_days | integer|null | optionnel | null (illimitée), 30, 90 ou 365 jours |
curl -X POST \ -H "X-API-Key: ecg_votre_cle" \ -H "Content-Type: application/json" \ -d '{ "name": "Extension Chrome", "permissions": ["read", "write"], "expires_in_days": 90 }' \ https://www.expert-copro-gestion.fr/api/v1/api-keys.php
{
"success": true,
"data": {
"id": 4,
"name": "Extension Chrome",
"key": "ecg_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6",
"permissions": ["read", "write"],
"expires_at": "2026-07-15 00:00:00",
"created_at": "2026-04-16 10:00:00"
}
}
Met à jour le nom et/ou les permissions d'une clé existante. Envoyez uniquement les champs à modifier. Admin org uniquement.
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
name | string | optionnel | Nouveau nom (max 100 car.) |
permissions | array | optionnel | ["read"] ou ["read","write"] |
curl -X PUT \ -H "X-API-Key: ecg_votre_cle" \ -H "Content-Type: application/json" \ -d '{ "name": "Script backup", "permissions": ["read"] }' \ "https://www.expert-copro-gestion.fr/api/v1/api-keys.php?id=4"
{
"success": true,
"data": {
"id": 4,
"name": "Script backup",
"key_display": "ecg_a1b2...x9z0",
"permissions": ["read"],
"expires_at": "2026-07-15 00:00:00",
"created_at": "2026-04-16 10:00:00"
}
}
Révoqué une clé API (suppression logique). La clé ne pourra plus être utilisée pour s'authentifier. Admin org uniquement.
curl -X DELETE \ -H "X-API-Key: ecg_votre_cle" \ "https://www.expert-copro-gestion.fr/api/v1/api-keys.php?id=4"
{
"success": true,
"data": {
"revoked": 4
}
}
Retourne les informations du profil de l'utilisateur connecté, incluant le jeton CSRF et l'état des tutoriels complétés.
| Champ | Type | Description |
|---|---|---|
id | integer | Identifiant utilisateur |
name | string | Nom complet |
email | string | Adresse email |
role | string | Rôle dans l'organisation |
tutorials_completed | object | Tutoriels complétés avec timestamps (ex: {"tasks": "2026-04-16T10:00:00"}) |
csrf_token | string | Jeton CSRF pour les écritures |
curl -H "X-API-Key: ecg_votre_cle" \
https://www.expert-copro-gestion.fr/api/v1/me.php
{
"success": true,
"data": {
"id": 1,
"name": "Sophie Martin",
"email": "sophie@example.com",
"role": "admin_org",
"tutorials_completed": {
"tasks": "2026-04-16T10:00:00"
},
"csrf_token": "a1b2c3d4e5f6..."
}
}
Marque un tutoriel comme terminé pour l'utilisateur connecté. Le timestamp de completion est enregistré dans le champ JSON tutorials_completed.
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
action | string | requis | Doit être "complete-tutorial" |
module | string | requis | Nom du module (ex: "tasks", "properties") |
curl -X POST \ -H "X-API-Key: ecg_votre_cle" \ -H "Content-Type: application/json" \ -d '{ "action": "complete-tutorial", "module": "tasks" }' \ https://www.expert-copro-gestion.fr/api/v1/me.php
{
"success": true,
"data": {
"module": "tasks",
"completed_at": "2026-04-16T10:00:00"
}
}