Portcast Tracking Upload API

Start tracking an ocean shipment.

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/portcast-tracking-upload-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

portcast-tracking-upload-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Portcast Container Tracking Augmentation Tracking Upload API
  description: Portcast Container Tracking API returns the full journey of an ocean container - standardized milestone events, vessel schedules, port codes, transport plan, delays, terminal data, CO2 emissions, and machine-learning predicted ETAs and ETDs - in a single JSON response. Shipments are tracked by container number, by booking or bill of lading number, plus a carrier SCAC code (or AUTO for auto-detection). An optional callback_url registers a Push (webhook) endpoint that Portcast posts the tracking object to on every update.
  termsOfService: https://www.portcast.io/terms-of-use
  contact:
    name: Portcast Support
    url: https://kb.portcast.io
  version: '2.0'
servers:
- url: https://api.portcast.io/api/v2/eta
  description: Production
security:
- x-api-key: []
tags:
- name: Tracking Upload
  description: Start tracking an ocean shipment.
paths:
  /bill-of-lading-bookmarks:
    post:
      operationId: uploadUsingContainerNumber
      tags:
      - Tracking Upload
      summary: Upload using Container Number
      description: Start tracking an ocean container. Provide the container number, the carrier SCAC code (or AUTO), and optionally the master bill of lading / booking number and an HTTPS callback_url for Push updates. Returns the created bill-of-lading bookmark including the bookmark id used to fetch tracking data.
      parameters:
      - $ref: '#/components/parameters/XCustomer'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContainerUploadRequest'
      responses:
        '200':
          description: Bookmark created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BillOfLadingBookmarkResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /booking:
    post:
      operationId: uploadUsingBooking
      tags:
      - Tracking Upload
      summary: Upload using Booking / Bill of Lading
      description: Start tracking using a booking or bill of lading number without a container number; Portcast discovers the containers on the document. Returns discovered containers, booking details, locations, vessels, and the resolved route.
      parameters:
      - $ref: '#/components/parameters/XCustomer'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BookingUploadRequest'
      responses:
        '200':
          description: Booking accepted and containers discovered.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BookingUploadResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /bill-of-lading-bookmarks/{bookmark_id}:
    delete:
      operationId: archiveBookmark
      tags:
      - Tracking Upload
      summary: Archive Bookmark ID
      description: Archive a bookmark to stop tracking the shipment.
      parameters:
      - $ref: '#/components/parameters/BookmarkId'
      - $ref: '#/components/parameters/XCustomer'
      responses:
        '200':
          description: Bookmark archived.
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  schemas:
    BookingUploadResponse:
      type: object
      properties:
        status:
          type: string
        message:
          type: string
        containers:
          type: array
          items:
            type: string
          description: Container numbers discovered on the document.
        booking_details:
          type: object
          properties:
            doc_number:
              type: string
            doc_type:
              type: string
            carrier_no:
              type: string
            booking_container_qty:
              type: array
              items:
                type: object
                additionalProperties: true
            updated:
              type: string
        response:
          type: array
          items:
            $ref: '#/components/schemas/BillOfLadingBookmark'
        locations:
          type: array
          items:
            $ref: '#/components/schemas/Location'
        vessels:
          type: array
          items:
            $ref: '#/components/schemas/Vessel'
        route:
          $ref: '#/components/schemas/Route'
    Vessel:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        imo:
          type: string
        mmsi:
          type: string
        call_sign:
          type: string
        flag:
          type: string
        voyage_no:
          type: array
          items:
            type: string
    RoutePoint:
      type: object
      properties:
        location:
          $ref: '#/components/schemas/Location'
        date:
          type: string
        date_lt:
          type: string
        vessel:
          $ref: '#/components/schemas/Vessel'
        actual:
          type: boolean
    Route:
      type: object
      properties:
        prepol:
          $ref: '#/components/schemas/RoutePoint'
        pol:
          $ref: '#/components/schemas/RoutePoint'
        pot:
          $ref: '#/components/schemas/RoutePoint'
        pod:
          $ref: '#/components/schemas/RoutePoint'
        postpod:
          $ref: '#/components/schemas/RoutePoint'
    BillOfLadingBookmarkResponse:
      type: object
      properties:
        obj:
          $ref: '#/components/schemas/BillOfLadingBookmark'
    Location:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        locode:
          type: string
        country:
          type: string
        country_code:
          type: string
        state:
          type: string
        lat:
          type: number
        lng:
          type: number
    BillOfLadingBookmark:
      type: object
      properties:
        id:
          type: string
        bl_no:
          type: string
        carrier_no:
          type: string
        cntr_no:
          type: string
        derived_carrier_no:
          type: string
        org_id:
          type: string
        created:
          type: string
        updated:
          type: string
        deleted:
          type: boolean
        system_deleted:
          type: boolean
        status_info:
          type: object
          properties:
            code:
              type: string
            metadata:
              type: object
              additionalProperties: true
    BookingUploadRequest:
      type: object
      required:
      - doc_no
      - doc_type
      - carrier_no
      properties:
        doc_no:
          type: string
          description: Booking or bill of lading number.
        doc_type:
          type: string
          enum:
          - BK
          - BL
          description: BK for booking, BL for bill of lading.
        carrier_no:
          type: string
          description: Carrier SCAC code or synonym; use AUTO to auto-detect.
        callback_url:
          type: string
          format: uri
          description: HTTPS endpoint for Push updates.
        custom_fields:
          type: object
          additionalProperties: true
    ContainerUploadRequest:
      type: object
      required:
      - cntr_no
      - carrier_no
      properties:
        cntr_no:
          type: string
          description: Container number (ISO 6346).
        carrier_no:
          type: string
          description: Carrier SCAC code or synonym; use AUTO to auto-detect.
        bl_no:
          type: string
          description: Master bill of lading or booking number.
        callback_url:
          type: string
          format: uri
          description: HTTPS endpoint Portcast posts the tracking JSON object to whenever there are updates (Push API).
        custom_fields:
          type: object
          additionalProperties: true
          description: Optional augmentation data attached to the bookmark.
  parameters:
    XCustomer:
      name: x-customer
      in: header
      required: false
      schema:
        type: string
      description: Enterprise-only header indicating which sub-account / flow the call applies to.
    BookmarkId:
      name: bookmark_id
      in: path
      required: true
      schema:
        type: string
      description: The bill-of-lading bookmark id returned by an upload call.
  responses:
    Unauthorized:
      description: Missing or invalid API key.
      content:
        application/json:
          schema:
            type: object
            properties:
              message:
                type: string
  securitySchemes:
    x-api-key:
      type: apiKey
      in: header
      name: x-api-key
      description: API key issued by Portcast, sent in the x-api-key request header.