> ## Documentation Index
> Fetch the complete documentation index at: https://docs.scanova.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Inviter un utilisateur partagé

> POST /multi-users/

Les utilisateurs partagés sont les coéquipiers que vous invitez dans votre compte Scanova — la même liste affichée dans le tableau **Users** du tableau de bord. Cet endpoint vous permet de les lister, de les inviter, de les mettre à jour ou de les supprimer de manière programmatique.

<Note>
  Cet endpoint n'était pas documenté auparavant. Il nécessite une clé Management API avec le quota `MANAGEMENT_API` (ou `MANAGEMENT_API_SANDBOX`), envoyée comme valeur brute de l'en-tête `Authorization` — voir la [vue d'ensemble de la Management API](/fr/api-reference/management-api/overview) — ainsi que le propre quota Team du compte pour les utilisateurs partagés. Pour ce que chaque rôle accorde réellement, voir [Rôles et permissions](/fr/team/roles-and-permissions) ; pour le format des rôles eux-mêmes, voir [Rôles (niveaux d'accès)](/fr/api-reference/management-api/shared-users/roles-list).
</Note>

<RequestExample>
  ```bash cURL theme={null}
  curl --request POST \
    --url 'https://management.scanova.io/multi-users/' \
    --header 'Authorization: YOUR_API_KEY' \
    --header 'Content-Type: application/json' \
    --data '{
      "email": "teammate@example.com",
      "name": "Jordan Lee",
      "access_level": 5
    }'
  ```
</RequestExample>

<ResponseExample>
  ```json 201 theme={null}
  {
    "id": 118,
    "shared_user": {
      "id": 88213,
      "first_name": "Jordan",
      "last_name": "Lee",
      "full_name": "Jordan Lee",
      "email": "teammate@example.com",
      "is_active": false,
      "is_locked": false
    },
    "access_level": {
      "id": 5,
      "name": "Manager",
      "slug": "manager",
      "permissions": [],
      "is_custom": false
    },
    "invitation_sent_on": null,
    "invitation_accepted_on": null,
    "is_invitation_sent": false,
    "is_invitation_accepted": false,
    "status": "Invitation Sent",
    "is_active": false,
    "created": "2026-08-16T20:41:09.442000+05:30",
    "modified": "2026-08-16T20:41:09.442000+05:30",
    "include_untagged": true,
    "enable_tag_permission": false,
    "tags": []
  }
  ```
</ResponseExample>

<ParamField body="email" type="string" required>
  Adresse e-mail du nouveau coéquipier. Ne doit pas déjà appartenir à un autre utilisateur Scanova — un doublon renvoie une erreur 400 avec `{"email": ["Email address is already used."]}`.
</ParamField>

<ParamField body="name" type="string" required>
  Nom affiché, jusqu'à 20 caractères.
</ParamField>

<ParamField body="access_level" type="integer" required>
  ID d'un rôle issu de [`GET /multi-users/access-levels/`](/fr/api-reference/management-api/shared-users/roles-list) — soit un rôle système par défaut, soit un rôle personnalisé créé par ce compte.
</ParamField>

<ParamField body="tags" type="array">
  IDs de tags pour limiter l'accès de cet utilisateur. Nécessite le quota `CUSTOM_TAG`/permission par tag du compte — sinon rejeté avec une erreur 403.
</ParamField>

<ParamField body="enable_tag_permission" type="boolean" default="false">
  Restreint les QR codes visibles par cet utilisateur à `tags`.
</ParamField>

<ParamField body="include_untagged" type="boolean" default="true">
  Lorsque `enable_tag_permission` est vrai, indique si les QR codes sans tag restent visibles.
</ParamField>

<Note>
  Inviter un coéquipier envoie toujours un e-mail d'invitation — créer l'enregistrement ici a le même effet que de cliquer sur **Invite Users** dans le tableau Users du tableau de bord. Il n'existe aucun moyen de ne pas envoyer cet e-mail via cet endpoint.
