Complete attachment upload

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 confirm that a file has been uploaded. It is the last of the three calls described in Attachments.

TomTom checks the uploaded file against the file type and size you declared when you started the upload. If everything matches, the attachment is added to the feedback and its status becomes ACTIVE.

How to request data

HTTP method: POST

  • 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

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

This call has no request body.

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 returned by Initiate attachment upload. Part of the URL.

Response data

The response describes the attachment. Its status tells you the outcome:

  • ACTIVE - the file was accepted and is now part of the feedback.
  • FAILED - the file could not be accepted. This happens when nothing was uploaded to the link, when the link expired before the upload, or when the uploaded file does not match the type or size you declared. Start again with a new Initiate attachment upload call.

Repeating this call for an attachment that is already ACTIVE is safe and simply returns the same result.

Response codes

HTTP Code

Message

Description

Sample response

200

OK

Upload completed successfully

{
"attachment": {
"attachmentId": "6b48dd3c-6d0c-4b0a-9a6e-1f1c0e2a51f4",
"feedbackId": "7049aa04-91bd-4ad3-8085-bd8bec318905",
"status": "ACTIVE",
"displayFilename": "missing-road-sign.png",
"contentType": "image/png",
"sizeBytes": 20480,
"createdAt": "2026-09-23T10:07:41.114166"
}
}

400

Bad Request

Invalid request parameters

{
"errorText": "Validation failed",
"detailedError": {
"code": "BAD_REQUEST",
"message": "attachmentId: must be 1-64 letters, digits or hyphens"
},
"httpStatusCode": 400
}

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
}

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
}