# 4. Request Pickups

Create Pickup Orders (Bulk) — Submit multiple orders for pickup by orderId or invoiceNumber. Processes in batch; returns requestId/batchId, per-order outcomes (accepted/skipped/errors), and a summary in the standard response envelope.

Overview

HMACASYNC
Auth
HMAC Partner
Method
POST

# Path

https://partners-api.tocobagus.net/api/v1 /partner/stores/orders/pickups

# Request

Query parameters: None.

# Required Headers

Header Example Description
x-signature bdbb8833fe43671e058b56dace75763a78a2edf8de7365afb6f534d750056e80 HMAC signature of the request, computed with the partner secret and x-timestamp (auth integrity).
x-partner-client-id ptnr_1s4UqMnO64 Partner identifier issued by Omni; used to locate the partner secret.
x-store-client-id store_NB5DgDcEoWEu Target store identifier under the partner account.
x-store-token stkn_Xfe-j_OKH5H2Xg66 Store access token for store-level authorization.
x-timestamp 1758100350458 UNIX epoch timestamp used when computing x-signature (replay protection).

# Request Payload

Content-Type: application/json

# Example Body Payload

{
  "items": [
    {
      "orderId": "d0e11047-acaf-468f-a325-3d2f5964f5ff"
    },
    {
      "orderId": "2724cd1c-0b3a-4ec1-bed1-e46bcf53cc69"
    },
    {
      "invoiceNumber": "INV-12345678"
    }
  ]
}

# Example Request

curl -X POST "http:///partner/stores/orders/pickups" \
  -H "Content-Type: application/json" \
  -H "x-signature: bdbb8833fe43671e058b56dace75763a78a2edf8de7365afb6f534d750056e80" \
  -H "x-partner-client-id: ptnr_1s4UqMnO64" \
  -H "x-store-client-id: store_NB5DgDcEoWEu" \
  -H "x-store-token: stkn_Xfe-j_OKH5H2Xg66" \
  -H "x-timestamp: 1758100350458" \
  --data '{"items":[{"orderId":"d0e11047-acaf-468f-a325-3d2f5964f5ff"}]}'
const qs = new URLSearchParams({});
const url = "http:///partner/stores/orders/pickups" + (qs.toString() ? "?" + qs.toString() : "");
const res = await fetch(url, {
  method: "POST",
  headers: {
  "x-signature": "bdbb8833fe43671e058b56dace75763a78a2edf8de7365afb6f534d750056e80",
  "x-partner-client-id": "ptnr_1s4UqMnO64",
  "x-store-client-id": "store_NB5DgDcEoWEu",
  "x-store-token": "stkn_Xfe-j_OKH5H2Xg66",
  "x-timestamp": "1758100350458"
},
  body: JSON.stringify({"items":[{"orderId":"d0e11047-acaf-468f-a325-3d2f5964f5ff"}]})
});
const json = await res.json();
console.log(json);
qs := url.Values{}

u := "http:///partner/stores/orders/pickups"
if q := qs.Encode(); q != "" { u = u + "?" + q }
req, _ := http.NewRequest("POST", u, bytes.NewBufferString("{\"items\":[{\"orderId\":\"d0e11047-acaf-468f-a325-3d2f5964f5ff\"}]}"))
req.Header.Set("x-signature", "bdbb8833fe43671e058b56dace75763a78a2edf8de7365afb6f534d750056e80")
req.Header.Set("x-partner-client-id", "ptnr_1s4UqMnO64")
req.Header.Set("x-store-client-id", "store_NB5DgDcEoWEu")
req.Header.Set("x-store-token", "stkn_Xfe-j_OKH5H2Xg66")
req.Header.Set("x-timestamp", "1758100350458")
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
b, _ := io.ReadAll(resp.Body)
fmt.Println(string(b))
var client = java.net.http.HttpClient.newHttpClient();
var req = java.net.http.HttpRequest.newBuilder()
    .uri(java.net.URI.create("http:///partner/stores/orders/pickups"))
    .header("Content-Type","application/json")
    .header("x-signature", "bdbb8833fe43671e058b56dace75763a78a2edf8de7365afb6f534d750056e80")
    .header("x-partner-client-id", "ptnr_1s4UqMnO64")
    .header("x-store-client-id", "store_NB5DgDcEoWEu")
    .header("x-store-token", "stkn_Xfe-j_OKH5H2Xg66")
    .header("x-timestamp", "1758100350458")
    .method("POST", java.net.http.HttpRequest.BodyPublishers.ofString("{\"items\":[{\"orderId\":\"d0e11047-acaf-468f-a325-3d2f5964f5ff\"}]}"))
    .build();
var res = client.send(req, java.net.http.HttpResponse.BodyHandlers.ofString());
System.out.println(res.body());

# Responses

# Example Responses

{
  "success": true,
  "message": "Some items accepted; some rejected.",
  "requestId": "fca3ca95-c2c3-4c52-86f5-4d63565d10d8",
  "meta": {
    "timestamp": "2025-08-19T05:52:45.305Z"
  },
  "data": {
    "requestId": "fca3ca95-c2c3-4c52-86f5-4d63565d10d8",
    "batchId": "fca3ca95-c2c3-4c52-86f5-4d63565d10d8",
    "summary": {
      "total": 2,
      "accepted": 1,
      "skipped": 1
    },
    "errors": [
      {
        "orderId": "2724cd1c-0b3a-4ec1-bed1-e46bcf53cc69",
        "reason": "STATUS_NOT_ALLOWED",
        "message": "Order status 'cancelled' not eligible for pickup."
      }
    ]
  }
}
{
  "success": false,
  "error": {
    "code": "ORDER_026",
    "message": "No items are eligible for pickup",
    "details": {
      "timestamp": "2025-08-18T08:48:02.320Z",
      "hint": "All items failed validation",
      "context": {
        "summary": {
          "total": 2,
          "accepted": 0,
          "skipped": 2
        },
        "errors": [
          {
            "orderId": "1cc2ef8d-70e4-4cc4-be96-74659c03b165",
            "reason": "STATUS_NOT_ALLOWED",
            "message": "Order status 'pending' not eligible for pickup."
          },
          {
            "orderId": "2724cd1c-0b3a-4ec1-bed1-e46bcf53cc69",
            "reason": "STATUS_NOT_ALLOWED",
            "message": "Order status 'pending' not eligible for pickup."
          }
        ]
      }
    }
  },
  "requestId": "b1e0a58f-ad49-4b59-b5ad-4bf5b03d15fc"
}

# Dictionary

None for this endpoint.

# Notes

None for this endpoint.