NueForm

API Formulaires

Créer, récupérer, mettre à jour, supprimer, publier et dupliquer des formulaires.

L'API Formulaires vous permet de gérer vos formulaires NueForm de manière programmatique. Vous pouvez lister, créer, récupérer, mettre à jour, supprimer, publier, dépublier et dupliquer des formulaires.

Tous les corps de requête et de réponse utilisent des noms de champs en snake_case.

Lister les formulaires

GET/api/v1/forms

Renvoie une liste paginée des formulaires auxquels l'utilisateur authentifié a accès, incluant les formulaires personnels et les formulaires des équipes auxquelles l'utilisateur appartient.

Paramètres de requête

pageinteger

Numéro de page (par défaut : 1)

per_pageinteger

Résultats par page (par défaut : 50)

searchstring

Filtrer les formulaires par titre (correspondance partielle insensible à la casse)

team_idstring

Renvoyer uniquement les formulaires appartenant à cette équipe

publishedboolean

Filtrer par statut de publication (true ou false)

Réponse

json
{
  "forms": [
    {
      "id": "665a1b2c3d4e5f6a7b8c9d0e",
      "title": "Customer Feedback Survey",
      "description": "Quarterly satisfaction survey for Q1 2026",
      "slug": "a1b2c3d4e5f6",
      "published": true,
      "created_at": "2026-01-15T10:30:00.000Z",
      "updated_at": "2026-02-20T14:22:00.000Z",
      "theme_color": "#6366f1",
      "background_color": "#0a0a0a",
      "response_count": 142,
      "team": {
        "id": "665b2c3d4e5f6a7b8c9d0e1f",
        "name": "Marketing"
      }
    }
  ],
  "total": 24,
  "page": 1,
  "per_page": 50
}

Exemples de code

bash
curl -X GET "https://api.nueform.io/api/v1/forms?page=1&per_page=10&published=true" \
  -H "Authorization: Bearer YOUR_API_KEY"

Créer un formulaire

POST/api/v1/forms

Crée un nouveau formulaire. Vous pouvez optionnellement inclure un tableau de questions à créer avec le formulaire.

Corps de la requête

titlestring

Titre du formulaire (ne peut pas être vide)

descriptionstring

Description du formulaire

team_idstring

Assigner le formulaire à une équipe (nécessite la permission create_forms)

publishedboolean

Si le formulaire est publié (par défaut : false)

theme_colorstring

