# Get Tracking by Tracking IDs


GET https://sandbox-api.shipbob.com/2026-01/tracking

Retrieves tracking information for one or more shipments by their carrier tracking IDs. Returns the current status, carrier details, estimated delivery time, and full tracking history for each tracking ID. Intended for platform-level consumers that reference shipments by carrier tracking number rather than ShipBob shipment ID.


Reference: https://developer-stage.shipbob.dev/api/tracking/get-tracking-by-tracking-i-ds

## OpenAPI Specification

```yaml
openapi: 3.1.0
info:
  title: api-2026-01
  version: 1.0.0
paths:
  /2026-01/tracking:
    get:
      operationId: get-tracking-by-tracking-i-ds
      summary: |
        Get Tracking by Tracking IDs
      description: >
        Retrieves tracking information for one or more shipments by their
        carrier tracking IDs. Returns the current status, carrier details,
        estimated delivery time, and full tracking history for each tracking ID.
        Intended for platform-level consumers that reference shipments by
        carrier tracking number rather than ShipBob shipment ID.
      tags:
        - subpackage_tracking
      parameters:
        - name: TrackingIds
          in: query
          description: A list of carrier tracking IDs to retrieve tracking information for
          required: false
          schema:
            type: string
        - name: Authorization
          in: header
          description: Authentication using Personal Access Token (PAT) token
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/Tracking.PlatformShipmentTrackingResponseArray
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/Tracking.Get.Api.V1.Publictracking.Tracking.Ids.Bad.Request.String
        '401':
          description: Authorization missing or invalid
          content:
            application/json:
              schema:
                description: Any type
        '403':
          description: The provided credentials are not authorized to access this resource
          content:
            application/json:
              schema:
                description: Any type
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/Tracking.Get.Api.V1.Publictracking.Tracking.Ids.Internal.Server.Error.String
servers:
  - url: https://sandbox-api.shipbob.com
components:
  schemas:
    TrackingTrackingHistoryItemStatus:
      type: string
      enum:
        - Available for Pickup
        - Cancelled
        - Delivered
        - Delivery attempt Failed
        - DeliveryException
        - Exception
        - Failed
        - InTransit
        - PreTransit
        - Return to sender
      description: The high-level status at the time of this tracking event
      title: TrackingTrackingHistoryItemStatus
    Tracking.TrackingHistoryItem:
      type: object
      properties:
        carrier_message:
          type:
            - string
            - 'null'
          description: The raw message provided by the carrier for this tracking event
        location:
          type:
            - string
            - 'null'
          description: The geographic location where this tracking event occurred
        message:
          type:
            - string
            - 'null'
          description: A human-readable message describing this tracking event
        status:
          oneOf:
            - $ref: '#/components/schemas/TrackingTrackingHistoryItemStatus'
            - type: 'null'
          description: The high-level status at the time of this tracking event
        substatus:
          type:
            - string
            - 'null'
          description: >-
            A more granular status code at the time of this tracking event.
            Possible values include: 'Delivered', 'Failed Attempt', 'In
            Transit', 'Delayed', 'Label created', etc.
        timestamp:
          type: string
          format: date-time
          description: The date and time when this tracking event occurred
      title: Tracking.TrackingHistoryItem
    TrackingPlatformShipmentTrackingResponseStatus:
      type: string
      enum:
        - Available for Pickup
        - Cancelled
        - Delivered
        - Delivery attempt Failed
        - DeliveryException
        - Exception
        - Failed
        - InTransit
        - PreTransit
        - Return to sender
      description: The current high-level status of the shipment
      title: TrackingPlatformShipmentTrackingResponseStatus
    Tracking.PlatformShipmentTrackingResponse:
      type: object
      properties:
        carrier:
          type:
            - string
            - 'null'
          description: >-
            The name of the carrier handling the shipment (e.g., UPS, FedEx,
            USPS)
        carrier_message:
          type:
            - string
            - 'null'
          description: The raw status message provided by the carrier
        carrier_tracking_number:
          type:
            - string
            - 'null'
          description: The tracking number assigned by the carrier
        eta:
          type:
            - string
            - 'null'
          format: date-time
          description: The estimated date and time of delivery
        history:
          type:
            - array
            - 'null'
          items:
            $ref: '#/components/schemas/Tracking.TrackingHistoryItem'
          description: A list of historical tracking events for the shipment
        last_updated:
          type: string
          format: date-time
          description: The date and time when the tracking information was last updated
        location:
          type:
            - string
            - 'null'
          description: The current geographic location of the shipment
        message:
          type:
            - string
            - 'null'
          description: A human-readable message describing the current shipment status
        public_tracking_url:
          type:
            - string
            - 'null'
          description: >-
            A publicly accessible URL for tracking the shipment on the carrier's
            website
        service:
          type:
            - string
            - 'null'
          description: >-
            The carrier service level used for the shipment (e.g., Ground,
            Express)
        status:
          oneOf:
            - $ref: >-
                #/components/schemas/TrackingPlatformShipmentTrackingResponseStatus
            - type: 'null'
          description: The current high-level status of the shipment
        substatus:
          type:
            - string
            - 'null'
          description: >-
            A more granular status code describing the current state of the
            shipment. Possible values include: 'Delivered', 'Failed Attempt',
            'In Transit', 'Delayed', 'Label created', etc.
        tracking_id:
          type:
            - string
            - 'null'
          description: The unique tracking identifier assigned to the shipment
      title: Tracking.PlatformShipmentTrackingResponse
    Tracking.PlatformShipmentTrackingResponseArray:
      type: array
      items:
        $ref: '#/components/schemas/Tracking.PlatformShipmentTrackingResponse'
      title: Tracking.PlatformShipmentTrackingResponseArray
    Tracking.Get.Api.V1.Publictracking.Tracking.Ids.Bad.Request.String:
      type: string
      title: Tracking.Get.Api.V1.Publictracking.Tracking.Ids.Bad.Request.String
    Tracking.Get.Api.V1.Publictracking.Tracking.Ids.Internal.Server.Error.String:
      type: string
      title: >-
        Tracking.Get.Api.V1.Publictracking.Tracking.Ids.Internal.Server.Error.String
  securitySchemes:
    PAT:
      type: http
      scheme: bearer
      description: Authentication using Personal Access Token (PAT) token
    OAuth2:
      type: http
      scheme: bearer
      description: OAuth2 authentication using JWT tokens

```

