Thai Nexus logo

Partner REST API

Partner Pickup API

Integrate pickup requests and saved pickup addresses for partner accounts (client_type: partner). Both pickup requests and international shipments use the same shipmentCrud endpoint. Pickup calls are routed automatically when you use pickup-specific fields or set api_scope.

Endpoint

Production URL (POST only):

https://app.thainexus.co.th/functions/shipmentCrud

Request envelope

FieldDescription
api_tokenRequired. Partner token from Profile > API tab (tnx_...). Bearer header also works.
actionRequired. e.g. verify_account, create, list, get
api_scopeRequired for pickup list/get ("pickup") and address CRUD ("address")
dataRequired for create/update. Pickup fields go inside data, not at top level

Identifiers

FieldDescription
pickup_numberPU-XXXXXX format. From create response or list. Use for get, cancel, get_tracking.
id (pickup)24-char hex. Alternative to pickup_number for get.
destination_selectiontnx:{branchId} or partner:{warehouseId}. Copy exactly from list_destinations.
id (address)24-char hex from address list or create. Use for address get, update, delete.
waybill_numberYour reference string. You provide it on create.

Recommended workflow

  1. verify_account - confirm token works and account is partner
  2. allowed_cities - (optional) confirm pickup city is served
  3. list_destinations - get a real destination_selection value
  4. quote_fee - (optional) estimate fee before create
  5. create - submit pickup using values from list_destinations
  6. list / get - read back pickup_number for tracking or cancel
  7. get_tracking - only after staff approval assigns tracking code
  • Set api_scope: pickup for list and get pickup requests.
  • Set api_scope: address for all saved address CRUD calls.
  • Pickup routing also triggers when action is verify_account, allowed_cities, list_destinations, quote_fee, get_tracking, or cancel.
  • If you see shipper_address required on create, pickup was not routed. Include data.pickup_location, data.destination_selection, and data.waybill_number.

Authentication

  1. 01

    Partner account required

    Pickup API is available only to partner accounts (client_type: partner). Standard client tokens return HTTP 403.

  2. 02

    Generate an API token

    In the client app, open Profile > API tab and copy your tnx_... token. Keep it secret. Do not embed tokens in public frontend code.

  3. 03

    Authenticate requests

    Include api_token in every JSON body, or send Authorization: Bearer tnx_... . All calls use POST with Content-Type: application/json.

API playground

Run live calls against production shipmentCrud through this site proxy. Paste your partner tnx_ token below. Tokens stay in your browser session only.

Pickup request actions

verify_account

POST /shipmentCrud

Full endpoint: https://app.thainexus.co.th/functions/shipmentCrud

Confirms token and partner account type.

Auth: api_token in body or Bearer header

Example request

{
  "api_token": "tnx_...",
  "action": "verify_account"
}

Example response

{
  "success": true,
  "account": {
    "user_email": "partner@example.com",
    "partner_id": "abc123",
    "partner_name": "Example Partner",
    "client_type": "partner"
  }
}

list_destinations

POST /shipmentCrud

Full endpoint: https://app.thainexus.co.th/functions/shipmentCrud

Returns read-only destination options. Copy destination_selection exactly from tnx_branches[] or partner_branches[].

Auth: api_token

Example request

{
  "api_token": "tnx_...",
  "action": "list_destinations"
}

quote_fee

POST /shipmentCrud

Full endpoint: https://app.thainexus.co.th/functions/shipmentCrud

Estimate pickup fee before creating a request.

Auth: api_token

Request fields

FieldDescription
cityPickup city (must be in allowed cities)
items[]Parcel lines with description, quantity, weight_kg, length_cm, width_cm, height_cm

Example request

{
  "api_token": "tnx_...",
  "action": "quote_fee",
  "city": "Bangkok",
  "items": [{
    "description": "Box",
    "quantity": 1,
    "weight_kg": 2.5,
    "length_cm": 30,
    "width_cm": 20,
    "height_cm": 15
  }]
}

create

POST /shipmentCrud

Full endpoint: https://app.thainexus.co.th/functions/shipmentCrud