Couleur du thème principal (hex, par défaut : #6366f1)

background_colorstring

Couleur de fond (hex, par défaut : #0a0a0a)

text_colorstring

Couleur du texte des questions (hex)

answer_text_colorstring

Couleur du texte des réponses saisies (hex)

placeholder_colorstring

Couleur du texte de remplacement des champs (hex)

button_colorstring

Couleur de fond des boutons (hex)

button_text_colorstring

Couleur du texte des boutons (hex)

title_colorstring

Couleur du texte du titre (hex)

description_colorstring

Couleur du texte de la description (hex)

option_text_colorstring

Couleur du texte des options de choix (hex)

indicator_bg_colorstring

Couleur de fond de l'indicateur d'étape (hex)

indicator_text_colorstring

Couleur du texte de l'indicateur d'étape (hex)

font_familystring

Famille de police des questions

font_family_answerstring

Famille de police des réponses saisies

font_family_buttonstring

Famille de police des boutons

font_family_descriptionstring

Famille de police des descriptions

font_family_optionstring

Famille de police des options de choix

font_family_indicatorstring

Famille de police de l'indicateur d'étape

question_font_sizestring

Taille de police des questions (ex. "24px")

custom_cssstring

CSS personnalisé injecté dans le rendu du formulaire

show_progress_barboolean

Afficher une barre de progression (par défaut : true)

branding_logo_urlstring

URL du logo de marque

branding_footer_textstring

Texte personnalisé du pied de page

hide_brandingboolean

Masquer la marque NueForm (par défaut : false)

top_logo_urlstring

URL d'un logo affiché en haut du formulaire

top_logo_sizestring

Taille du logo supérieur (ex. "120px")

top_logo_alignmentstring

Alignement du logo supérieur ("left", "center", "right")

top_logo_cssstring

CSS personnalisé pour le logo supérieur

watermark_cssstring

CSS personnalisé pour le filigrane

welcome_titlestring

Titre de l'écran d'accueil

welcome_descriptionstring

Description de l'écran d'accueil

welcome_button_textstring

Texte du bouton de l'écran d'accueil (par défaut : "Start")

thank_you_titlestring

Titre de l'écran de remerciement (par défaut : "Thank you!")

thank_you_descriptionstring

Description de l'écran de remerciement

modestring

Mode du formulaire : "standard", "knowledge_quiz", "lead_qualification", "match_quiz" (par défaut : "standard")

quiz_settingsobject

Configuration du quiz (pour les modes quiz)

variablesobject

Variables au niveau du formulaire pour la logique

start_logic_jumpsarray

Règles de sauts logiques appliquées au démarrage du formulaire

webhook_urlstring

URL pour recevoir un POST à la soumission (abonnement Pro requis)

limit_one_responseboolean

Limiter à une réponse par visiteur (par défaut : false)

incremental_submissionboolean

Sauvegarder les réponses de manière incrémentale au fur et à mesure de la progression du répondant (par défaut : false)

questionsarray

Tableau d'objets de questions à créer (voir ci-dessous)

Exemple de requête

json
{
  "title": "Customer Feedback Survey",
  "description": "Help us improve our product",
  "theme_color": "#2563eb",
  "background_color": "#ffffff",
  "show_progress_bar": true,
  "welcome_title": "We value your feedback",
  "welcome_description": "This survey takes about 3 minutes.",
  "welcome_button_text": "Let's go",
  "thank_you_title": "Thank you!",
  "thank_you_description": "Your feedback helps us build a better product.",
  "questions": [
    {
      "type": "short_text",
      "title": "What is your name?",
      "required": true
    },
    {
      "type": "multiple_choice",
      "title": "How did you hear about us?",
      "required": true,
      "properties": {
        "choices": [
          { "label": "Search engine" },
          { "label": "Social media" },
          { "label": "Friend or colleague" },
          { "label": "Other" }
        ],
        "allow_multiple": false
      }
    },
    {
      "type": "rating",
      "title": "How would you rate your overall experience?",
      "required": true,
      "properties": {
        "steps": 5,
        "shape": "star"
      }
    }
  ]
}

Réponse

Renvoie l'objet formulaire créé avec toutes les questions :

json
{
  "id": "665a1b2c3d4e5f6a7b8c9d0e",
  "title": "Customer Feedback Survey",
  "description": "Help us improve our product",
  "slug": "a1b2c3d4e5f6",
  "published": false,
  "created_at": "2026-02-28T12:00:00.000Z",
  "updated_at": "2026-02-28T12:00:00.000Z",
  "theme_color": "#2563eb",
  "background_color": "#ffffff",
  "show_progress_bar": true,
  "welcome_title": "We value your feedback",
  "welcome_description": "This survey takes about 3 minutes.",
  "welcome_button_text": "Let's go",
  "thank_you_title": "Thank you!",
  "thank_you_description": "Your feedback helps us build a better product.",
  "questions": [
    {
      "id": "66a1b2c3d4e5f6a7b8c9d001",
      "type": "short_text",
      "title": "What is your name?",
      "description": null,
      "required": true,
      "order": 0,
      "properties": {},
      "logic_jumps": [],
      "validations": {}
    },
    {
      "id": "66a1b2c3d4e5f6a7b8c9d002",
      "type": "multiple_choice",
      "title": "How did you hear about us?",
      "description": null,
      "required": true,
      "order": 1,
      "properties": {
        "choices": [
          { "label": "Search engine" },
          { "label": "Social media" },
          { "label": "Friend or colleague" },
          { "label": "Other" }
        ],
        "allow_multiple": false
      },
      "logic_jumps": [],
      "validations": {}
    },
    {
      "id": "66a1b2c3d4e5f6a7b8c9d003",
      "type": "rating",
      "title": "How would you rate your overall experience?",
      "description": null,
      "required": true,
      "order": 2,
      "properties": {
        "steps": 5,
        "shape": "star"
      },
      "logic_jumps": [],
      "validations": {}
    }
  ]
}

Exemples de code

bash
curl -X POST "https://api.nueform.io/api/v1/forms" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Customer Feedback Survey",
    "description": "Help us improve our product",
    "questions": [
      {
        "type": "short_text",
        "title": "What is your name?",
        "required": true
      }
    ]
  }'

Obtenir un formulaire

GET/api/v1/forms/:id

Récupère un formulaire unique par son identifiant, incluant toutes les questions ordonnées par leur position.

Paramètres de chemin

idstring

L'identifiant du formulaire

Réponse

json
{
  "id": "665a1b2c3d4e5f6a7b8c9d0e",
  "title": "Customer Feedback Survey",
  "description": "Help us improve our product",
  "slug": "a1b2c3d4e5f6",
  "published": true,
  "created_at": "2026-01-15T10:30:00.000Z",
  "updated_at": "2026-02-20T14:22:00.000Z",
  "theme_color": "#2563eb",
  "background_color": "#ffffff",
  "text_color": null,
  "answer_text_color": null,
  "placeholder_color": null,
  "button_color": null,
  "button_text_color": null,
  "font_family": null,
  "question_font_size": null,
  "custom_css": null,
  "show_progress_bar": true,
  "incremental_submission": false,
  "limit_one_response": false,
  "welcome_title": "We value your feedback",
  "welcome_description": "This survey takes about 3 minutes.",
  "welcome_button_text": "Let's go",
  "thank_you_title": "Thank you!",
  "thank_you_description": "Your feedback helps us build a better product.",
  "branding_logo_url": null,
  "branding_footer_text": null,
  "hide_branding": false,
  "mode": "standard",
  "webhook_url": null,
  "has_unpublished_changes": false,
  "published_version_id": "66c3d4e5f6a7b8c9d0e1f2a3",
  "response_count": 142,
  "questions": [
    {
      "id": "66a1b2c3d4e5f6a7b8c9d001",
      "type": "short_text",
      "title": "What is your name?",
      "description": null,
      "required": true,
      "order": 0,
      "properties": {},
      "logic_jumps": [],
      "validations": {}
    }
  ]
}

Exemples de code

bash
curl -X GET "https://api.nueform.io/api/v1/forms/665a1b2c3d4e5f6a7b8c9d0e" \
  -H "Authorization: Bearer YOUR_API_KEY"

Mettre à jour un formulaire

PUT/api/v1/forms/:id

Met à jour les champs d'un formulaire et synchronise ses questions. Lorsque vous incluez un tableau questions, NueForm va :

  • Mettre à jour les questions existantes (correspondance par id)
  • Créer de nouvelles questions (sans id ou id non reconnu)
  • Supprimer les questions qui existent dans le formulaire mais ne sont pas présentes dans le tableau

Si le formulaire est actuellement publié, le drapeau has_unpublished_changes est automatiquement défini à true.

Paramètres de chemin

idstring

L'identifiant du formulaire

Corps de la requête

Accepte tous les champs de Créer un formulaire sauf team_id. Incluez uniquement les champs que vous souhaitez modifier.

Exemple de requête

json
{
  "title": "Updated Survey Title",
  "description": "Revised description for Q2",
  "theme_color": "#10b981",
  "questions": [
    {
      "id": "66a1b2c3d4e5f6a7b8c9d001",
      "type": "short_text",
      "title": "What is your full name?",
      "required": true
    },
    {
      "type": "long_text",
      "title": "Any additional comments?",
      "required": false
    }
  ]
}

Réponse

Renvoie l'objet formulaire mis à jour avec toutes les questions (même schéma que Obtenir un formulaire).

Exemples de code

bash
curl -X PUT "https://api.nueform.io/api/v1/forms/665a1b2c3d4e5f6a7b8c9d0e" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Updated Survey Title",
    "theme_color": "#10b981"
  }'

