Developer Portal
InsightsPurpleTRAC
MTIPodium
Other
Other
  • Weather
InsightsPurpleTRAC
MTIPodium
Other
Other
  • Weather
  1. Start Here
  • Start Here
    • Overview
    • Getting started
    • Authentication
    • Testing
    • Errors & status codes
    • FAQ
  • General
    • Retrieve a list of vessels
      GET
    • Additional entity search
      GET
  • Screening
    • Screening a vessel
    • Watchlist checks
    • Additional checks
    • Movement history
    • Carbon rating
    • Submit a vessel for screening
      POST
    • Retrieve a list of transactions and their screening results
      GET
    • Ship & Flag Watchlist check
      GET
    • Company Watchlist check
      GET
    • Country Sanctions check
      GET
    • Ship movement history
      GET
    • Ship-to-Ship (STS) pairing screening
      GET
    • Company history check
      GET
    • P&I Club check
      GET
    • Vessel operational status
      GET
    • Flag history check
      GET
    • AIS positional discrepancy (spoofing) events
      GET
    • Periods of Non-Reporting
      GET
    • Carbon rating details
      GET
    • Get the PurpleTRAC Screening Report PDF
      GET
    • Submit a vessel for rescreening
      PUT
    • Archive a Screening
      PUT
  • Tracking
    • Voyage updates
    • Notification catalogue
    • Additional entities
    • Tracking a vessel
    • Enable a vessel for tracking
    • Remove additional entities from a tracked vessel
    • Add additional entities to a tracked vessel
    • List the additional entities on a transaction
    • Update voyage and tracking details
    • Get vessel positional data
    • Retrieve a list of vessel or bill of lading notifications
    • Get the PurpleTRAC Trade Report PDF
  • Bill of Lading
    • Carriers
    • Verification
    • Submit a Bill of Lading for screening
    • Get all BL Screening Results
    • Get a single BL screening result
    • Get the PurpleTRAC Bill of Lading Screening Report PDF
    • Enable tracking for a screened Bill of Lading
    • Get the PurpleTRAC Bill of Lading Tracking Report PDF
    • Disable tracking for a Bill of Lading
  • Containers
    • Screening
    • Carriers
    • Submit a Container for screening
    • Get all Container Screening Results
    • Archive Container
    • Get a single Container screening result
    • Get the Container report
  • Schemas
    • BLVGetAllResultsResponse
    • BLVScreeningResponse
    • BLVLastScreeningResult
    • BLVScreeningResultDetails
    • ContainerRegistrationBody
    • ContainerRegistrationResponse
    • ContainerGetAllResultsResponse
    • ContainerScreeningResponse
    • CarbonRatings
    • CarbonRating
    • CompanySanctions
    • CompanySanction
    • CountryChecks
    • CountryCheck
    • StsPairings
    • StsPairing
    • OtherAssociations
    • OtherAssociation
    • CompanyHistoryChecks
    • CompanyHistoryCheck
    • ShipStatuses
    • ShipStatus
    • FlagHistoryChecks
    • FlagHistoryCheck
    • PositionalDiscrepancies
    • PositionalDiscrepancy
    • DiscrepancyZone
    • DiscrepancyPort
    • NonReportingResponse
    • NonReporting
    • Notifications
    • Notification
    • BLVNotification
    • BLVPortFull
    • BLVPortFallback
    • PortCallHistory
    • PortCallHistoryItem
    • Positions
    • Position
    • PositionInfo
    • RegistrationResponse
    • ShipDetails
    • ShipSanctions
    • ShipSanction
    • VesselTrackingResponse
    • VesselTransactionsResponse
    • Transaction
    • TransactionPutBody
    • TransactionPutResponse
    • TransactionRescreenResponse
    • LastPosition
    • ScreeningNotification
    • ScreeningResult
    • UserDetails
    • UserProfile
    • Error
    • InvalidContainerNumberResponse
    • VesselRegistrationBody
    • VesselTrackingRequest
    • BLRegistrationBody
    • AdditionalEntitySearchResponse
    • AdditionalEntity
    • AdditionalEntitiesRequestSchema
    • TrackingAdditionalEntity
    • TrackingAdditionalEntitiesResponse
    • TrackingAdditionalEntityInput
    • TrackingAdditionalEntitiesPutBody
    • TrackingAdditionalEntitiesPutResponse
    • TrackingAdditionalEntitiesDeleteBody
    • RemovedAdditionalEntity
    • TrackingAdditionalEntitiesDeleteResponse
    • TrackingAdditionalEntityError
    • FeatureDisabledError
    • ObjectNotFoundError
    • TransactionValidationError
    • VoyageUpdateRequest
    • VoyageUpdateResponse
    • PTracMeta
    • PTracVessel
    • PTracVesselSearchResponse
    • DuplicateTransactionError
  1. Start Here