Creates a pickup request. Run list_destinations first and copy a real destination_selection.

Auth: api_token

Request fields

FieldDescription
data.pickup_location or data.pickup_address_idInline contact + address, or saved address id
data.destination_selectionFrom list_destinations (tnx:... or partner:...)
data.waybill_numberYour reference / waybill number
data.items[] or data.parcels[]At least one parcel with weight and all dimensions

Example request

{
  "api_token": "tnx_...",
  "action": "create",
  "data": {
    "pickup_location": {
      "contact_name": "John Doe",
      "contact_phone": "+66812345678",
      "address_line1": "123 Sukhumvit Road",
      "city": "Bangkok",
      "postal_code": "10110"
    },
    "destination_selection": "tnx:69a5bdade602b67c968f2ef6",
    "waybill_number": "WB123456789",
    "items": [{
      "description": "Electronics box",
      "quantity": 1,
      "weight_kg": 2.5,
      "length_cm": 30,
      "width_cm": 20,
      "height_cm": 15
    }]
  }
}

list

POST /shipmentCrud

Full endpoint: https://app.thainexus.co.th/functions/shipmentCrud

Paginated list of your partner account pickup requests. Always set api_scope: pickup.

Auth: api_token + api_scope: pickup

Example request

{
  "api_token": "tnx_...",
  "api_scope": "pickup",
  "action": "list",
  "page": 1,
  "limit": 20
}

get

POST /shipmentCrud

Full endpoint: https://app.thainexus.co.th/functions/shipmentCrud

Fetch one pickup by pickup_number (preferred) or internal id.

Auth: api_token + api_scope: pickup

Example request

{
  "api_token": "tnx_...",
  "api_scope": "pickup",
  "action": "get",
  "pickup_number": "PU-NWU19Y"
}

cancel

POST /shipmentCrud

Full endpoint: https://app.thainexus.co.th/functions/shipmentCrud

Cancel an open pickup (pending, requested, or confirmed). reason is required.

Auth: api_token

Example request

{
  "api_token": "tnx_...",
  "action": "cancel",
  "pickup_number": "PU-ABC123",
  "reason": "Customer rescheduled"
}

get_tracking

POST /shipmentCrud

Full endpoint: https://app.thainexus.co.th/functions/shipmentCrud

Live tracking after staff approval assigns a tracking code.

Auth: api_token

Example request

{
  "api_token": "tnx_...",
  "action": "get_tracking",
  "pickup_number": "PU-ABC123"
}

Saved pickup addresses

Use api_scope address for all address CRUD calls. Reference pickup_address_id on create to reuse a saved location.

list

POST /shipmentCrud

Full endpoint: https://app.thainexus.co.th/functions/shipmentCrud

List saved pickup addresses for your partner account.

Example request

{
  "api_token": "tnx_...",
  "api_scope": "address",
  "action": "list",
  "page": 1,
  "limit": 20
}

create

POST /shipmentCrud

Full endpoint: https://app.thainexus.co.th/functions/shipmentCrud

Create a saved pickup address. City must be in the allowed service area.

Example request

{
  "api_token": "tnx_...",
  "api_scope": "address",
  "action": "create",
  "data": {
    "address_name": "Bangkok Warehouse",
    "contact_name": "John Doe",
    "contact_phone": "+66812345678",
    "address_line1": "456 Warehouse Lane",
    "city": "Bangkok",
    "postal_code": "10110"
  }
}

Service area

Pickup is Thailand only. The pickup city must be in the allowed service area.

  • Bangkok
  • Hua Hin
  • Pran Buri
  • Cha-am
  • Tha Yang
  • Ban Lat
  • Phetchaburi
  • Khao Yoi
  • Pak Tho
  • Samut Songkhram
  • Samut Sakhon

Errors

HTTP status codes

FieldDescription
400Validation error (missing field, invalid city, bad destination_selection)
401Missing or invalid api_token
403Token valid but account is not a partner
404Pickup request or address not found
502Tracking app temporarily unavailable (get_tracking)

Partner Pickup FAQ