Supprimer un formulaire

DELETE/api/v1/forms/:id

Supprime définitivement un formulaire et toutes les données associées, y compris les questions, les réponses, les versions et les entrées de journal des modifications. Les fichiers téléversés associés sont nettoyés de manière asynchrone.

Cette action est irréversible. Toutes les réponses collectées pour ce formulaire seront définitivement supprimées.

Paramètres de chemin

idstring

L'identifiant du formulaire

Réponse

json
{
  "success": true
}

Exemples de code

bash
curl -X DELETE "https://api.nueform.io/api/v1/forms/665a1b2c3d4e5f6a7b8c9d0e" \
  -H "Authorization: Bearer YOUR_API_KEY"

Publier un formulaire

POST/api/v1/forms/:id/publish

Publie un formulaire en créant un instantané versionné du formulaire actuel et de ses questions. Chaque publication incrémente le numéro de version. Le formulaire devient accessible publiquement via son URL de partage.

Paramètres de chemin

idstring

L'identifiant du formulaire

Réponse

Renvoie l'objet formulaire avec un champ published_version indiquant le nouveau numéro de version :

json
{
  "id": "665a1b2c3d4e5f6a7b8c9d0e",
  "title": "Customer Feedback Survey",
  "slug": "a1b2c3d4e5f6",
  "published": true,
  "has_unpublished_changes": false,
  "published_version_id": "66c3d4e5f6a7b8c9d0e1f2a3",
  "published_version": 3,
  "questions": [ ... ]
}