PurpleTRAC Errors and Status Codes

PurpleTRAC does not return one error envelope. Different endpoints return different shapes, some responses are plain text, and a few are empty. Handle the status code first and treat the body as best-effort detail.
If you also build against Insights, note that the two products disagree on what 403 means. Here it says the feature is not enabled for your account.

Status codes#

CodeMeans
400Invalid parameters, filtering or ordering on a field that does not allow it, malformed body, or a missing required field
401Credentials missing or wrong. See Authentication
403Almost always: the endpoint needs an optional feature that is not enabled for your account. PUT /transaction/{id}/voyage_update is the exception, where it means the transaction belongs to a different account
404The transaction or resource does not exist
405That method is not supported on that endpoint
409A duplicate transaction already exists
500System failure, a missing critical field, or a report that is not ready yet
403 does not always mean the same thing
On nearly every endpoint a 403 says the feature behind it is an addon your account does not
have. On PUT /transaction/{id}/voyage_update it says the transaction belongs to another
account. If you handle the two cases differently, branch on the endpoint as well as the code.

The response shapes you will meet#

Four shapes cover almost everything.
Single message
Field errors
Coded error
Plain text or empty
{
  "error": "The 'test' field does not allow filtering."
}
Parse defensively. A client that assumes JSON will throw on the plain-text and empty responses.

General errors#

Filtering on a field that does not allow it#

GET /purpletrac/v1/<resource>?test=value returns 400.
{
  "error": "The 'test' field does not allow filtering."
}
PurpleTRAC rejects unknown filter parameters rather than ignoring them, so a typo fails the whole request.

Ordering on a field that does not allow it#

GET /purpletrac/v1/<resource>?order_by=test returns 400.
{
  "error": "No matching 'test' field for ordering on."
}

Method not allowed#

405, with a plain-text body naming the methods.
GET/POST/PUT/PATCH/DELETE not allowed

Vessel search#

Upstream service unavailable#

GET /purpletrac/v1/sisship returns 500 with a plain-text body when the ship information service behind it is down.
error while fetching ships from SIS
Retry with a backoff. Nothing about the request needs changing.

Screening#

Body is not JSON#

POST /purpletrac/v1/registration returns 400.
{
  "error": "Request is not valid JSON."
}

Too many additional entities#

POST /purpletrac/v1/registration returns 400 when the request carries more than ten.
{
  "error": {
    "additional_entities": "Field cannot be bigger than 10 entities."
  }
}

Missing registered name#

POST /purpletrac/v1/registration returns 500, not 400, when registered_name is absent. The body names the field.
{
  "error_message": "registered_name"
}

Transactions#

Missing required fields#

PUT /purpletrac/v1/transaction/{id} returns 400.
{
  "transaction": {
    "__all__": "Please add all required fields and values."
  }
}

Transaction not found#

GET /purpletrac/v1/transaction/{id} returns 404 with an empty body. There is nothing to parse, so branch on the status code.

Duplicate transaction#

PUT /purpletrac/v1/transaction/{id}/track returns 409 when the same entity is already tracked.
{
  "error_code": "DUPLICATE_FOUND",
  "error_info": {
    "type": "SAME_USER",
    "users": ["Demo Trader"]
  },
  "error_message": "Duplicate entry found"
}
error_info.type distinguishes a duplicate you created from one created by someone else on your account.

Additional entities during tracking#

These apply to GET, PUT and DELETE on /purpletrac/v1/transaction/{id}/additional_entity. Managing Additional Entities has the workflow.
The same condition reports two different codes
A transaction that cannot be found is a 404 on GET and a 400 on PUT and DELETE. Match on both if you are handling one condition.
403, feature not enabled
404 on GET, transaction not found
400 on PUT and DELETE, transaction not found
400, transaction not tracking
400, no entities supplied
400, entity cap exceeded
400, duplicates in the request
400, entity already added
400, invalid entity payload
400 on DELETE, no ids supplied
400 on DELETE, entity not found or already removed

Reports#

Invalid parameters#

GET /purpletrac/v1/screening_report?transaction_id=test returns 400 with a plain-text body.
Invalid report params: * transaction_id * Enter a whole number.

Report not ready#

A report that has not finished generating returns 500 with an empty body. Retry after a short wait rather than treating it as a failure.

Related#

Authentication
What 401 and 403 each tell you about your credentials and your account.
Getting Started
The transaction id, and which addons your account configuration gates.
FAQ
Why screening can run long, and when to archive.
Modified at 2026-10-02 08:59:15
Previous
Testing
Next
FAQ
Built with