Every API here is available over the APIs.io API and to AI agents over MCP.
openapi: 3.2.0
info:
description: 'This is the full documentation of the REST API of Orthanc.
This reference is automatically generated from the source code of Orthanc. A shorter cheat sheet is part of the Orthanc Book.
An earlier, manually crafted version from August 2019, is still available, but is not up-to-date anymore (source).'
title: Orthanc Instances API
version: 1.13.0
servers:
- url: https://orthanc.uclouvain.be/demo/
tags:
- name: Instances
paths:
/instances:
get:
deprecated: false
description: List the Orthanc identifiers of all the available DICOM instances
parameters:
- description: If present, retrieve detailed information about the individual resources, not only their Orthanc identifiers
in: query
name: expand
required: false
schema:
type: string
- description: If present, report the DICOM tags in full format (tags indexed by their hexadecimal format, associated with their symbolic name and their value)
in: query
name: full
required: false
schema:
type: boolean
- description: Limit the number of results
in: query
name: limit
required: false
schema:
type: number
- description: 'If present, list the DICOM Tags you want to list in the response. This argument is a semi-column separated list of DICOM Tags identifiers; e.g: ''requested-tags=0010,0010;PatientBirthDate''. The tags requested tags are returned in the ''RequestedTags'' field in the response. Note that, if you are requesting tags that are not listed in the Main Dicom Tags stored in DB, building the response might be slow since Orthanc will need to access the DICOM files. If not specified, Orthanc will return all Main Dicom Tags to keep backward compatibility with Orthanc prior to 1.11.0.'
in: query
name: requested-tags
required: false
schema:
type: string
- description: 'Defines the content of response for each returned resource. Allowed values are `MainDicomTags`, `Metadata`, `Children`, `Parent`, `Labels`, `Status`, `IsStable`, `IsProtected`, `Attachments`. If not specified, Orthanc will return `MainDicomTags`, `Metadata`, `Children`, `Parent`, `Labels`, `Status`, `IsStable`, `IsProtected`.e.g: ''response-content=MainDicomTags;Children (new in Orthanc 1.12.5 - overrides `expand`)'
in: query
name: response-content
required: false
schema:
type: string
- description: If present, report the DICOM tags in hexadecimal format
in: query
name: short
required: false
schema:
type: boolean
- description: Show only the resources since the provided index
in: query
name: since
required: false
schema:
type: number
responses:
'200':
content:
application/json:
schema:
description: JSON array containing either the Orthanc identifiers, or detailed information about the reported instances (if `expand` argument is provided)
example:
- 001a7d82-54008387-7b23ad57-8fb6202a-6d3b305b
- 001b6592-37c2fbe4-2c07c724-ce9607e2-2bd210e8
description: ''
summary: List the available instances
tags:
- Instances
operationId: getInstances
x-operation-id-source: derived
post:
deprecated: false
parameters: []
requestBody:
content:
application/dicom:
schema:
description: DICOM file to be uploaded
application/zip:
schema:
description: ZIP archive containing DICOM files (new in Orthanc 1.8.2)
responses:
'200':
content:
application/json:
schema:
description: Information about the uploaded instance, or list of information for each uploaded instance in the case of ZIP archive
example:
ID: 19816330-cb02e1cf-df3a8fe8-bf510623-ccefe9f5
ParentPatient: ef9d77db-eb3b2bef-9b31fd3e-bf42ae46-dbdb0cc3
ParentSeries: 3774320f-ccda46d8-69ee8641-9e791cbf-3ecbbcc6
ParentStudy: 66c8e41e-ac3a9029-0b85e42a-8195ee0a-92c2e62e
Path: /instances/19816330-cb02e1cf-df3a8fe8-bf510623-ccefe9f5
Status: Success
properties:
ID:
description: Orthanc identifier of the new instance
type: string
ParentPatient:
description: Orthanc identifier of the parent patient
type: string
ParentSeries:
description: Orthanc identifier of the parent series
type: string
ParentStudy:
description: Orthanc identifier of the parent study
type: string
Path:
description: Path to the new instance in the REST API
type: string
Status:
description: Can be `Success`, `AlreadyStored`, `Failure`, or `FilteredOut` (removed by some `NewInstanceFilter`)
type: string
description: ''
summary: Upload DICOM instances
tags:
- Instances
operationId: postInstances
x-operation-id-source: derived
/instances/{id}:
delete:
deprecated: false
description: Delete the DICOM instance whose Orthanc identifier is provided in the URL
parameters:
- description: Orthanc identifier of the instance of interest
in: path
name: id
required: true
schema:
type: string
responses:
'200':
description: ''
summary: Delete some instance
tags:
- Instances
operationId: deleteInstancesById
x-operation-id-source: derived
get:
deprecated: false
description: Get detailed information about the DICOM instance whose Orthanc identifier is provided in the URL
parameters:
- description: If present, report the DICOM tags in full format (tags indexed by their hexadecimal format, associated with their symbolic name and their value)
in: query
name: full
required: false
schema:
type: boolean
- description: 'If present, list the DICOM Tags you want to list in the response. This argument is a semi-column separated list of DICOM Tags identifiers; e.g: ''requested-tags=0010,0010;PatientBirthDate''. The tags requested tags are returned in the ''RequestedTags'' field in the response. Note that, if you are requesting tags that are not listed in the Main Dicom Tags stored in DB, building the response might be slow since Orthanc will need to access the DICOM files. If not specified, Orthanc will return all Main Dicom Tags to keep backward compatibility with Orthanc prior to 1.11.0.'
in: query
name: requested-tags
required: false
schema:
type: string
- description: If present, report the DICOM tags in hexadecimal format
in: query
name: short
required: false
schema:
type: boolean
- description: Orthanc identifier of the instance of interest
in: path
name: id
required: true
schema:
type: string
responses:
'200':
content:
application/json:
schema:
description: Information about the DICOM instance
example:
FileSize: 368852
FileUuid: eec5367e-b460-475c-a808-75343dbf9136
ID: 6582b1c0-292ad5ab-ba0f088f-f7a1766f-9a29a54f
IndexInSeries: 1
Labels: []
MainDicomTags:
ImageOrientationPatient: 0\1\0\0\0\-1
ImagePositionPatient: 0\-159\-425.915649
InstanceCreationDate: '20050927'
InstanceCreationTime: '155030.000000'
InstanceNumber: '1'
SOPInstanceUID: 1.2.840.113704.7.1.1.6632.1127829031.2
ParentSeries: 37836232-d13a2350-fa1dedc5-962b31aa-010f8e52
Type: Instance
description: ''
summary: Get information about some instance
tags:
- Instances
operationId: getInstancesById
x-operation-id-source: derived
/instances/{id}/anonymize:
post:
deprecated: false
description: 'Download an anonymized version of the DICOM instance whose Orthanc identifier is provided in the URL: https://orthanc.uclouvain.be/book/users/anonymization.html#anonymization-of-a-single-instance'
parameters:
- description: Orthanc identifier of the instance of interest
in: path
name: id
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
description: ''
properties:
DicomVersion:
description: Version of the DICOM standard to be used for anonymization. Check out configuration option `DeidentifyLogsDicomVersion` for possible values.
type: string
Force:
description: Allow the modification of tags related to DICOM identifiers, at the risk of breaking the DICOM model of the real world
type: boolean
Keep:
description: List of DICOM tags whose value must not be destroyed by the anonymization. Starting with Orthanc 1.9.4, paths to subsequences can be provided using the same syntax as the `dcmodify` command-line tool (wildcards are supported as well).
items:
type: string
type: array
KeepLabels:
description: Keep the labels of all resources level (defaults to `false`)
type: boolean
KeepPrivateTags:
description: Keep the private tags from the DICOM instances (defaults to `false`)
type: boolean
KeepSource:
description: If set to `false`, instructs Orthanc to the remove original resources. By default, the original resources are kept in Orthanc.
type: boolean
LossyQuality:
description: If transcoding to a lossy transfer syntax, this entry defines the quality as an integer between 1 and 100. If not provided, the value is defined by the "DicomLossyTranscodingQuality" configuration. (new in v1.12.7)
type: number
PrivateCreator:
description: The private creator to be used for private tags in `Replace`
type: string
Remove:
description: List of additional tags to be removed from the DICOM instances. Starting with Orthanc 1.9.4, paths to subsequences can be provided using the same syntax as the `dcmodify` command-line tool (wildcards are supported as well).
items:
type: string
type: array
Replace:
description: Associative array to change the value of some DICOM tags in the DICOM instances. Starting with Orthanc 1.9.4, paths to subsequences can be provided using the same syntax as the `dcmodify` command-line tool (wildcards are supported as well).
type: object
Transcode:
description: 'Transcode the DICOM instances to the provided DICOM transfer syntax: https://orthanc.uclouvain.be/book/faq/transcoding.html'
type: string
responses:
'200':
content:
application/dicom:
examples: {}
schema:
description: The anonymized DICOM instance
description: ''
summary: Anonymize instance
tags:
- Instances
operationId: postInstancesByIdAnonymize
x-operation-id-source: derived
/instances/{id}/attachments:
get:
deprecated: false
description: Get the list of attachments that are associated with the given instance
parameters:
- description: If present, retrieve the attachments list and their numerical ids
in: query
name: full
required: false
schema:
type: string
- description: Orthanc identifier of the instance of interest
in: path
name: id
required: true
schema:
type: string
responses:
'200':
content:
application/json:
schema:
description: JSON array containing the names of the attachments
example:
- dicom
description: ''
summary: List attachments
tags:
- Instances
operationId: getInstancesByIdAttachments
x-operation-id-source: derived
/instances/{id}/attachments/{name}:
delete:
deprecated: false
description: Delete an attachment associated with the given DICOM instance. This call will fail if trying to delete a system attachment (i.e. whose index is < 1024).
parameters:
- description: Revision of the attachment, to check if its content has not changed and can be deleted. This header is mandatory if `CheckRevisions` option is `true`.
in: header
name: If-Match
required: false
schema:
type: string
- description: Orthanc identifier of the instance of interest
in: path
name: id
required: true
schema:
type: string
- description: The name of the attachment, or its index (cf. `UserContentType` configuration option)
in: path
name: name
required: true
schema:
type: string
responses:
'200':
description: ''
summary: Delete attachment
tags:
- Instances
operationId: deleteInstancesByIdAttachmentsByName
x-operation-id-source: derived
put:
deprecated: false
description: Attach a file to the given DICOM instance. This call will fail if trying to modify a system attachment (i.e. whose index is < 1024).
parameters:
- description: Revision of the attachment, if this is not the first time this attachment is set.
in: header
name: If-Match
required: false
schema:
type: string
- description: Orthanc identifier of the instance of interest
in: path
name: id
required: true
schema:
type: string
- description: The name of the attachment, or its index (cf. `UserContentType` configuration option)
in: path
name: name
required: true
schema:
type: string
requestBody:
content:
application/octet-stream:
schema:
description: Binary data containing the attachment
responses:
'200':
content:
application/json:
examples: {}
schema:
description: Empty JSON object in the case of a success
description: ''
summary: Set attachment
tags:
- Instances
operationId: putInstancesByIdAttachmentsByName
x-operation-id-source: derived
/instances/{id}/attachments/{name}/compress:
post:
deprecated: false
description: Change the compression scheme that is used to store an attachment.
parameters:
- description: Orthanc identifier of the instance of interest
in: path
name: id
required: true
schema:
type: string
- description: The name of the attachment, or its index (cf. `UserContentType` configuration option)
in: path
name: name
required: true
schema:
type: string
responses:
'200':
description: ''
summary: Compress attachment
tags:
- Instances
operationId: postInstancesByIdAttachmentsByNameCompress
x-operation-id-source: derived
/instances/{id}/attachments/{name}/compressed-data:
get:
deprecated: false
description: Get the (binary) content of one attachment associated with the given instance. The attachment will not be decompressed if `StorageCompression` is `true`.
parameters:
- description: Filename to set in the "Content-Disposition" HTTP header (including file extension)
in: query
name: filename
required: false
schema:
type: string
- description: Optional revision of the attachment, to check if its content has changed
in: header
name: If-None-Match
required: false
schema:
type: string
- description: Optional content range to access part of the attachment (new in Orthanc 1.12.5)
in: header
name: Range
required: false
schema:
type: string
- description: Orthanc identifier of the instance of interest
in: path
name: id
required: true
schema:
type: string
- description: The name of the attachment, or its index (cf. `UserContentType` configuration option)
in: path
name: name
required: true
schema:
type: string
responses:
'200':
content:
application/octet-stream:
examples: {}
schema:
description: The attachment
description: ''
headers:
ETag:
description: Revision of the attachment, to be used in further `PUT` or `DELETE` operations
summary: Get attachment (no decompression)
tags:
- Instances
operationId: getInstancesByIdAttachmentsByNameCompressedData
x-operation-id-source: derived
/instances/{id}/attachments/{name}/compressed-md5:
get:
deprecated: false
description: Get the MD5 hash of one attachment associated with the given instance, as stored on the disk. This is different from `.../md5` iff `EnableStorage` is `true`.
parameters:
- description: Optional revision of the attachment, to check if its content has changed
in: header
name: If-None-Match
required: false
schema:
type: string
- description: Orthanc identifier of the instance of interest
in: path
name: id
required: true
schema:
type: string
- description: The name of the attachment, or its index (cf. `UserContentType` configuration option)
in: path
name: name
required: true
schema:
type: string
responses:
'200':
content:
text/plain:
examples: {}
schema:
description: The MD5 of the attachment, as stored on the disk
description: ''
headers:
ETag:
description: Revision of the attachment, to be used in further `PUT` or `DELETE` operations
summary: Get MD5 of attachment on disk
tags:
- Instances
operationId: getInstancesByIdAttachmentsByNameCompressedMd5
x-operation-id-source: derived
/instances/{id}/attachments/{name}/compressed-size:
get:
deprecated: false
description: Get the size of one attachment associated with the given instance, as stored on the disk. This is different from `.../size` iff `EnableStorage` is `true`.
parameters:
- description: Optional revision of the attachment, to check if its content has changed
in: header
name: If-None-Match
required: false
schema:
type: string
- description: Orthanc identifier of the instance of interest
in: path
name: id
required: true
schema:
type: string
- description: The name of the attachment, or its index (cf. `UserContentType` configuration option)
in: path
name: name
required: true
schema:
type: string
responses:
'200':
content:
text/plain:
examples: {}
schema:
description: The size of the attachment, as stored on the disk
description: ''
headers:
ETag:
description: Revision of the attachment, to be used in further `PUT` or `DELETE` operations
summary: Get size of attachment on disk
tags:
- Instances
operationId: getInstancesByIdAttachmentsByNameCompressedSize
x-operation-id-source: derived
/instances/{id}/attachments/{name}/data:
get:
deprecated: false
description: Get the (binary) content of one attachment associated with the given instance
parameters:
- description: Filename to set in the "Content-Disposition" HTTP header (including file extension)
in: query
name: filename
required: false
schema:
type: string
- description: Optional revision of the attachment, to check if its content has changed
in: header
name: If-None-Match
required: false
schema:
type: string
- description: Optional content range to access part of the attachment (new in Orthanc 1.12.5)
in: header
name: Range
required: false
schema:
type: string
- description: Orthanc identifier of the instance of interest
in: path
name: id
required: true
schema:
type: string
- description: The name of the attachment, or its index (cf. `UserContentType` configuration option)
in: path
name: name
required: true
schema:
type: string
responses:
'200':
content:
application/octet-stream:
examples: {}
schema:
description: The attachment
description: ''
headers:
ETag:
description: Revision of the attachment, to be used in further `PUT` or `DELETE` operations
summary: Get attachment
tags:
- Instances
operationId: getInstancesByIdAttachmentsByNameData
x-operation-id-source: derived
/instances/{id}/attachments/{name}/info:
get:
deprecated: false
description: Get all the information about the attachment associated with the given instance
parameters:
- description: Optional revision of the attachment, to check if its content has changed
in: header
name: If-None-Match
required: false
schema:
type: string
- description: Orthanc identifier of the instance of interest
in: path
name: id
required: true
schema:
type: string
- description: The name of the attachment, or its index (cf. `UserContentType` configuration option)
in: path
name: name
required: true
schema:
type: string
responses:
'200':
content:
application/json:
schema:
description: JSON object containing the information about the attachment
example:
CompressedMD5: 26f3fad6ca0c355f02d57c7fa6770248
CompressedSize: 526970
ContentType: 1
UncompressedMD5: 26f3fad6ca0c355f02d57c7fa6770248
UncompressedSize: 526970
Uuid: ada05909-0efc-43fd-b615-c5cafbaeacf8
description: ''
headers:
ETag:
description: Revision of the attachment, to be used in further `PUT` or `DELETE` operations
summary: Get info about the attachment
tags:
- Instances
operationId: getInstancesByIdAttachmentsByNameInfo
x-operation-id-source: derived
/instances/{id}/attachments/{name}/is-compressed:
get:
deprecated: false
description: Test whether the attachment has been stored as a compressed file on the disk.
parameters:
- description: Optional revision of the attachment, to check if its content has changed
in: header
name: If-None-Match
required: false
schema:
type: string
- description: Orthanc identifier of the instance of interest
in: path
name: id
required: true
schema:
type: string
- description: The name of the attachment, or its index (cf. `UserContentType` configuration option)
in: path
name: name
required: true
schema:
type: string
responses:
'200':
content:
text/plain:
examples: {}
schema:
description: '`0` if the attachment was stored uncompressed, `1` if it was compressed'
description: ''
headers:
ETag:
description: Revision of the attachment, to be used in further `PUT` or `DELETE` operations
summary: Is attachment compressed?
tags:
- Instances
operationId: getInstancesByIdAttachmentsByNameIsCompressed
x-operation-id-source: derived
/instances/{id}/attachments/{name}/md5:
get:
deprecated: false
description: Get the MD5 hash of one attachment associated with the given instance
parameters:
- description: Optional revision of the attachment, to check if its content has changed
in: header
name: If-None-Match
required: false
schema:
type: string
- description: Orthanc identifier of the instance of interest
in: path
name: id
required: true
schema:
type: string
- description: The name of the attachment, or its index (cf. `UserContentType` configuration option)
in: path
name: name
required: true
schema:
type: string
responses:
'200':
content:
text/plain:
examples: {}
schema:
description: The MD5 of the attachment
description: ''
headers:
ETag:
description: Revision of the attachment, to be used in further `PUT` or `DELETE` operations
summary: Get MD5 of attachment
tags:
- Instances
operationId: getInstancesByIdAttachmentsByNameMd5
x-operation-id-source: derived
/instances/{id}/attachments/{name}/size:
get:
deprecated: false
description: Get the size of one attachment associated with the given instance
parameters:
- description: Optional revision of the attachment, to check if its content has changed
in: header
name: If-None-Match
required: false
schema:
type: string
- description: Orthanc identifier of the instance of interest
in: path
name: id
required: true
schema:
type: string
- description: The name of the attachment, or its index (cf. `UserContentType` configuration option)
in: path
name: name
required: true
schema:
type: string
responses:
'200':
content:
text/plain:
examples: {}
schema:
description: The size of the attachment
description: ''
headers:
ETag:
description: Revision of the attachment, to be used in further `PUT` or `DELETE` operations
summary: Get size of attachment
tags:
- Instances
operationId: getInstancesByIdAttachmentsByNameSize
x-operation-id-source: derived
/instances/{id}/attachments/{name}/uncompress:
post:
deprecated: false
description: Change the compression scheme that is used to store an attachment.
parameters:
- description: Orthanc identifier of the instance of interest
in: path
name: id
required: true
schema:
type: string
- description: The name of the attachment, or its index (cf. `UserContentType` configuration option)
in: path
name: name
required: true
schema:
type: string
responses:
'200':
description: ''
summary: Uncompress attachment
tags:
- Instances
operationId: postInstancesByIdAttachmentsByNameUncompress
x-operation-id-source: derived
/instances/{id}/attachments/{name}/verify-md5:
post:
deprecated: false
description: Verify that the attachment is not corrupted, by validating its MD5 hash
parameters:
- description: Orthanc identifier of the instance of interest
in: path
name: id
required: true
schema:
type: string
- description: The name of the attachment, or its index (cf. `UserContentType` configuration option)
in: path
name: name
required: true
schema:
type: string
responses:
'200':
content:
application/json:
examples: {}
schema:
description: On success, a valid JSON object is returned
description: ''
summary: Verify attachment
tags:
- Instances
operationId: postInstancesByIdAttachmentsByNameVerifyMd5
x-operation-id-source: derived
/instances/{id}/content/{path}:
get:
deprecated: false
description: Get the raw content of one DICOM tag in the hierarchy of DICOM dataset
parameters:
- description: Orthanc identifier of the DICOM instance of interest
in: path
name: id
required: true
schema:
type: string
- description: Path to the DICOM tag. This is the interleaving of one DICOM tag, possibly followed by an index for sequences. Sequences are accessible as, for instance, `/0008-1140/1/0008-1150`
in: path
name: path
required: true
schema:
type: string
responses:
'200':
content:
application/octet-stream:
examples: {}
schema:
description: The raw value of the tag of intereset (binary data, whose memory layout depends on the underlying transfer syntax), or JSON array containing the list of available tags if accessing a dataset
description: ''
summary: Get raw tag
tags:
- Instances
operationId: getInstancesByIdContentByPath
x-operation-id-source: derived
/instances/{id}/export:
post:
deprecated: false
description: Write the DICOM file onto the filesystem where Orthanc is running. This is insecure for Orthanc servers that are remotely accessible since one could overwrite any system file. Since Orthanc 1.12.0, this route is disabled by default, but can be enabled using the `RestApiWriteToFileSystemEnabled` configuration option.
parameters:
- description: Orthanc identifier of the DICOM instance of interest
in: path
name: id
required: true
schema:
type: string
requestBody:
content:
text/plain:
schema:
description: Target path on the filesystem
responses:
'200':
description: ''
summary: Write DICOM onto filesystem
tags:
- Instances
operationId: postInstancesByIdExport
x-operation-id-source: derived
/instances/{id}/file:
get:
deprecated: false
description: Download one DICOM instance
parameters:
- description: Filename to set in the "Content-Disposition" HTTP header (including file extension)
in: query
name: filename
required: false
schema:
type: string
- description: If transcoding to a lossy transfer syntax, this entry defines the quality as an integer between 1 and 100. If not provided, the value is defined by the "DicomLossyTranscodingQuality" configuration. (new in v1.12.7)
in: query
name: lossy-quality
required: false
# --- truncated at 32 KB (93 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/uclouvain/refs/heads/main/openapi/uclouvain-instances-api-openapi.yml