## SDK Code Examples

```python Tracking_getTrackingByTrackingIDs_example
import requests

url = "https://sandbox-api.shipbob.com/2026-01/tracking"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.json())
```

```javascript Tracking_getTrackingByTrackingIDs_example
const url = 'https://sandbox-api.shipbob.com/2026-01/tracking';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go Tracking_getTrackingByTrackingIDs_example
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://sandbox-api.shipbob.com/2026-01/tracking"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("Authorization", "Bearer <token>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby Tracking_getTrackingByTrackingIDs_example
require 'uri'
require 'net/http'

url = URI("https://sandbox-api.shipbob.com/2026-01/tracking")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
```

```java Tracking_getTrackingByTrackingIDs_example
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://sandbox-api.shipbob.com/2026-01/tracking")
  .header("Authorization", "Bearer <token>")
  .asString();
```

```php Tracking_getTrackingByTrackingIDs_example
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://sandbox-api.shipbob.com/2026-01/tracking', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
  ],
]);

echo $response->getBody();
```

```csharp Tracking_getTrackingByTrackingIDs_example
using RestSharp;

var client = new RestClient("https://sandbox-api.shipbob.com/2026-01/tracking");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift Tracking_getTrackingByTrackingIDs_example
import Foundation

let headers = ["Authorization": "Bearer <token>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://sandbox-api.shipbob.com/2026-01/tracking")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```