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

# Obtener una clasificación

> El estado y, cuando está resuelta, el dictamen completo. Con `in_progress` trae la etapa en `stage`; con `pending_data`, las preguntas en `questions` y, si la hay, una propuesta provisional en `candidates`; con `failed`, el motivo en `failure_reason`.

Qué mirar según `status`:

| `status`       | Campos que importan                                                                             |
| -------------- | ----------------------------------------------------------------------------------------------- |
| `in_progress`  | `stage`                                                                                         |
| `pending_data` | `questions`; y `candidates` con `candidates_are_provisional: true` si hay propuesta provisional |
| `resolved`     | `candidates`, `chosen_ncm`, `chosen_sim_code`, `tariffs`, `pdf_url`                             |
| `failed`       | `failure_reason`                                                                                |

En cada opción de `candidates`, `confidence` va de 0 a 100 y `confidence_band` la resume en `high`, `medium` o `low`. `sim.status` dice si la apertura SIM está verificada: mirá [aperturas SIM](/ayuda/clasificar/aperturas-sim).


## OpenAPI

````yaml GET /classifications/{id}
openapi: 3.1.0
info:
  title: Nomenclator API
  version: 1.0.0
  termsOfService: https://nomenclator.com.ar/terminos
  contact:
    name: Nomenclator
    email: hola@nomenclator.com.ar
  summary: Clasificación arancelaria NCM de 8 dígitos para el MERCOSUR.
  description: >-
    Clasificá productos en NCM de 8 dígitos y consultá dictámenes desde tus
    sistemas, con las mismas reglas que la app. Cada clasificación queda en el
    historial de tu organización.
servers:
  - url: https://api.nomenclator.com.ar/v1
security:
  - apiKey: []
tags:
  - name: classifications
    description: Crear, consultar y listar clasificaciones.
  - name: reference
    description: Aranceles, aperturas SIM y catálogo de países.
  - name: account
    description: Saldo del plan y medidor de la API.
paths:
  /classifications/{id}:
    get:
      tags:
        - classifications
      summary: Obtener una clasificación
      description: >-
        El estado y, cuando está resuelta, el dictamen completo. Con
        `in_progress` trae la etapa en `stage`; con `pending_data`, las
        preguntas en `questions` y, si la hay, una propuesta provisional en
        `candidates`; con `failed`, el motivo en `failure_reason`.
      operationId: getClassification
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            pattern: ^cls_[23456789ABCDEFGHJKMNPQRSTVWXYZ]{12}$
            title: Classification Id
          description: Id público de la clasificación, el que devolvió el `202` al crearla.
          example: cls_7K4M2P9QX3RT
      responses:
        '200':
          description: La clasificación.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Classification'
        '401':
          $ref: '#/components/responses/Problem'
        '404':
          $ref: '#/components/responses/Problem'
        '429':
          $ref: '#/components/responses/RateLimited'
        '502':
          $ref: '#/components/responses/Problem'
        default:
          $ref: '#/components/responses/Problem'
      security:
        - apiKey:
            - read
