Form'Annonce API
Intégrez Form'Annonce dans vos outils métier. Publiez des annonces, consultez les candidatures et gérez les statuts directement depuis votre système.
Toutes les requêtes nécessitent une clef API dans le header X-API-Key. Deux façons d'en obtenir une : les organismes de formation génèrent la leur directement depuis leur dashboard (onglet Accès API), les éditeurs de logiciels nous contactent pour obtenir une clef partenaire dédiée.
GET /api/annonces
Host: us-central1-formannonce.cloudfunctions.net
X-API-Key: votre_clef_api
Content-Type: application/json
L'API retourne toujours un objet JSON avec un champ erreur en cas de problème.
{ "erreur": "Clef API invalide ou désactivée." }
Publie une nouvelle annonce sur Form'Annonce, immédiatement visible pour les formateurs inscrits dans le domaine correspondant.
| Champ | Type | Statut | Description |
|---|---|---|---|
| titre | string | Requis | Intitulé de la mission (max 200 car.) |
| description | string | Requis | Description détaillée (max 2000 car.) |
| domaine | string | Requis | Domaine ex: "Informatique & Numérique" |
| dept | string | Optionnel | Département ou zone géographique (défaut : "France") |
| ville | string | Optionnel | Ville précise de la mission |
| modalite | string | Optionnel | Présentiel, Distanciel ou Hybride (défaut : Présentiel) |
| dateDebut | string | Optionnel | Date de début au format JJ/MM/AAAA. Si absent, affiché "Dès que possible". |
| dateFin | string | Optionnel | Date de fin au format JJ/MM/AAAA. Recommandée : déclenche l'archivage automatique de la mission une fois la date passée. |
| duree | string | Optionnel | Durée ex: "2 Jours" (défaut : "À négocier") |
| tarif | string | Optionnel | Budget indicatif ex: "400/jour" (défaut : "À négocier") |
| frais | string | Optionnel | Frais de déplacement (défaut : "À négocier") |
| publicCible | string | Optionnel | Public et effectif ex: "5 salariés" |
| ofNom | string | Optionnel | Nom de l'organisme de formation à afficher sur l'annonce. Si absent, le nom associé à la clef API est utilisé. |
| formdevActionId | number | Optionnel | ID session Formdev pour l'intégration partenaire |
{
"titre": "Formateur Excel VBA — Niveau avancé",
"description": "Intervention de 2 jours en intra-entreprise...",
"domaine": "Informatique & Numerique",
"dept": "Gironde (33)",
"modalite": "Presentiel",
"dateDebut": "10/05/2026",
"dateFin": "11/05/2026",
"duree": "2 Jours",
"tarif": "400/jour",
"frais": "Non pris en charge",
"publicCible": "5 salaries"
}
{
"id": "EGar6UPM02t4hJcBtnMi",
"titre": "Formateur Excel VBA — Niveau avancé",
"statut": "ouverte",
"auteurId": "qWEcRttEeUTcGW4hc1YYZJWpdKt2",
"dateCreation": "2026-04-24T10:26:29.590Z",
"source": "api"
}
Retourne la liste des annonces publiées par votre organisme, triées par date de création décroissante (50 maximum).
{
"total": 2,
"annonces": [
{
"id": "EGar6UPM02t4hJcBtnMi",
"titre": "Formateur Excel VBA",
"statut": "ouverte",
"domaine": "Informatique & Numerique",
"dept": "Gironde (33)",
"budget": "400/jour",
"duree": "2 Jours",
"source": "api",
"dateCreation": "2026-04-24T10:26:29.590Z"
}
]
}
Retourne le détail complet d'une annonce à partir de son identifiant.
Met à jour les champs d'une annonce existante. Seuls les champs envoyés sont modifiés. Le champ statut accepte ouverte ou fermee (archiver l'annonce).
Supprime définitivement une annonce. Les candidatures associées ne sont pas supprimées.
Retourne la liste des candidatures reçues pour une annonce. Les emails des candidats ne sont jamais exposés par l'API.
{
"total": 1,
"candidatures": [
{
"id": "8UpuO1xK8RnoI1m22jc8",
"annonceId": "EGar6UPM02t4hJcBtnMi",
"titreAnnonce": "Formateur Excel VBA",
"candidatId": "qWEcRttEeUTcGW4hc1YYZJWpdKt2",
"nom": "Joao Fernandes",
"statut": "En attente",
"tarif": "400/jour",
"emailVerifie": true,
"dateCandidature": "2026-04-24T10:35:00.000Z"
}
]
}
Met à jour le statut d'une candidature. Un email de notification est automatiquement envoyé au formateur lors d'un passage en Accepté ou Refusé.
| Champ | Type | Statut | Valeurs acceptées |
|---|---|---|---|
| statut | string | Requis | Accepté Refusé En attente |
PUT /api/annonces/EGar6UPM02t4hJcBtnMi/candidatures/8UpuO1xK8RnoI1m22jc8
{ "statut": "Accepté" }
// Réponse 200
{
"id": "8UpuO1xK8RnoI1m22jc8",
"statut": "Accepté"
}
Pour les éditeurs de logiciels métier souhaitant publier des missions Form'Annonce pour le compte de leurs clients OF, trois architectures sont disponibles selon le niveau d'intégration souhaité.
Chaque OF génère sa propre clef API depuis son espace Form'Annonce (dashboard → onglet Accès API) et la renseigne dans son logiciel métier. L'éditeur n'a rien à gérer côté authentification : les annonces sont publiées directement sous le compte de l'OF, avec ses vraies informations. Aucune clef partenaire requise pour l'éditeur.
{
"titre": "Formateur Sécurité au travail",
"domaine": "Santé, Sécurité & Environnement",
"dept": "Haute-Garonne (31)",
"modalite": "Présentiel"
}
L'éditeur utilise une seule clef API partenaire. Chaque annonce inclut le champ ofNom pour afficher le nom de l'OF client. Aucun compte à créer pour les clients, tout passe par le compte de l'éditeur.
{
"titre": "Formateur Sécurité au travail",
"domaine": "Santé, Sécurité & Environnement",
"ofNom": "XYZ Formation"
}
L'éditeur provisionne un compte Form'Annonce pour chaque OF client via l'API admin et publie les missions sous ce compte. L'OF reçoit un lien de connexion lui donnant accès à son espace (dashboard, candidatures). Il peut définir un mot de passe ou lier son compte Google pour se connecter de façon autonome, sans perdre l'historique.
Le webhook Formdev permet à l'équipe Formdev de publier automatiquement des sessions depuis leur backoffice vers Form'Annonce, avec l'identifiant de session stocké pour la traçabilité.
Reçoit le payload d'une session Formdev et crée l'annonce correspondante sur Form'Annonce. Le champ formdevActionId est stocké sur l'annonce pour permettre l'injection du formateur retenu dans la session lors de l'acceptation d'une candidature (phase 2).