curl --request POST \
--url https://api.nomenclator.com.ar/v1/classifications \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--data '
{
"description": "Bomba centrífuga monobloc de 3 HP, cuerpo de hierro fundido, para agua limpia, uso industrial.",
"file_url": null,
"external_reference": "PED-000123"
}
'const options = {
method: 'POST',
headers: {
'Idempotency-Key': '<idempotency-key>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
description: 'Bomba centrífuga monobloc de 3 HP, cuerpo de hierro fundido, para agua limpia, uso industrial.',
file_url: null,
external_reference: 'PED-000123'
})
};
fetch('https://api.nomenclator.com.ar/v1/classifications', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.nomenclator.com.ar/v1/classifications"
payload = {
"description": "Bomba centrífuga monobloc de 3 HP, cuerpo de hierro fundido, para agua limpia, uso industrial.",
"file_url": None,
"external_reference": "PED-000123"
}
headers = {
"Idempotency-Key": "<idempotency-key>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"id": "<string>",
"status": "in_progress",
"stage": "answers_intake",
"app_url": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 499,
"detail": "<string>",
"instance": "<string>",
"request_id": "<string>",
"errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}{
"type": "<string>",
"title": "<string>",
"status": 499,
"detail": "<string>",
"instance": "<string>",
"request_id": "<string>",
"errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}{
"type": "<string>",
"title": "<string>",
"status": 499,
"detail": "<string>",
"instance": "<string>",
"request_id": "<string>",
"errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}{
"type": "<string>",
"title": "<string>",
"status": 499,
"detail": "<string>",
"instance": "<string>",
"request_id": "<string>",
"errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}{
"type": "<string>",
"title": "<string>",
"status": 499,
"detail": "<string>",
"instance": "<string>",
"request_id": "<string>",
"errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}{
"type": "<string>",
"title": "<string>",
"status": 499,
"detail": "<string>",
"instance": "<string>",
"request_id": "<string>",
"errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}{
"type": "<string>",
"title": "<string>",
"status": 499,
"detail": "<string>",
"instance": "<string>",
"request_id": "<string>",
"errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}{
"type": "<string>",
"title": "<string>",
"status": 499,
"detail": "<string>",
"instance": "<string>",
"request_id": "<string>",
"errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}{
"type": "<string>",
"title": "<string>",
"status": 499,
"detail": "<string>",
"instance": "<string>",
"request_id": "<string>",
"errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}{
"type": "<string>",
"title": "<string>",
"status": 499,
"detail": "<string>",
"instance": "<string>",
"request_id": "<string>",
"errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}Crear una clasificación
Encola la clasificación y responde 202 enseguida, sin dictamen. Consultá GET /classifications/{id} hasta que status sea resolved, pending_data o failed.
Mandá description (10 a 5.000 caracteres), una ficha técnica en PDF de hasta 20 MB (file_url, obtenida de POST /uploads) o las dos cosas. Cuesta 1 crédito del saldo de la organización, el mismo que usa la app: se aparta al crear y se descuenta al llegar a resolved; si falla, se devuelve. Sin créditos responde 402 con purchase_url, donde se compran créditos adicionales al precio por crédito del plan. Requiere una key con alcance classify.
curl --request POST \
--url https://api.nomenclator.com.ar/v1/classifications \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Idempotency-Key: <idempotency-key>' \
--data '
{
"description": "Bomba centrífuga monobloc de 3 HP, cuerpo de hierro fundido, para agua limpia, uso industrial.",
"file_url": null,
"external_reference": "PED-000123"
}
'const options = {
method: 'POST',
headers: {
'Idempotency-Key': '<idempotency-key>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
description: 'Bomba centrífuga monobloc de 3 HP, cuerpo de hierro fundido, para agua limpia, uso industrial.',
file_url: null,
external_reference: 'PED-000123'
})
};
fetch('https://api.nomenclator.com.ar/v1/classifications', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.nomenclator.com.ar/v1/classifications"
payload = {
"description": "Bomba centrífuga monobloc de 3 HP, cuerpo de hierro fundido, para agua limpia, uso industrial.",
"file_url": None,
"external_reference": "PED-000123"
}
headers = {
"Idempotency-Key": "<idempotency-key>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"id": "<string>",
"status": "in_progress",
"stage": "answers_intake",
"app_url": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 499,
"detail": "<string>",
"instance": "<string>",
"request_id": "<string>",
"errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}{
"type": "<string>",
"title": "<string>",
"status": 499,
"detail": "<string>",
"instance": "<string>",
"request_id": "<string>",
"errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}{
"type": "<string>",
"title": "<string>",
"status": 499,
"detail": "<string>",
"instance": "<string>",
"request_id": "<string>",
"errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}{
"type": "<string>",
"title": "<string>",
"status": 499,
"detail": "<string>",
"instance": "<string>",
"request_id": "<string>",
"errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}{
"type": "<string>",
"title": "<string>",
"status": 499,
"detail": "<string>",
"instance": "<string>",
"request_id": "<string>",
"errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}{
"type": "<string>",
"title": "<string>",
"status": 499,
"detail": "<string>",
"instance": "<string>",
"request_id": "<string>",
"errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}{
"type": "<string>",
"title": "<string>",
"status": 499,
"detail": "<string>",
"instance": "<string>",
"request_id": "<string>",
"errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}{
"type": "<string>",
"title": "<string>",
"status": 499,
"detail": "<string>",
"instance": "<string>",
"request_id": "<string>",
"errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}{
"type": "<string>",
"title": "<string>",
"status": 499,
"detail": "<string>",
"instance": "<string>",
"request_id": "<string>",
"errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}{
"type": "<string>",
"title": "<string>",
"status": 499,
"detail": "<string>",
"instance": "<string>",
"request_id": "<string>",
"errors": [
{
"field": "<string>",
"code": "<string>",
"message": "<string>"
}
]
}null. Tiene que venir al menos description o file_url. Un campo que no está en la lista devuelve 422.
description: entre 10 y 5.000 caracteres. Mirá cómo describir el producto.file_url: el que devuelvePOST /uploads.external_reference: tu referencia, hasta 100 caracteres. La app la muestra como «Ref.» en el dictamen.
202 no trae dictamen. Seguí el ciclo de una clasificación.Autorizaciones
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).
Scopes
Encabezados
Clave que elegís vos, de 16 a 128 caracteres entre letras sin acentos, números, - y _. Repetir el pedido con la misma clave devuelve la misma clasificación y no descuenta otro crédito.
^[A-Za-z0-9_-]{16,128}$"erp-pedido-000123-a"
Cuerpo
Descripción del producto, de 10 a 5.000 caracteres. null si solo mandás ficha.
10 - 5000El file_url de POST /uploads. null si no mandás ficha.
Tu referencia, hasta 100 caracteres. null si no la usás.
100Opcional y obsoleto desde el 24 de septiembre de 2026: se acepta y se ignora. Si lo mandás, import o export.
import, export Opcional y obsoleto desde el 24 de septiembre de 2026: se acepta y se ignora. Si lo mandás, va en ISO 3166-1 alfa-2.
^[A-Z]{2}$Respuesta
Aceptada. Todavía no hay dictamen.
Id público de la clasificación.
^cls_[23456789ABCDEFGHJKMNPQRSTVWXYZ]{12}$Siempre in_progress.
"in_progress"Etapa con la que arranca.
answers_intake, extraction, retrieval, verdict, validation, sim Link a la clasificación en la app.