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

# API: Inicio rápido

> Empieza con la API Codify de SofIA en minutos con un ejemplo de petición simple

## Requisitos previos

<Columns cols={3}>
  <Card title="Token de API" icon="check">
    Se lo proporcionamos al contratar el servicio
  </Card>

  <Card title="Endpoint" icon="check">
    URL de producción o desarrollo
  </Card>

  <Card title="Herramienta para hacer peticiones HTTP" icon="check">
    Postman, curl, o su lenguaje favorito
  </Card>
</Columns>

***

## Su primera llamada a la API

### Ejemplo básico con curl

```bash theme={null}
curl -X POST "https://{tu-endpoint}/v1/codify" \
  -H "Authorization: Bearer TU_TOKEN_AQUI" \
  -H "Content-Type: application/json" \
  -H "x-doctor: dr_123" \
  -H "x-patient: pt_456" \
  -d '{
    "medical_note": "Paciente presenta Diabetes Mellitus tipo 2. Medicación actual: Metformina 500mg cada 12h, Glipizida 5mg al día. Niveles de glucosa estables. Sin complicaciones. Buena adherencia al tratamiento. HbA1c: 6.8%.",
    "model": "balanced"
  }'
```

### Respuesta esperada

```json theme={null}
{
  "final_code_assessments": [
    {
      "code": "E11.9",
      "description": "Diabetes mellitus tipo 2 sin complicaciones",
      "justification": "La nota documenta Diabetes tipo 2 sin mención de descompensación ni complicaciones; corresponde a E11.9 (DM2 sin complicaciones).",
      "confidence_percent": 92.4
    },
    {
      "code": "Z79.84",
      "description": "Uso prolongado (actual) de medicamentos hipoglucemiantes orales",
      "justification": "El paciente usa metformina y glipizida en forma crónica; ambos son antidiabéticos orales.",
      "confidence_percent": 96.1
    }
  ],
  "discarded_code_assessments": [],
  "run_id": "1ef8e0d4-7890-6b3c-8f90-abcdef123456"
}
```

¡Felicidades! Ha codificado su primera nota clínica con codificación médica ICD-10 impulsada por IA.

***

## Desglose de la petición

### Headers obligatorios

```http theme={null}
Authorization: Bearer TU_TOKEN_AQUI
Content-Type: application/json
```

### Headers opcionales

Visite [Autenticación](/sofia/es/api/auth#headers-opcionales-recomendados) para la configuración de headers de trazabilidad.

### Body de la petición

Debe proporcionar **o bien** `medical_note` O `pdf_file` (mutuamente excluyentes):

| Campo          | Obligatorio | Descripción                                                                                    |
| -------------- | ----------- | ---------------------------------------------------------------------------------------------- |
| `medical_note` | Sí\*        | El texto clínico a codificar (máx 50KB)                                                        |
| `pdf_file`     | Sí\*        | Objeto de archivo PDF con datos codificados en base64 (máx 5MB decodificado)                   |
| `model`        | No          | Nivel de calidad del modelo de IA: `"fast"`, `"balanced"` (predeterminado), o `"high-quality"` |

\*Se requiere uno de `medical_note` o `pdf_file`, pero no ambos.

***

## Ejemplos en diferentes lenguajes

<CodeGroup>
  ```python Python theme={null}
  import requests

  url = "https://{tu-endpoint}/v1/codify"
  headers = {
      "Authorization": "Bearer TU_TOKEN_AQUI",
      "Content-Type": "application/json",
      "x-doctor": "dr_123",
      "x-patient": "pt_456"
  }

  payload = {
      "medical_note": "Paciente presenta Diabetes Mellitus tipo 2. Medicación actual: Metformina 500mg cada 12h, Glipizida 5mg al día. Niveles de glucosa estables. Sin complicaciones. Buena adherencia al tratamiento. HbA1c: 6.8%.",
      "model": "balanced"
  }

  response = requests.post(url, json=payload, headers=headers)
  result = response.json()

  print(f"Códigos finales: {len(result['final_code_assessments'])}")
  for assessment in result['final_code_assessments']:
      print(f"  {assessment['code']}: {assessment['description']} ({assessment['confidence_percent']}%)")
  print(f"Run ID: {result['run_id']}")
  ```

  ```javascript JavaScript (Node.js) theme={null}
  const axios = require('axios');

  const url = 'https://{tu-endpoint}/v1/codify';
  const headers = {
    'Authorization': 'Bearer TU_TOKEN_AQUI',
    'Content-Type': 'application/json',
    'x-doctor': 'dr_123',
    'x-patient': 'pt_456'
  };

  const payload = {
    medical_note: 'Paciente presenta Diabetes Mellitus tipo 2. Medicación actual: Metformina 500mg cada 12h, Glipizida 5mg al día. Niveles de glucosa estables. Sin complicaciones. Buena adherencia al tratamiento. HbA1c: 6.8%.',
    model: 'balanced'
  };

  axios.post(url, payload, { headers })
    .then(response => {
      console.log('Códigos finales:', response.data.final_code_assessments.length);
      response.data.final_code_assessments.forEach(assessment => {
        console.log(`  ${assessment.code}: ${assessment.description} (${assessment.confidence_percent}%)`);
      });
      console.log('Run ID:', response.data.run_id);
    })
    .catch(error => {
      console.error('Error:', error.response?.data || error.message);
    });
  ```
</CodeGroup>

***

## Entornos disponibles

Visite [Configuración de entornos](/sofia/es/api/auth#entornos-disponibles) para URLs y características detalladas.

***

## Próximos pasos

<Columns cols={2}>
  <Card title="1. Ver estructura completa" icon="clipboard" href="/sofia/es/api/request-response">
    Todos los campos disponibles
  </Card>

  <Card title="2. Ver formato de archivos PDF" icon="file" href="/sofia/es/api/request-response">
    Cómo enviar archivos PDF para codificación
  </Card>

  <Card title="3. Ver ejemplos avanzados" icon="lightbulb" href="/sofia/es/api/examples">
    Casos de uso reales (CMBD, notas estructuras, etc.)
  </Card>

  <Card title="4. Manejo de errores" icon="gear" href="/sofia/es/api/operations">
    Qué hacer cuando algo falla
  </Card>
</Columns>
