API to integrate the viewer with your system
Send a DICOM file from your backend and get the study's full technical sheet back as JSON: patient, equipment, technique, detector and the data needed to draw the image. Built for electronic health records, PACS, or any system that already receives radiographs and wants to show their metadata without building its own DICOM reader.
Getting started
- Write to us (the email is at the bottom of this page) or ask your Network BLU contact for a key. Keys are issued by hand for now: the API plan is not self-serve yet.
- Keep the key in your backend, never in client-side JavaScript on a public page: anyone who sees it could run queries at your expense.
- Send your files with a request like the one below.
Authentication
Every call carries the key in the X-Api-Key header. There is no session, no cookies, no token that expires: the key is valid until we revoke it (at your request, or if it leaks).
Endpoint
A single call, with the DICOM file as multipart/form-data:
POST /api/v1.php
curl -X POST https://images.emergencias.lat/api/v1.php \
-H "X-Api-Key: emg_live_TU_LLAVE" \
-F "file=@radiografia.dcm" \
-F "formato=ficha"
Parameters
- file (file, required)
- The DICOM file. Limit: same as the site (64 MB by default).
- formato (text, optional (defaults to "ficha"))
- "ficha" returns the JSON below. "dicom" returns the same file already validated (Content-Type: application/dicom), useful to confirm it is a supported study before you forward or store it yourself.
Response (formato=ficha)
Example with made-up values (no real patient data leaves this page):
{
"request_id": "req_3f9a1c2b7e4d",
"llave": "Nombre del cliente",
"quota": { "tier": "api", "limit": null, "used": 12, "remaining": null, "counted": true },
"ficha": {
"version": 1,
"paciente": { "nombre_completo": "Doe John", "id": "0001", "sexo": "M", "nacimiento": "1990-04-12", "edad": "34A" },
"estudio": { "sitio": "Clínica Ejemplo", "fecha": "2024-06-01", "hora": "14:32:00", "modalidad": "DX",
"parte_cuerpo": "TORAX", "vista": "PA", "descripcion": "Radiografía de tórax", "accession": "ACC0001" },
"equipo": { "fabricante": "Ejemplo Medical", "modelo": "Modelo X100", "estacion": "SALA1" },
"detector": { "fabricante": "Ejemplo Medical", "pixel_mm": 0.14, "ultima_calibracion": "2024-01-15" },
"tecnica": { "kvp": 90, "mas": 3.2, "sid_mm": 1100 },
"imagen": { "filas": 2048, "columnas": 2048, "bits_almacenados": 12, "fotometria": "MONOCHROME2", "comprimido": false }
},
"advertencias": [],
"imagen": {
"renderable": true, "pixel_offset": 3421, "pixel_length": 8388608,
"rows": 2048, "columns": 2048, "window": { "center": 2048, "width": 4096 },
"pixel_spacing": [0.14, 0.14]
}
}
What the technical sheet includes
- paciente (patient)
- Name, ID, sex, birth date and age computed at the time of the study.
- estudio (study)
- Site, date and time, modality (DX, CR), protocol, body part, view, description, accession number.
- equipo (equipment)
- Manufacturer, model, station and software version of the machine that took the image.
- detector
- Manufacturer, model, pixel size in mm and the last known calibration date.
- tecnica (technique)
- kVp, mA, ms, mAs, grid, filter, focal spot size and source-to-detector distance (SID).
- personal (staff)
- Operator, who read the study, referring and requesting physician, when the file carries them.
- imagen (image)
- Rows, columns, bits, photometric interpretation, whether it is compressed, the window (center/width) suggested by the file, and whether it declares text burned into the pixels.
What about the actual pixels?
The response includes imagen.pixel_offset and imagen.pixel_length: the exact position of the pixel data inside the SAME file you already have. We do not need to send the image separately. If you want the full validated file, request formato=dicom.
Coming soon
A PNG or JPEG already rendered server-side (with windowing applied). Today your system can draw it from the data above using a client-side DICOM library (for example Cornerstone3D), the same way this site does.
Errors
| 401 | invalid_api_key | The header is missing, the key does not exist, or it was revoked. |
| 422 | validation_failed | The file is missing or "formato" is not one of the valid values. |
| 422 | invalid_dicom | The file could not be read as DICOM. |
| 422 | unsupported_content / unsupported_modality | The study does not carry a single-image pixel data, or its modality is not supported. |
| 413 | payload_too_large | The file exceeds the site's limit. |
| 500 | server_error | Our fault; write to us if it keeps happening. |
Quota
Every response includes "quota" with today's usage. The API plan has no daily cap (limit: null): the same study (same Study UID) is only counted once a day even if you query it several times.
Privacy
The file is processed in memory/temp storage and discarded once we respond: we do not keep it, same as queries made from the browser. See the no-storage statement.
Write to us to request a key: desarrollo@gruponetblu.com
Version 1, September 27, 2026.