</Note>

## Voir aussi

* [Lister les utilisateurs partagés](/fr/api-reference/management-api/shared-users/list) — l'autre opération de ce même endpoint.
* [Récupérer un utilisateur partagé](/fr/api-reference/management-api/shared-users/retrieve) — opérez sur l'enregistrement de l'utilisateur partagé après l'avoir invité.
* [Mettre à jour un utilisateur partagé](/fr/api-reference/management-api/shared-users/update) — opérez sur l'enregistrement de l'utilisateur partagé après l'avoir invité.
* [Supprimer un utilisateur partagé](/fr/api-reference/management-api/shared-users/remove) — opérez sur l'enregistrement de l'utilisateur partagé après l'avoir invité.
* [Lister les rôles](/fr/api-reference/management-api/shared-users/roles-list) — recherchez ou créez l'ID `access_level` requis par les appels d'invitation/mise à jour de cet endpoint.
* [Créer un rôle personnalisé](/fr/api-reference/management-api/shared-users/roles-create) — recherchez ou créez l'ID `access_level` requis par les appels d'invitation/mise à jour de cet endpoint.
* [Utilisateurs partagés](/fr/team/shared-users) — le tableau Users du tableau de bord, montrant les mêmes actions d'invitation/désactivation/suppression.
* [Rôles et permissions](/fr/team/roles-and-permissions) — ce que chaque rôle accorde réellement à un coéquipier.


## OpenAPI

````yaml api-reference/openapi/management-api.json POST /multi-users/
openapi: 3.1.0
info:
  title: Scanova Management API (v2)
  description: >-
    The complete Scanova Management API — every endpoint available at
    management.scanova.io (QR codes, folders, tags, leads, forms, analytics,
    plans, shared users & roles), plus the token-creation and usage-stats
    endpoints used to authenticate against it. Every path and request/response
    shape below was verified live against a real API key and the actual running
    backend (Phase 7, 2026-08-16) — not guessed from reading urls.py alone.
  version: 2.0.0
servers:
  - url: https://management.scanova.io
    description: Management API — QR/folder/tag/lead/form/analytics/plans endpoints
security:
  - apiKeyAuth: []
paths:
  /multi-users/:
    post:
      summary: Invite a shared user
      operationId: createManagedSharedUser
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                email:
                  type: string
                  format: email
                name:
                  type: string
                  maxLength: 20
                access_level:
                  type: integer
                  description: Role ID from GET /multi-users/access-levels/.
                tags:
                  type: array
                  items:
                    type: integer
                enable_tag_permission:
                  type: boolean
                  default: false
                include_untagged:
                  type: boolean
                  default: true
              required:
                - email
                - name
                - access_level
            example:
              email: teammate@example.com
              name: Jordan Lee
              access_level: 5
      responses:
        '201':
          description: Invitation created — sends an invitation email to the shared user.
          content:
            application/json:
              example:
                id: 118
                shared_user:
                  id: 88213
                  first_name: Jordan
                  last_name: Lee
                  full_name: Jordan Lee
                  email: teammate@example.com
                  is_active: false
                  is_locked: false
                access_level:
                  id: 5
                  name: Manager
                  slug: manager
                  permissions: []
                  is_custom: false
                invitation_sent_on: null
                invitation_accepted_on: null
                is_invitation_sent: false
                is_invitation_accepted: false
                status: Invitation Sent
                is_active: false
                include_untagged: true
                enable_tag_permission: false
                tags: []
components:
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: Authorization
      description: >-
        Send your Management API key as the raw value of the Authorization
        header — no "Bearer " or "Token " prefix, and no other characters.
        Example: `Authorization: 401f7ac837da42b97f613d789819ff93537bee6a`. A
        header containing more than one space-separated part is rejected
        outright. Requests also require the request's Host header to be the
        management API host (e.g. management.scanova.io) — the same key sent to
        the regular API host will not authenticate.

````