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

# Consultar organizaciones en lote

> Consulta por identificadores tributarios del tenant de la API key, preservando orden y duplicados mediante index. Devuelve found/not_found y sólo los atributos seleccionados por ID, con definiciones compartidas. Sin attribute_ids, no devuelve atributos. Hasta 100 elementos. Cada elemento consume una unidad del mismo límite por API key que las solicitudes individuales (600/minuto por defecto), incluidos duplicados, faltantes y fallos de negocio. Un 429 rechaza todo el lote antes de escribir, pero suma su costo completo al contador y puede agotar las unidades restantes; no extiende la ventana. Respeta Retry-After. El límite conserva la política de permitir solicitudes si Redis falla. Cuerpo: 32 KiB; respuesta: 1 MiB (413 si la selección es demasiado grande). Ver [guía de lotes](/guia#consulta-de-organizaciones-en-lote).



## OpenAPI

````yaml /openapi.json post /organizations/public/v1/bulk/lookup
openapi: 3.1.0
info:
  title: Revem API
  version: 1.0.0
  description: >-
    La API pública de Revem para integraciones de servidor a servidor:
    contactos, organizaciones, tickets, reuniones y el canal de webchat. Se
    autentica con la API key de tu organización.
  contact:
    name: Soporte Revem
    email: soporte@revem.ai
    url: https://revem.ai
servers:
  - url: https://api.revem.ai
    description: Producción
security:
  - apiKey: []
tags:
  - name: WhatsApp
    description: >-
      Envía plantillas aprobadas desde los números conectados de tu
      organización.
  - name: Organizaciones
    description: >-
      Sincroniza empresas por identificador tributario, con atributos
      personalizados por nombre.
  - name: Contactos
    description: >-
      Sincroniza tu base de clientes con Revem. Los contactos se identifican por
      teléfono al crearlos y por id después.
  - name: Tickets
    description: Lee y actualiza los tickets de tu embudo desde tu sistema de gestión.
  - name: Webchat
    description: >-
      Conecta el chat de tu sitio con Revem: registra lo que escribe el
      visitante y lee las respuestas del equipo o del agente.
  - name: Reuniones
    description: >-
      Requiere el módulo meetings. Reuniones independientes de las citas
      médicas, con responsable, capacidad y reservas por contacto y ocurrencia.
paths:
  /organizations/public/v1/bulk/lookup:
    post:
      tags:
        - Organizaciones
      summary: Consultar organizaciones en lote
      description: >-
        Consulta por identificadores tributarios del tenant de la API key,
        preservando orden y duplicados mediante index. Devuelve found/not_found
        y sólo los atributos seleccionados por ID, con definiciones compartidas.
        Sin attribute_ids, no devuelve atributos. Hasta 100 elementos. Cada
        elemento consume una unidad del mismo límite por API key que las
        solicitudes individuales (600/minuto por defecto), incluidos duplicados,
        faltantes y fallos de negocio. Un 429 rechaza todo el lote antes de
        escribir, pero suma su costo completo al contador y puede agotar las
        unidades restantes; no extiende la ventana. Respeta Retry-After. El
        límite conserva la política de permitir solicitudes si Redis falla.
        Cuerpo: 32 KiB; respuesta: 1 MiB (413 si la selección es demasiado
        grande). Ver [guía de lotes](/guia#consulta-de-organizaciones-en-lote).
      operationId: bulkLookupOrganizations
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrganizationBulkLookupBody'
            example:
              tax_ids:
                - 00.12-k
                - missing
                - 0012K
              attribute_ids:
                - '41'
                - '42'
                - '43'
      responses:
        '200':
          description: Resultados en orden de entrada.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationBulkLookupResult'
        '400':
          description: Cuerpo, límites o tax_id inválidos.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationsError'
        '401':
          description: Sin credencial, o la API key no existe o fue revocada.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthError'
              example:
                error: Unauthorized
                message: Invalid API key
        '403':
          description: >-
            La credencial no puede usar esta ruta. Una API key sólo alcanza los
            endpoints documentados aquí; cualquier otra ruta de la API responde
            este código.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthError'
              example:
                ok: false
                error: Forbidden
                message: This endpoint is not available to API keys
        '413':
          description: Cuerpo o respuesta demasiado grande; reduce el lote o la selección.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationsError'
        '422':
          description: Uno o más atributos solicitados no están disponibles.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationsError'
        '429':
          description: >-
            La key superó su presupuesto de unidades por minuto: una por
            solicitud individual o elemento de lote. El header `retry-after`
            indica cuánto esperar.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RateLimitError'
              example:
                ok: false
                error: Too many requests. Retry in 60 seconds.
          headers:
            retry-after:
              description: Segundos que esperar antes de reintentar.
              schema:
                type: integer
            x-ratelimit-limit:
              description: >-
                Unidades permitidas por minuto: cada solicitud individual
                consume 1; cada elemento de un lote de organizaciones consume 1.
              schema:
                type: integer
            x-ratelimit-remaining:
              description: Unidades que quedan en la ventana actual.
              schema:
                type: integer
            x-ratelimit-reset:
              description: Segundos hasta que la ventana se reinicia.
              schema:
                type: integer
components:
  schemas:
    OrganizationBulkLookupBody:
      type: object
      properties:
        tax_ids:
          minItems: 1
          maxItems: 100
          type: array
          items:
            type: string
            minLength: 1
            maxLength: 100
          description: >-
            Entre 1 y 100 identificadores tributarios. Se normalizan como los
            endpoints individuales, conservando ceros. Duplicados permitidos: un
            resultado por posición.
        attribute_ids:
          default: []
          maxItems: 100
          type: array
          items:
            type: string
            pattern: ^[1-9]\d{0,18}$
          description: >-
            Hasta 100 IDs distintos, como strings decimales positivos. Omitido o
            [] no solicita atributos. Todos deben definir atributos de
            organización del tenant autenticado.
      required:
        - tax_ids
      additionalProperties: false
      description: >-
        Cuerpo máximo 32 KiB. Los atributos se validan una vez por solicitud;
        cualquier ID desconocido, ajeno, de otra entidad o del simulador rechaza
        la solicitud con 422.
      example:
        tax_ids:
          - 00.12-k
          - missing
          - 0012K
        attribute_ids:
          - '41'
          - '42'
          - '43'
    OrganizationBulkLookupResult:
      type: object
      properties:
        attribute_definitions:
          maxItems: 100
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                pattern: ^[1-9]\d{0,18}$
              name:
                type: string
              data_type:
                type: string
              extra_data:
                anyOf:
                  - type: string
                  - type: 'null'
            required:
              - id
              - name
              - data_type
              - extra_data
            additionalProperties: false
          description: >-
            Metadatos compartidos de los IDs solicitados, en el orden
            solicitado: id, name, data_type y extra_data (opciones de select
            cuando corresponde).
        results:
          maxItems: 100
          type: array
          items:
            oneOf:
              - type: object
                properties:
                  index:
                    type: integer
                    minimum: 0
                  tax_id:
                    type: string
                  status:
                    type: string
                    const: found
                  organization:
                    type: object
                    properties:
                      id:
                        type: string
                        format: uuid
                      tax_id:
                        type: string
                      name:
                        anyOf:
                          - type: string
                          - type: 'null'
                      attributes:
                        type: object
                        additionalProperties: true
                    required:
                      - id
                      - tax_id
                      - name
                      - attributes
                    additionalProperties: false
                required:
                  - index
                  - tax_id
                  - status
                  - organization
                additionalProperties: false
              - type: object
                properties:
                  index:
                    type: integer
                    minimum: 0
                  tax_id:
                    type: string
                  status:
                    type: string
                    const: not_found
                required:
                  - index
                  - tax_id
                  - status
                additionalProperties: false
          description: >-
            Un resultado por posición con index desde 0 y tax_id normalizado.
            found incluye sólo id, tax_id, name nullable y attributes por ID.
            Una clave ausente no tiene valor almacenado; null es un borrado
            explícito; 0 y money.amount: 0 son valores. not_found incluye
            faltantes, papelera, simulador y otros tenants sin distinguirlos.
      required:
        - attribute_definitions
        - results
      additionalProperties: false
      description: >-
        Máximo 1 MiB de JSON UTF-8. Si lo supera, responde 413 sin truncar
        valores; reduce el lote o la selección.
      example:
        attribute_definitions:
          - id: '41'
            name: Saldo
            data_type: money
            extra_data: null
          - id: '42'
            name: Deuda
            data_type: money
            extra_data: null
          - id: '43'
            name: Nota
            data_type: text
            extra_data: null
        results:
          - index: 0
            tax_id: 0012K
            status: found
            organization:
              id: 3f2b6c1e-8d4a-4f0b-9c2e-7a1d5e6f8b90
              tax_id: 0012K
              name: Empresa Ejemplo SpA
              attributes:
                '41':
                  currency: CLP
                  amount: 0
                '42': null
          - index: 1
            tax_id: MISSING
            status: not_found
          - index: 2
            tax_id: 0012K
            status: found
            organization:
              id: 3f2b6c1e-8d4a-4f0b-9c2e-7a1d5e6f8b90
              tax_id: 0012K
              name: Empresa Ejemplo SpA
              attributes:
                '41':
                  currency: CLP
                  amount: 0
                '42': null
    OrganizationsError:
      type: object
      properties:
        ok:
          type: boolean
          const: false
        error:
          type: string
          description: Etiqueta del código HTTP; message explica el problema.
        message:
          type: string
          description: Explicación legible del problema.
        unknownAttributes:
          type: array
          items:
            type: string
          description: >-
            Nombres desconocidos o de sólo lectura rechazados con 422; corrige
            la solicitud antes de reintentar.
      required:
        - error
      additionalProperties: false
    AuthError:
      type: object
      properties:
        ok:
          type: boolean
          const: false
          description: Presente sólo en el `403`.
        error:
          type: string
        message:
          type: string
      required:
        - error
        - message
    RateLimitError:
      type: object
      properties:
        ok:
          type: boolean
          const: false
        error:
          type: string
          description: Incluye cuánto esperar antes de reintentar.
      required:
        - ok
        - error
  securitySchemes:
    apiKey:
      type: http
      scheme: bearer
      description: >-
        La API key de tu organización, con la forma `rvm_<prefijo>.<secreto>`,
        enviada como `Authorization: Bearer rvm_…`. Revem la emite y sólo se
        muestra una vez; si la pierdes se reemplaza, no se recupera.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.