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

# Crear solicitud de sincronización a demanda

> Crea una solicitud de sincronización a demanda para una entidad. Es un **recurso asíncrono**: la API crea el objeto, responde 201 de inmediato con `status: "pending"` y el scrape corre en segundo plano — la llamada nunca bloquea esperando al SII. Luego puedes hacer polling con `GET /sync-requests/{id}` o registrar un `webhook_url` para que te avisemos al terminar.

Disponible **solo para entidades en el plan de 24 horas**. Si la entidad ya está en un plan de 12 h o 3 h, responde 400: su cartera ya se sincroniza sola con mayor frecuencia y no necesita solicitudes a demanda.



## OpenAPI

````yaml api-reference/openapi-v2.json POST /sync-requests/
openapi: 3.0.0
info:
  title: Tupana API — v2
  description: >-
    API v2 de Tupana: facturación electrónica, cesiones, recaudación, consultas,
    boleta de honorarios y nómina. Los identificadores de recursos son public
    IDs opacos con prefijo (docu_, ment_, cred_, doce_, empl_…).
  version: 2.0.0
servers:
  - url: https://api.tupana.ai/v2
    description: Producción (v2)
security:
  - apiKeyAuth: []
paths:
  /sync-requests/:
    post:
      tags:
        - Sincronización
      summary: Crear solicitud de sincronización a demanda
      description: >-
        Crea una solicitud de sincronización a demanda para una entidad. Es un
        **recurso asíncrono**: la API crea el objeto, responde 201 de inmediato
        con `status: "pending"` y el scrape corre en segundo plano — la llamada
        nunca bloquea esperando al SII. Luego puedes hacer polling con `GET
        /sync-requests/{id}` o registrar un `webhook_url` para que te avisemos
        al terminar.


        Disponible **solo para entidades en el plan de 24 horas**. Si la entidad
        ya está en un plan de 12 h o 3 h, responde 400: su cartera ya se
        sincroniza sola con mayor frecuencia y no necesita solicitudes a
        demanda.
      operationId: createSyncRequest_v2
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - master_entity_id
              properties:
                master_entity_id:
                  type: string
                  description: >-
                    ID de la entidad maestra. El public ID de la entidad
                    (`ment_...`).
                  example: ment_4829301923847
                scrape_types:
                  type: array
                  description: >-
                    Tipos de scrape a ejecutar. Si se omite o va vacío, se
                    sincronizan todos los tipos habilitados para la entidad.
                  items:
                    type: string
                    enum:
                      - ISSUED_DOCS
                      - RECEIVED_DOCS
                      - RECEIVED_HONORARY_BILLS
                      - THIRD_PARTY_HONORARY
                      - EMITTED_HONORARY_BILLS
                      - PURCHASE_BOOK
                      - SALE_BOOK
                      - BOOK_SUMMARY
                  example:
                    - ISSUED_DOCS
                    - RECEIVED_DOCS
                webhook_url:
                  type: string
                  format: uri
                  description: >-
                    URL opcional. Al completarse la solicitud hacemos un POST
                    (best effort, timeout 5 s) con el payload `{id, status,
                    results}`.
                  example: https://miapp.cl/webhooks/tupana-sync
      responses:
        '201':
          description: Solicitud creada; el scrape corre en segundo plano
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SyncRequest'
              example:
                id: syre_5b6c7d8e9f0a1
                master_entity_id: ment_4829301923847
                requested_types:
                  - ISSUED_DOCS
                  - RECEIVED_DOCS
                status: pending
                webhook_url: https://miapp.cl/webhooks/tupana-sync
                results: {}
                completed_at: null
                created_at: '2026-07-20T14:30:00Z'
        '400':
          description: >-
            Body inválido (master_entity_id faltante, scrape_type desconocido) o
            la entidad está en un plan de 12 h / 3 h (la sincronización a
            demanda es solo para el plan de 24 horas)
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: >-
                      La actualización a demanda está disponible solo para el
                      plan de 24 horas; tu plan ya sincroniza cada 12 horas.
        '403':
          description: Sin acceso a la entidad indicada
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                    example: No tienes acceso a esta entidad.
      security:
        - apiKeyAuth: []
components:
  schemas:
    SyncRequest:
      type: object
      description: Solicitud de sincronización a demanda (recurso asíncrono)
      properties:
        id:
          type: string
          description: ID de la solicitud public ID (`ment_...`).
          example: ment_4829301923847
        master_entity_id:
          type: string
          description: ID entero de la entidad sincronizada public ID (`ment_...`).
          example: ment_4829301923847
        requested_types:
          type: array
          description: >-
            Tipos de scrape pedidos. Lista vacía = todos los tipos habilitados
            para la entidad.
          items:
            type: string
            enum:
              - ISSUED_DOCS
              - RECEIVED_DOCS
              - RECEIVED_HONORARY_BILLS
              - THIRD_PARTY_HONORARY
              - EMITTED_HONORARY_BILLS
              - PURCHASE_BOOK
              - SALE_BOOK
              - BOOK_SUMMARY
          example:
            - ISSUED_DOCS
            - RECEIVED_DOCS
        status:
          type: string
          enum:
            - pending
            - processing
            - completed
            - failed
          description: >-
            Estado de la solicitud: pending (creada, en cola), processing
            (scrapes corriendo), completed (todos los tipos terminaron OK),
            failed (al menos un tipo falló).
          example: pending
        webhook_url:
          type: string
          description: >-
            URL registrada para notificar al completar. String vacío si no se
            registró webhook.
          example: https://miapp.cl/webhooks/tupana-sync
        results:
          type: object
          description: >-
            Resultado por tipo de scrape al terminar. Las claves son los
            scrape_type ejecutados y cada valor es un objeto con `success`
            (boolean) más contadores como `new_documents`, o `error` si falló.
            Objeto vacío mientras la solicitud está pending/processing.
          additionalProperties:
            type: object
          example:
            ISSUED_DOCS:
              success: true
              new_documents: 3
            RECEIVED_DOCS:
              success: true
              new_documents: 0
        completed_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            Fecha/hora en que terminó de procesarse. null mientras está
            pending/processing.
          example: '2026-07-20T14:34:12Z'
        created_at:
          type: string
          format: date-time
          description: Fecha/hora de creación de la solicitud
          example: '2026-07-20T14:30:00Z'
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: Authorization
      description: >-
        API Key para autenticación. Debe proporcionarse en el header
        Authorization con el formato: 'Api-Key YOUR-API-KEY' (incluye el prefijo
        'Api-Key ' seguido de tu API key)

````

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