components:
  schemas:
    Classification:
      title: Classification
      type: object
      properties:
        id:
          type: string
          pattern: ^cls_[23456789ABCDEFGHJKMNPQRSTVWXYZ]{12}$
          description: Id público de la clasificación.
        status:
          type: string
          enum:
            - in_progress
            - pending_data
            - resolved
            - failed
            - abandoned
          description: >-
            Estado: `in_progress`, `pending_data`, `resolved`, `failed` o
            `abandoned`. Pueden sumarse valores.
        stage:
          anyOf:
            - type: string
              enum:
                - answers_intake
                - extraction
                - retrieval
                - verdict
                - validation
                - sim
            - type: 'null'
          description: Etapa en curso. Solo con `status` `in_progress`; si no, `null`.
        failure_reason:
          anyOf:
            - type: string
              enum:
                - unexpected_format
                - no_valid_candidates
                - timed_out
                - service_unavailable
                - unreadable_pdf
                - persist_failed
            - type: 'null'
          description: Motivo de la falla. Solo con `status` `failed`; si no, `null`.
        title:
          type:
            - string
            - 'null'
          description: >-
            Nombre del producto que identificó el clasificador. `null` si no lo
            devolvió.
        operation:
          type: string
          enum:
            - import
            - export
          description: '`import` para importación, `export` para exportación.'
        country:
          type: string
          pattern: ^[A-Z]{2}$
          description: >-
            País en ISO 3166-1 alfa-2: de origen en una importación, de destino
            en una exportación.
        description:
          type:
            - string
            - 'null'
          description: La descripción que se mandó.
        external_reference:
          type:
            - string
            - 'null'
          description: Tu referencia, si la mandaste.
        source:
          type: string
          enum:
            - app
            - api
          description: 'Por dónde se creó: `app` o `api`.'
        has_file:
          type: boolean
          description: '`true` si tiene ficha técnica adjunta.'
        file_has_text_layer:
          type:
            - boolean
            - 'null'
          description: '`false` si la ficha no tiene texto legible. `null` sin ficha.'
        cost_credits:
          type: integer
          minimum: 0
          maximum: 1
          description: >-
            Créditos del plan que consumió: 0 o 1. Las clasificaciones por API
            se facturan en el medidor.
        candidates:
          maxItems: 3
          type: array
          items:
            type: object
            properties:
              rank:
                type: integer
                minimum: 1
                maximum: 3
                description: Orden de la opción. `1` es la recomendada.
              ncm:
                type: string
                pattern: ^\d{8}$
                description: NCM de 8 dígitos, sin puntos.
              description:
                type: string
                description: Descripción oficial de la posición.
              product_name:
                type:
                  - string
                  - 'null'
                description: Nombre del producto que identificó el clasificador.
              confidence:
                type: integer
                minimum: 0
                maximum: 100
                description: Nivel de confianza, de 0 a 100.
              confidence_band:
                type: string
                enum:
                  - high
                  - medium
                  - low
                description: 'El nivel de confianza resumido: `high`, `medium` o `low`.'
              is_provisional:
                type: boolean
                description: '`true` en la propuesta provisional de una `pending_data`.'
              hierarchy:
                type: object
                properties:
                  section:
                    anyOf:
                      - type: object
                        properties:
                          code:
                            type: string
                            description: Código del nivel.
                          description:
                            type: string
                            description: Descripción oficial del nivel.
                        required:
                          - code
                          - description
                        additionalProperties: false
                      - type: 'null'
                    description: Sección.
                  chapter:
                    anyOf:
                      - type: object
                        properties:
                          code:
                            type: string
                            description: Código del nivel.
                          description:
                            type: string
                            description: Descripción oficial del nivel.
                        required:
                          - code
                          - description
                        additionalProperties: false
                      - type: 'null'
                    description: Capítulo, dos dígitos.
                  heading:
                    anyOf:
                      - type: object
                        properties:
                          code:
                            type: string
                            description: Código del nivel.
                          description:
                            type: string
                            description: Descripción oficial del nivel.
                        required:
                          - code
                          - description
                        additionalProperties: false
                      - type: 'null'
                    description: Partida, cuatro dígitos.
                  subheading:
                    anyOf:
                      - type: object
                        properties:
                          code:
                            type: string
                            description: Código del nivel.
                          description:
                            type: string
                            description: Descripción oficial del nivel.
                        required:
                          - code
                          - description
                        additionalProperties: false
                      - type: 'null'
                    description: Subpartida, seis dígitos.
                required:
                  - section
                  - chapter
                  - heading
                  - subheading
                additionalProperties: false
                description: Dónde cae el NCM en la nomenclatura.
              rationale:
                type: string
                description: La justificación técnica.
              applied_rules:
                type: array
                items:
                  type: string
                description: >-
                  Reglas Generales de Interpretación aplicadas, en orden y con
                  inciso cuando corresponde: `3 b)`.
              cited_notes:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      description: Identificador de la nota.
                    text:
                      type: string
                      description: Texto de la nota.
                  required:
                    - id
                    - text
                  additionalProperties: false
                description: Notas legales de sección o capítulo citadas.
              discarded_alternatives:
                maxItems: 5
                type: array
                items:
                  type: object
                  properties:
                    ncm:
                      type: string
                      pattern: ^\d{8}$
                      description: NCM de 8 dígitos, sin puntos.
                    description:
                      type: string
                      description: Descripción oficial de la posición.
                    reason:
                      type: string
                      description: Por qué se descartó.
                  required:
                    - ncm
                    - description
                    - reason
                  additionalProperties: false
                description: Posiciones evaluadas y descartadas.
              missing_data:
                maxItems: 5
                type: array
                items:
                  type: string
                description: Datos que afinarían el dictamen.
              sim:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                      - verifying
                      - none
                      - auto_selected
                      - pending_choice
                      - chosen
                    description: >-
                      `verifying`, `none`, `auto_selected` (había una sola),
                      `pending_choice` (hay que elegir) o `chosen`.
                  code:
                    anyOf:
                      - type: string
                        pattern: ^\d{10}$
                      - type: 'null'
                    description: >-
                      Apertura SIM de 10 dígitos. Solo con `auto_selected` o
                      `chosen`.
                  options:
                    type: array
                    items:
                      type: object
                      properties:
                        code:
                          type: string
                          pattern: ^\d{10}$
                          description: Apertura SIM de 10 dígitos.
                        description:
                          type: string
                          description: Descripción de la apertura.
                      required:
                        - code
                        - description
                      additionalProperties: false
                    description: Aperturas confirmadas. Vacío con `none` o `verifying`.
                  verified_at:
                    anyOf:
                      - type: string
                        format: date-time
                      - type: 'null'
                    description: >-
                      Cuándo confirmó el registro oficial las aperturas. `null`
                      mientras `status` es `verifying`.
                required:
                  - status
                  - code
                  - options
                  - verified_at
                additionalProperties: false
                description: Aperturas SIM de esta opción.
            required:
              - rank
              - ncm
              - description
              - product_name
              - confidence
              - confidence_band
              - is_provisional
              - hierarchy
              - rationale
              - applied_rules
              - cited_notes
              - discarded_alternatives
              - missing_data
              - sim
            additionalProperties: false
          description: >-
            Las opciones de NCM, ordenadas. Vacío hasta que haya dictamen o
            propuesta provisional.
        candidates_are_provisional:
          type: boolean
          description: '`true` si `candidates` es una propuesta provisional.'
        chosen_ncm:
          anyOf:
            - type: string
              pattern: ^\d{8}$
            - type: 'null'
          description: NCM de la opción elegida.
        chosen_sim_code:
          anyOf:
            - type: string
              pattern: ^\d{10}$
            - type: 'null'
          description: Apertura SIM de la opción elegida.
        questions:
          maxItems: 5
          type: array
          items:
            type: object
            properties:
              id:
                type: string
                description: Id de la pregunta. Va como `question_id` al responder.
              text:
                type: string
                description: La pregunta.
              options:
                type: array
                items:
                  type: string
                description: Respuestas sugeridas. Vacío si la respuesta es libre.
            required:
              - id
              - text
              - options
            additionalProperties: false
          description: Preguntas del clasificador. Solo con `status` `pending_data`.
        answers:
          maxItems: 5
          type: array
          items:
            type: object
            properties:
              question_id:
                type: string
                description: Id de la pregunta.
              question_text:
                type: string
                description: La pregunta.
              answer:
                type: string
                description: La respuesta.
            required:
              - question_id
              - question_text
              - answer
            additionalProperties: false
          description: Las respuestas que se dieron a las preguntas.
        tariffs:
          anyOf:
            - anyOf:
                - type: object
                  properties:
                    found:
                      type: boolean
                      const: true
                      description: >-
                        `false` si no hay datos arancelarios para ese NCM y
                        país.
                    operation:
                      type: string
                      const: import
                      description: La operación consultada.
                    import_duty_intrazone:
                      type: number
                      description: >-
                        Derecho de importación intrazona (MERCOSUR), en
                        porcentaje.
                    import_duty_extrazone:
                      type: number
                      description: Derecho de importación extrazona, en porcentaje.
                    import_duty_applicable:
                      type: number
                      description: >-
                        El derecho de importación que aplica al país consultado,
                        en porcentaje.
                    duty_kind:
                      type: string
                      enum:
                        - intrazone
                        - extrazone
                      description: >-
                        Cuál de los dos derechos aplica: `intrazone` o
                        `extrazone`.
                    statistical_rate:
                      type: number
                      description: Tasa de estadística, en porcentaje.
                    aec:
                      type:
                        - number
                        - 'null'
                      description: >-
                        Arancel externo común, en porcentaje. `null` si no
                        difiere del derecho de importación.
                    source:
                      type: string
                      description: Fuente oficial del dato.
                    queried_at:
                      type: string
                      format: date-time
                      description: Cuándo se consultó la fuente.
                  required:
                    - found
                    - operation
                    - import_duty_intrazone
                    - import_duty_extrazone
                    - import_duty_applicable
                    - duty_kind
                    - statistical_rate
                    - aec
                    - source
                    - queried_at
                  additionalProperties: false
                - type: object
                  properties:
                    found:
                      type: boolean
                      const: true
                      description: >-
                        `false` si no hay datos arancelarios para ese NCM y
                        país.
                    operation:
                      type: string
                      const: export
                      description: La operación consultada.
                    export_duty:
                      type:
                        - number
                        - 'null'
                      description: Derechos de exportación, en porcentaje.
                    export_refund:
                      type:
                        - number
                        - 'null'
                      description: Reintegro, en porcentaje.
                    source:
                      type: string
                      description: Fuente oficial del dato.
                    queried_at:
                      type: string
                      format: date-time
                      description: Cuándo se consultó la fuente.
                  required:
                    - found
                    - operation
                    - export_duty
                    - export_refund
                    - source
                    - queried_at
                  additionalProperties: false
                - type: object
                  properties:
                    found:
                      type: boolean
                      const: false
                      description: >-
                        `false` si no hay datos arancelarios para ese NCM y
                        país.
                    reason:
                      type: string
                      enum:
                        - no_data
                        - not_available
                      description: 'Por qué no hay datos: `no_data` o `not_available`.'
                  required:
                    - found
                    - reason
                  additionalProperties: false
            - type: 'null'
          description: Aranceles de la opción elegida. `null` si todavía no se consultaron.
        reviewed:
          anyOf:
            - type: object
              properties:
                by_user_id:
                  anyOf:
                    - type: string
                      pattern: ^usr_[23456789ABCDEFGHJKMNPQRSTVWXYZ]{12}$
                    - type: 'null'
                  description: Id de la persona.
                by_name:
                  type: string
                  description: Nombre de la persona.
                at:
                  type: string
                  format: date-time
                  description: Cuándo se marcó.
                note_internal:
                  type:
                    - string
                    - 'null'
                  description: Nota interna de la revisión.
              required:
                - by_user_id
                - by_name
                - at
                - note_internal
              additionalProperties: false
            - type: 'null'
          description: >-
            Quién marcó el dictamen como revisado y cuándo. `null` si no está
            revisado.
        feedback:
          anyOf:
            - type: object
              properties:
                ncm:
                  type: string
                  pattern: ^\d{8}$
                  description: NCM de 8 dígitos, sin puntos.
                matches_chosen:
                  type: boolean
                  description: '`true` si coincide con la opción elegida.'
                at:
                  type: string
                  format: date-time
                  description: Cuándo se cargó.
              required:
                - ncm
                - matches_chosen
                - at
              additionalProperties: false
            - type: 'null'
          description: El NCM que se declaró finalmente, si alguien lo cargó.
        refined_from:
          anyOf:
            - type: string
              pattern: ^cls_[23456789ABCDEFGHJKMNPQRSTVWXYZ]{12}$
            - type: 'null'
          description: Si es una versión refinada, el id de la original.
        refined_to:
          anyOf:
            - type: string
              pattern: ^cls_[23456789ABCDEFGHJKMNPQRSTVWXYZ]{12}$
            - type: 'null'
          description: Si tiene una versión refinada, su id.
        version_id:
          anyOf:
            - type: string
              pattern: ^clv_[23456789ABCDEFGHJKMNPQRSTVWXYZ]{12}$
            - type: 'null'
          description: Id de la versión del refinamiento.
        retry_of:
          anyOf:
            - type: string
              pattern: ^cls_[23456789ABCDEFGHJKMNPQRSTVWXYZ]{12}$
            - type: 'null'
          description: Si es un reintento, el id de la clasificación que falló.
        pdf_url:
          anyOf:
            - type: string
              format: uri
            - type: 'null'
          description: URL del dictamen. Solo con `status` `resolved`.
        author:
          oneOf:
            - type: object
              properties:
                type:
                  type: string
                  const: user
                  description: '`user` o `api`.'
                user_id:
                  anyOf:
                    - type: string
                      pattern: ^usr_[23456789ABCDEFGHJKMNPQRSTVWXYZ]{12}$
                    - type: 'null'
                  description: Id de la persona. `null` si la cuenta se eliminó.
                name:
                  type: string
                  description: Nombre de la persona o de la key.
              required:
                - type
                - user_id
                - name
              additionalProperties: false
            - type: object
              properties:
                type:
                  type: string
                  const: api
                  description: '`user` o `api`.'
                name:
                  type: string
                  description: Nombre de la persona o de la key.
              required:
                - type
                - name
              additionalProperties: false
          description: 'Quién la creó: una persona o una key de la API.'
        created_at:
          type: string
          format: date-time
          description: Cuándo se creó.
        resolved_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          description: Cuándo se resolvió.
        deleted_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          description: 'Siempre `null`: las eliminadas no se devuelven.'
      required:
        - id
        - status
        - stage
        - failure_reason
        - title
        - operation
        - country
        - description
        - external_reference
        - source
        - has_file
        - file_has_text_layer
        - cost_credits
        - candidates
        - candidates_are_provisional
        - chosen_ncm
        - chosen_sim_code
        - questions
        - answers
        - tariffs
        - reviewed
        - feedback
        - refined_from
        - refined_to
        - version_id
        - retry_of
        - pdf_url
        - author
        - created_at
        - resolved_at
        - deleted_at
      additionalProperties: false
    Problem:
      title: Problem
      type: object
      properties:
        type:
          type: string
          format: uri
          description: URI del tipo de error. Decidí por este campo.
        title:
          type: string
          description: Resumen fijo por tipo.
        status:
          type: integer
          minimum: 400
          maximum: 599
          description: Código HTTP.
        detail:
          type: string
          description: Qué pasó en este pedido. Se puede mostrar a una persona.
        instance:
          type: string
          description: Ruta del pedido.
        request_id:
          type: string
          pattern: ^req_[23456789ABCDEFGHJKMNPQRSTVWXYZ]{12}$
          description: Igual al header `X-Request-Id`.
        errors:
          type: array
          items:
            type: object
            properties:
              field:
                type: string
                description: Ruta del campo, como `items[2].ncm`.
              code:
                type: string
                description: Código de la falla.
              message:
                type: string
                description: Explicación que se puede mostrar.
            required:
              - field
              - code
              - message
            additionalProperties: false
          description: Campos inválidos. Solo en errores de validación.
      required:
        - type
        - title
        - status
        - detail
        - instance
        - request_id
      additionalProperties: {}
  responses:
    Problem:
      description: Error, en formato `application/problem+json` (RFC 9457).
      headers:
        X-Request-Id:
          $ref: '#/components/headers/XRequestId'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
    RateLimited:
      description: Superaste un límite de pedidos (`rate-limited`).
      headers:
        Retry-After:
          $ref: '#/components/headers/RetryAfter'
        RateLimit-Limit:
          $ref: '#/components/headers/RateLimitLimit'
        RateLimit-Remaining:
          $ref: '#/components/headers/RateLimitRemaining'
        RateLimit-Reset:
          $ref: '#/components/headers/RateLimitReset'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
  headers:
    XRequestId:
      description: Id del pedido. Citalo si nos escribís por soporte.
      schema:
        type: string
        example: req_3NQ8VZ2K6MHT
    RetryAfter:
      description: Segundos que conviene esperar antes de reintentar.
      schema:
        type: integer
    RateLimitLimit:
      description: Pedidos permitidos en la ventana.
      schema:
        type: integer
    RateLimitRemaining:
      description: Pedidos que te quedan en la ventana.
      schema:
        type: integer
    RateLimitReset:
      description: Segundos hasta que la ventana se reinicia.
      schema:
        type: integer
  securitySchemes:
    apiKey:
      type: http
      scheme: bearer
      bearerFormat: nmc_live_... / nmc_test_...
      description: >-
        API key de tu organización, creada en la app en **Ajustes → API**. Se
        manda como `Authorization: Bearer nmc_live_…`, nunca en la query string.
        Alcances: `read` (solo leer) y `classify` (clasificar y leer).

````