Exemples de code

bash
curl -X POST "https://api.nueform.io/api/v1/forms/665a1b2c3d4e5f6a7b8c9d0e/publish" \
  -H "Authorization: Bearer YOUR_API_KEY"

Dépublier un formulaire

DELETE/api/v1/forms/:id/publish

Dépublie un formulaire, le rendant inaccessible via son URL publique. L'instantané de la version publiée est conservé pour vous permettre de republier ultérieurement.

Paramètres de chemin

idstring

L'identifiant du formulaire

Réponse

Renvoie l'objet formulaire mis à jour avec published défini à false.

json
{
  "id": "665a1b2c3d4e5f6a7b8c9d0e",
  "title": "Customer Feedback Survey",
  "published": false,
  "questions": [ ... ]
}

Exemples de code

bash
curl -X DELETE "https://api.nueform.io/api/v1/forms/665a1b2c3d4e5f6a7b8c9d0e/publish" \
  -H "Authorization: Bearer YOUR_API_KEY"

Dupliquer un formulaire

POST/api/v1/forms/:id/duplicate

Crée une copie d'un formulaire existant, incluant toutes les questions. Les références de sauts logiques sont automatiquement remappées vers les nouveaux identifiants de questions. Le formulaire dupliqué est toujours créé dans un état non publié.

Paramètres de chemin

idstring

L'identifiant du formulaire à dupliquer

Corps de la requête

titlestring

Titre du nouveau formulaire (par défaut : "Titre original (Copie)")

team_idstring

Assigner la copie à une équipe différente

Exemple de requête

json
{
  "title": "Customer Feedback Survey v2",
  "team_id": "665b2c3d4e5f6a7b8c9d0e1f"
}

Réponse

Renvoie l'objet formulaire nouvellement créé (même schéma que Obtenir un formulaire) avec published défini à false.

Exemples de code

bash
curl -X POST "https://api.nueform.io/api/v1/forms/665a1b2c3d4e5f6a7b8c9d0e/duplicate" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "title": "Customer Feedback Survey v2" }'

Réponses d'erreur

Tous les points d'accès renvoient des réponses d'erreur standard.

Codes d'erreur

400Bad Request

Erreur de validation ou champ obligatoire manquant

401Unauthorized

Clé API manquante ou invalide

403Forbidden

Permissions insuffisantes pour les formulaires d'équipe

404Not Found

Formulaire introuvable

500Server Error

Erreur interne du serveur

Exemple d'erreur

json
{
  "error": "Title is required"
}
Dernière mise à jour : 6 avril 2026