AIRPort — AI Result Port
AIRPort is the landing port for AI results before they fly off into the user’s application. Third-party VLM and model vendors submit inference results here, and Presto makes them instantly available to radiologists in their reporting workflow.
Why AIRPort?
Section titled “Why AIRPort?”Radiology AI is a multi-vendor world. A single organization might use one vendor or model for chest X-ray drafts, another for fracture identification, and a third for a Computed Tomography Vision Language Model. AIRPort provides a single, standardized ingestion point so that:
- Organizations choose which vendors and models they trust
- Every result carries a usage note (e.g., “Research use only”) set by the organization
- Results appear in the radiologist’s workflow regardless of which vendor produced them
- Idempotent submission prevents duplicate results from retry logic
See Authentication for API key setup and base URL. See Errors & Rate Limits for rate limiting and error codes.
Endpoints
Section titled “Endpoints”Submit AI result
Section titled “Submit AI result”POST /api/v1/airport/ingest/Submit an AI inference result for a specific study.
Request body
Section titled “Request body”| Field | Type | Required | Description |
|---|---|---|---|
accession | string | Yes | Study’s accession number, used to link the AIResult to the active study. |
site | string | No | Optional site identifier, if accession needs to be namespaced to a site |
model_id | string | Yes | Vendor model identifier in {vendor}/{model} format (e.g., AcmeAI/chest-cxr) |
model_version | string | No | Model version string |
text | string | Yes | AI-generated findings text (max 100KB) |
metadata | object | No | Freeform JSON metadata blob (max 100KB) |
vendor_reference_id | string | No | Your own job/inference ID. Used for idempotency — resubmitting the same value returns the original result |
Example request
Section titled “Example request”curl -X POST \ https://acme.app.presto.run/api/v1/airport/ingest/ \ -H "Authorization: Bearer prst_live_a1b2c3d4e5f6..." \ -H "Content-Type: application/json" \ -d '{ "accession": "ACC-2024-12345", "model_id": "AcmeAI/chest-cxr", "text": "No acute cardiopulmonary process.", "vendor_reference_id": "acme-job-98765", "site": "Main Campus", "model_version": "2.1.0", "metadata": { "StudyInstanceUID": "1.2.840.113619.2.55.3.604688119.969.1700000000.123", "inference_ms": 1420, "confidence": 0.97 } }'Response
Section titled “Response”201 Created — new result stored:
{ "id": "0192a3b4-c5d6-7e8f-9a0b-1c2d3e4f5a6b", "accession": "ACC-2024-12345", "status": "completed", "created_at": "2024-12-15T14:30:00Z"}200 OK — idempotent hit (same vendor_reference_id already submitted):
{ "id": "0192a3b4-c5d6-7e8f-9a0b-1c2d3e4f5a6b", "accession": "ACC-2024-12345", "status": "completed", "created_at": "2024-12-15T14:30:00Z"}Error responses
Section titled “Error responses”| Status | Reason |
|---|---|
| 403 Forbidden | model_id is not authorized for this API key |
See Errors & Rate Limits for common error codes (401, 429, etc.).
Model authorization
Section titled “Model authorization”Each API key is authorized for a specific set of vendor models. If you submit a model_id that is not in the key’s approved set, the request is rejected with a 403.
Your organization administrator controls which models each key can submit results for. This ensures organizations maintain explicit control over which AI systems contribute to their radiologists’ workflows.
Idempotency
Section titled “Idempotency”If you include a vendor_reference_id in your request, AIRPort uses it for idempotency. Resubmitting the same vendor_reference_id with the same API key returns the original result with a 200 status instead of creating a duplicate.
This is useful for retry logic — if a network error occurs after submission, you can safely retry without worrying about duplicate results reaching the radiologist.
Standard metadata keys
Section titled “Standard metadata keys”The metadata field is freeform JSON, but we recommend the following keys for future visual integration in the radiologist’s workflow. Presto may display these fields in the UI when present.
| Key | Type | Description |
|---|---|---|
StudyInstanceUID | string | DICOM Study Instance UID — links the result to a specific study |
SeriesInstanceUID | string | DICOM Series Instance UID — if the AI ran on a specific series |
SOPInstanceUID | string | DICOM SOP Instance UID — if the AI produced a specific output object |
inference_ms | number | Processing time in milliseconds |
confidence | number | Overall confidence score (0.0–1.0) |
DICOM UIDs should follow the standard dotted-numeric format (e.g., 1.2.840.113619.2.55.3.604...).
These keys are not enforced — you may include any JSON-serializable data in metadata. However, using the standard keys above ensures Presto can surface the information to radiologists as we build out the display layer.
Example with standard metadata
Section titled “Example with standard metadata”{ "accession": "ACC-2024-12345", "model_id": "AcmeAI/chest-cxr", "text": "No acute cardiopulmonary process.", "metadata": { "StudyInstanceUID": "1.2.840.113619.2.55.3.604688119.969.1700000000.123", "SeriesInstanceUID": "1.2.840.113619.2.55.3.604688119.969.1700000000.456", "inference_ms": 1420, "confidence": 0.97 }}Usage notes
Section titled “Usage notes”Organizations can attach usage notes to AI results (e.g., “Research use only. Not for clinical decision making.”). These notes are composed from two sources:
- Vendor model note — set by platform administrators for the model globally
- Key note — set by the organization administrator for the specific API key
Both are displayed to the radiologist alongside the AI findings.