1. CarrierPortal
SpotGo
  • Getting started
    • Introduction
    • Authentication
    • Opportunities vs Orders
    • Mappings
  • Order
    • Orders Processing
    • Integrating Your Order Document Processing: A Guide to Best Practices
    • /api/v1/orders/file
      POST
    • /api/v2/orders/{orderId}
      GET
    • /api/v1/orders/{orderId}/file
      GET
  • Opportunity
    • Opportunities (Freight Qoutes)
    • /api/v1/opportunities
      POST
    • /api/v1/opportunities/file
      POST
    • /api/v1/opportunities/image
      POST
    • /api/v1/opportunities/{opportunityId}
      GET
    • /api/v1/opportunities/{opportunityId}/custom
      GET
    • /api/v1/opportunities/{opportunityId}/default
      GET
  • Freight
    • Freight publish
    • /api/v1/freights/share
    • /api/v1/freights
    • /api/v1/freights
    • /api/v1/freights/{freightId}
    • /api/v1/freights/{freightId}
    • /api/v1/freights/{freightId}
  • Vehicles
    • /api/v1/vehicles
    • /api/v1/vehicles
    • /api/v1/vehicles/{vehicleId}
    • /api/v1/vehicles/{vehicleId}
    • /api/v1/vehicles/{vehicleId}
  • Feedback
    • /api/v1/feedback
  • Webhook
    • Webhooks flow
    • /api/v1/webhooks
    • /api/v1/webhooks/{subscriptionId}/reset
    • /api/v1/webhooks
    • /api/v1/webhooks/{subscriptionId}
    • /api/v1/webhooks/{subscriptionId}/notify
  • Documents
    • Documents processing
    • /api/v1/documents
    • /api/v1/documents/{documentId}/file
    • /api/v1/documents/invoice/{documentId}
    • /api/v1/documents/receipt/{documentId}
    • /api/v1/documents/cmr/{documentId}
    • /api/v1/documents/insurance/{documentId}
  • AccountManagement
    • /api/v1/accounts
    • /api/v1/accounts/block
  • DriversDocuments
    • /api/v1/drivers-documents
    • /api/v1/drivers-documents/{documentId}
  • CarrierPortal
    • Integration flows
    • Document Upload
      POST
    • /api/v1/orders
      POST
    • /api/v1/orders/{orderId}
      PUT
    • /api/v1/orders/{orderId}
      DELETE
    • /api/v1/orders/{orderId}
      GET
    • /api/v1/orders/upsert
      POST
    • /api/v1/orders/query
      POST
    • /api/v1/orders/{orderId}/documents/{documentId}/content
      GET
    • /api/v1/orders/{orderId}/documents/{documentId}/status
      POST
  • Schemas
    • Schemas
      • ApiKeyAuthentication
      • AccountBlockSubmitModel
      • InsuranceApiModel
      • FreightShareSubmitModel
      • FreightViewModel
      • DriverDocumentTypeResponse
      • BasicAuthentication
      • AccountSubmitModel
      • InsuranceCompanyApi
      • FreightShareViewModel
      • FreightsViewModel
      • DriversDocumentApiModel
      • CustomOpportunityApiAddressModel
      • AccountViewModel
      • InsuranceResponseViewModel
      • DriversDocumentsConvertViewModel
      • CustomOpportunityApiDescriptionModel
      • DriversDocumentsViewModel
      • CustomOpportunityApiGeoCoordinateModel
      • CustomOpportunityApiLocationModel
      • CustomOpportunityApiModel
      • CustomOpportunityApiRequirementsModel
      • CustomOpportunityApiViewModel
      • CustomerCustomerListResponse
      • CustomerCustomerViewModel
      • CustomerCustomersSubmitModel
      • CustomerSubmitModel
      • DocumentFileType
      • DocumentStatus
      • DocumentsConvertSubmitModel
      • DocumentsConvertViewModel
      • ErrorItemViewModel
      • ErrorViewModel
      • FeedbackSubmitItemModel
      • FeedbackSubmitModel
      • FeedbackTransactionType
      • FeedbackType
      • FreightCreateViewModel
      • FreightSubmitModel
      • FreightUpdateSubmitModel
      • InvoiceApiAddress
      • InvoiceApiLine
      • InvoiceApiModel
      • InvoiceApiParty
      • InvoiceApiTotal
      • InvoiceResponseViewModel
      • LoadingSideTypes
      • LoadingType
      • LocationAddressSubmitModel
      • LocationCoordinatesSubmitModel
      • LocationPeriodSubmitModel
      • LocationSubmitModel
      • Oauth2Authentication
      • OpportunityApiAddress
      • OpportunityApiCargo
      • OpportunityApiCoordinates
      • OpportunityApiLocation
      • OpportunityApiModel
      • OpportunityApiPayment
      • OpportunityApiPeriod
      • OpportunityApiRequirements
      • OpportunityApiTemperature
      • OpportunityApiTransitInfo
      • OpportunityApiViewModel
      • OpportunityResultModel
      • OpportunityStatus
      • OpportunitySubmitModel
      • OrderConvertSubmitModel
      • OrderConvertViewModel
      • OrderDataViewModel
      • OrderStatus
      • OrderTypes
      • OrderViewCargo
      • OrderViewLocation
      • OrderViewLocationCoordinates
      • OrderViewParty
      • OrderViewPayments
      • PaymentSubmitModel
      • RegimeTypes
      • RequirementsSubmitModel
      • SpotGoDocumentType
      • TemperatureSubmitModel
      • VehicleAddressSubmitModel
      • VehicleLoadingLocationSubmitModel
      • VehicleLocationPeriodSubmitModel
      • VehicleRequirementsSubmitModel
      • VehicleResultViewModel
      • VehicleSubmitModel
      • VehicleUnloadingLocationSubmitModel
      • WebhookAuthType
      • WebhookAuthentication
      • WebhookEventType
      • WebhookItemViewModel
      • WebhookSubscriptionRequest
      • WebhookSubscriptionResponse
      • WebhookViewModel
    • WebhookSubscriptionNotificationsRequest
    • CarrierOrderStatus
    • CarrierSubmitModel
    • CarrierViewModel
    • DocumentRejectionReason
    • OrderViewModel
    • ProblemDetails
    • DocumentStatusChangeSubmitModel
    • ExternalErrorItemViewModel
    • ExternalErrorViewModel
    • OrderDetailsSubmitModel
    • OrderDetailsViewModel
    • OrderDocumentStatus
    • OrderDocumentViewModel
    • OrderLocationSubmitModel
    • OrderLocationType
    • OrderLocationViewModel
    • OrderQueryItemViewModel
    • OrderQuerySubmitModel
    • OrderQueryViewModel
    • OrderShareViewModel
    • OrderSubmitModel
    • OrderUpsertViewModel
    • PositionSubmitModel
    • QueryDateRange
  1. CarrierPortal

