> ## 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.

# Invitar a un usuario compartido

> POST /multi-users/

Los usuarios compartidos son los compañeros de equipo que invitas a tu cuenta de Scanova — la misma lista que se muestra en la tabla **Users** del panel. Este endpoint te permite listarlos, invitarlos, actualizarlos o eliminarlos de forma programática.

<Note>
  Este endpoint no estaba documentado anteriormente. Requiere una clave de la API de gestión con cuota `MANAGEMENT_API` (o `MANAGEMENT_API_SANDBOX`), enviada como el valor sin procesar del encabezado `Authorization` — consulta el [resumen de la API de gestión](/es/api-reference/management-api/overview) — además de la propia cuota de Team de la cuenta para usuarios compartidos. Para saber qué otorga realmente cada rol, consulta [Roles y permisos](/es/team/roles-and-permissions); para el formato de transmisión de los propios roles, consulta [Roles (niveles de acceso)](/es/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>
  Dirección de correo electrónico del nuevo compañero de equipo. No debe pertenecer ya a otro usuario de Scanova — un duplicado devuelve un 400 con `{"email": ["Email address is already used."]}`.
</ParamField>

<ParamField body="name" type="string" required>
  Nombre para mostrar, hasta 20 caracteres.
</ParamField>

<ParamField body="access_level" type="integer" required>
  ID de un rol de [`GET /multi-users/access-levels/`](/es/api-reference/management-api/shared-users/roles-list) — ya sea un rol de sistema predeterminado o uno personalizado que esta cuenta haya creado.
</ParamField>

<ParamField body="tags" type="array">
  IDs de etiquetas a las que limitar el acceso de este usuario. Requiere la cuota `CUSTOM_TAG`/permiso de etiquetas de la cuenta — de lo contrario se rechaza con un 403.
</ParamField>

<ParamField body="enable_tag_permission" type="boolean" default="false">
  Restringe los códigos QR visibles para este usuario a `tags`.
</ParamField>

<ParamField body="include_untagged" type="boolean" default="true">
  Cuando `enable_tag_permission` es verdadero, si los códigos QR sin etiquetar siguen siendo visibles.
</ParamField>

<Note>
  Invitar a un compañero de equipo siempre le envía un correo de invitación — crear el registro aquí tiene el mismo efecto que hacer clic en **Invite Users** en la tabla Users del panel. No hay forma de omitir el correo mediante este endpoint.
</Note>

## Relacionado

* [Listar usuarios compartidos](/es/api-reference/management-api/shared-users/list) — la otra operación de este mismo endpoint.
* [Obtener un usuario compartido](/es/api-reference/management-api/shared-users/retrieve) — opera sobre el registro del usuario compartido después de invitarlo.
* [Actualizar un usuario compartido](/es/api-reference/management-api/shared-users/update) — opera sobre el registro del usuario compartido después de invitarlo.
* [Eliminar un usuario compartido](/es/api-reference/management-api/shared-users/remove) — opera sobre el registro del usuario compartido después de invitarlo.
* [Listar roles](/es/api-reference/management-api/shared-users/roles-list) — busca o crea el ID de `access_level` que requieren las llamadas de invitar/actualizar de este endpoint.
* [Crear un rol personalizado](/es/api-reference/management-api/shared-users/roles-create) — busca o crea el ID de `access_level` que requieren las llamadas de invitar/actualizar de este endpoint.
* [Usuarios compartidos](/es/team/shared-users) — la propia tabla Users del panel, que muestra las mismas acciones de invitar/desactivar/eliminar.
* [Roles y permisos](/es/team/roles-and-permissions) — qué otorga realmente cada rol a un compañero de equipo.


## 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.

````