Connect a DICOM sender
When a hospital wants to send imaging data to your platform, their equipment — CT scanner, PACS, workstation — speaks DICOM. Your system speaks HTTPS. Dicomly bridges the two: you manage the connection through the Dicomly console; the hospital configures their equipment with the details you provide.
For an overview of what changes when routing imaging beyond the hospital firewall, read receiving DICOM from a hospital over the internet.
This guide walks through creating an endpoint, saving the one-time certificate bundle, and sharing the connection details with the hospital’s IT team.
Prerequisites
- A Dicomly account — sign in to the console
- An HTTPS URL where your application will receive deliveries
1. Create the endpoint in the console
Create an endpoint with a name, your destination URL, and at least one certificate. One certificate represents one sender identity — typically one device or one site. No API key is needed for this — the console authenticates with your session.
2. Save the certificate bundle
The endpoint page shows certificate_pem and private_key_pem exactly once. Dicomly does not store the private key after this point — if you lose it you must issue a new certificate.
Download the bundle and store it in your secrets manager immediately.
3. Send yourself a test image
Before handing anything to the hospital, prove the endpoint works. The endpoint page shows a storescu command (and a Docker fallback) pre-filled with your connection details, plus a synthetic sample DICOM file — no real patient data involved. See the quickstart for the exact command shape.
4. Hand the connection details to the hospital
The hospital’s IT or biomedical engineering team configures the DICOM source device. Share these values with them:
| Device setting | API response field | Example value |
|---|---|---|
| Host / IP | dicom_host |
relay.dicomly.io |
| Port | dicom_port |
11112 |
| Called AE title | peer_ae_title |
DICOMLY |
| Client certificate | certificate_pem |
PEM block |
| Client private key | private_key_pem |
PEM block |
Most DICOM devices accept a PEM certificate + key file or a PKCS#12 bundle. Once the device is configured and pointed at Dicomly, it opens an mTLS connection and starts sending. Deliveries immediately start arriving at your destination URL.
Want your own hostname instead of relay.dicomly.io? Every account includes one custom domain, free — point dicom.yourdomain.com at Dicomly with a CNAME and verify it in the console, then hand that address to the hospital instead.
Add more senders later
Each sender gets its own certificate. Add one from the endpoint page in the console without recreating the endpoint. Revoke a single sender by deleting its certificate — other senders on the same endpoint keep working.
Automating it? Use the API instead
If you provision endpoints programmatically — from your own onboarding flow, a CI job, or an internal tool — generate an API key from the console’s API keys page and call the API directly:
const DICOMLY_API = 'https://api.dicomly.io/v1';
const apiKey = process.env.DICOMLY_API_KEY!;
const res = await fetch(`${DICOMLY_API}/endpoints`, {
method: 'POST',
headers: {
Authorization: `******
'Content-Type': 'application/json',
},
body: JSON.stringify({
name: 'MGH Radiology',
destination_url: 'https://your-app.io/dicom',
certificates: [{ label: 'CT scanner' }],
}),
});
const endpoint = await res.json();
const { certificate_pem, private_key_pem } = endpoint.certificates[0];
// Store in your secrets manager immediately — never log these values
await secretsManager.put(`dicomly/cert/${endpoint.id}`, {
certificate_pem,
private_key_pem,
});
Add a certificate to an existing endpoint the same way:
const res = await fetch(
`${DICOMLY_API}/endpoints/${endpoint.id}/certificates`,
{
method: 'POST',
headers: {
Authorization: `******
'Content-Type': 'application/json',
},
body: JSON.stringify({ label: 'PACS server' }),
},
);
Next
Set up the HTTPS endpoint that receives the deliveries → Receive DICOM deliveries