Get attachment download URL

Request access

Important note
This API is not available as part of our free evaluation or Pay As You Grow (PAYG) offering. Click the Request Access button above to contact our Sales team.

Purpose

This call is used to get a temporary link for downloading an attachment. Use the link with an HTTP GET request to read the file. The file is not returned by this call itself.

A link is only given out once the file has passed the virus scan. See Attachments for the full picture.

How to request data

HTTP method: GET

  • Constants and parameters enclosed in curly brackets { } must be replaced with their values.
  • Please see the following Request parameters section with the required and optional parameters tables for these values. The generic URL format is as follows.

URL request format

get
URL request format
https://{baseURL}/maps/orbis/feedback/{feedbackId}/attachments/{attachmentId}/download-url?key={API-key}&apiVersion={version}

Request parameters

The following table describes the parameters that can be used in a request.

  • Required parameters must be used or the call will fail.

Parameter

Required

Type

Description

feedbackId

Yes

string

The ID of the feedback the file belongs to. Part of the URL.

attachmentId

Yes

string

The ID of the attachment, as listed with the feedback. Part of the URL.

Response data

The scanState field tells you whether the file is ready to be downloaded:

  • CLEAN - the file passed the virus scan. downloadUrl holds the link and expiresAt tells you when it stops working. It points at TomTom’s file storage on *.blob.core.windows.net and already carries a temporary access token, so use it exactly as you received it. The link is valid for 15 minutes; if it expires, simply make this call again.
  • PENDING - the virus scan is still running, so no link is given yet. Wait a moment and try again.

A file that did not pass the virus scan is never handed out. In that case the call fails with the HTTP code 409.

Response codes

HTTP Code

Message

Description

Sample response

200

OK

The file passed the virus scan and the link is ready

{
"downloadUrl": "https://{storageHost}/attachments/{blobId}?{sasToken}",
"expiresAt": "2026-09-23T10:22:41.114166",
"scanState": "CLEAN"
}

200

OK

The virus scan is still running. Try again shortly

{
"downloadUrl": "",
"scanState": "PENDING"
}

403

Forbidden

Access denied

{
"detailedError": {
"code": "Forbidden",
"message": "You are not allowed to access this endpoint"
}
}

404

Not Found

Attachment or feedback not found

{
"errorText": "Attachment '6b48dd3c-6d0c-4b0a-9a6e-1f1c0e2a51f4' not found for feedback '7049aa04-91bd-4ad3-8085-bd8bec318905'",
"detailedError": {
"code": "NOT_FOUND",
"message": "Attachment '6b48dd3c-6d0c-4b0a-9a6e-1f1c0e2a51f4' not found for feedback '7049aa04-91bd-4ad3-8085-bd8bec318905'"
},
"httpStatusCode": 404
}

409

Conflict

The file did not pass the virus scan, or is otherwise not available for download

{
"errorText": "The attachment did not pass the malware scan",
"detailedError": {
"code": "CONFLICT",
"message": "The attachment did not pass the malware scan"
},
"httpStatusCode": 409
}

500

Internal Server Error

Internal server error

{
"errorText": "An unexpected error has occurred. Please try again later.",
"detailedError": {
"code": "INTERNAL_SERVER_ERROR",
"message": "An unexpected error has occurred. Please try again later."
},
"httpStatusCode": 500
}