Integration flows

Carrier Portal API — public orders integration (overview)#

This describes how external systems integrate with the Carrier API order endpoints (api/v{version}/..., version 1.0). Detailed request/response shapes live in your API reference; this page explains how the pieces fit together and which flows use which endpoints.
Authentication and base URL follow your environment (e.g. API key / company policy as configured for the Carrier API). The controller applies rate limiting on these routes.
Order number is unique per your company account (the service normalizes it before comparing). Always persist the returned orderId (GUID) in your system; almost all document and follow-up calls use orderId, not the human-readable order number.

Creating or updating orders#

You can integrate in two ways:
1.
POST .../orders — Create only. Fails if an order with the same order number already exists for your company. Use when you want a strict “create once” semantics.
2.
POST .../orders/upsert — Create or update by order number (“absorb”).
If no order exists → creates one (response flags include created and link changed when a new share link is issued).
If it exists → updates it (updated flag), unless the order is already completed (updates are rejected).
Carrier change: If the carrier on the payload differs from the stored carrier, the system assigns the new carrier and regenerates the carrier share link (link changed). If the order already has documents uploaded, changing the carrier is not allowed.
PUT .../orders/{orderId} updates an order by id; it does not allow changing the carrier (even when there are no documents).
After create or upsert, store orderId and optionally surface the Share URL from the response to operations that need the carrier-facing link.

Documents: metadata and download#

GET .../orders/{orderId} — Full order, including Documents (ids, types, names, statuses, comments).
POST .../orders/query — Search/list orders (filters include status, carrier, order number pattern, loading/unloading date ranges, continuation token for paging). Each row includes documents summary same as above. Use this to find orders or restrict to “active” or other status values you care about—not required for every integration.
To download a file:
GET .../orders/{orderId}/documents/{documentId}/content — Returns the file bytes (suitable for archiving CMR, invoice, packing list, etc., depending on what was uploaded and how types are labeled).

Workflow A — Automatic pipeline (typical: act when documents are accepted)#

Goal: Minimize manual steps; your system reacts when paperwork is ready/accepted.
1.
Create or upsert the order (POST /orders or POST /orders/upsert) and save orderId.
2.
Webhooks (planned / separate configuration): You will receive notifications according to your setup. In the common case, you only care about events when a document is accepted (or equivalent “ready” signal).
3.
When notified (or on a poll if you combine with query), refresh order data (GET) and read Documents.
4.
For each document you need, call .../content to download.
5.
Optional extra step (both workflows): Your customer may need to upload an order PDF or self-billing invoice from their side. That is covered by the document upload API described in public docs (Document Upload) — POST .../orders/{orderId}/documents with multipart file and documentType.
Supporting calls (not every run): DELETE .../orders/{orderId} to remove an order; query / GET to locate or audit orders.

Workflow B — Manual confirmation in your system (review uploaded documents)#

Goal: Your team or automation reviews uploads before they count as accepted.
1.
Same create/upsert and orderId storage.
2.
Webhooks: Configure so you are notified when new documents are uploaded (not only when accepted).
3.
GET order to see Documents; use .../content to download and review.
4.
POST .../orders/{orderId}/documents/{documentId}/status — Set document status to Accepted or Rejected (with optional reasoning / rejection reason per your API model). The API only allows transitions appropriate to the document’s current state (see your reference; the implementation focuses on InReview / Accepted / Rejected style states for changes).
Order-level status values in responses (e.g. InReview, Accepted, Rejected at the order layer vs document layer) align with your query filters for document-centric states where applicable—use your detailed spec for exact enum meanings.
Modified at 2026-04-07 13:20:12
Previous
/api/v1/drivers-documents/{documentId}
Next
Document Upload
Built with