Delphi DLL EasyPost: Create an Order

Back to Index

Create an EasyPost order.

Documentation: https://www.easypost.com/docs/api#create-an-order

CURL Command

curl -X POST https://api.easypost.com/v2/orders \
  -u <YOUR_TEST/PRODUCTION_API_KEY>: \
  -d "order[to_address][id]=adr_..." \
  -d "order[from_address][id]=adr_..." \
  -d "order[shipments][0][parcel][predefined_package]=FedExBox" \
  -d "order[shipments][0][parcel][weight]=10.2" \
  -d "order[shipments][1][parcel][predefined_package]=FedExBox" \
  -d "order[shipments][1][parcel][weight]=17.5"

Delphi DLL Example

var
rest: HCkRest;
success: Boolean;
bTls: Boolean;
port: Integer;
bAutoReconnect: Boolean;
strResponseBody: PWideChar;
jsonResponse: HCkJsonObject;
id: PWideChar;
mode: PWideChar;
reference: Boolean;
is_return: Boolean;
optionsCurrency: PWideChar;
optionsLabel_date: Boolean;
created_at: PWideChar;
updated_at: PWideChar;
customs_info: Boolean;
object: PWideChar;
i: Integer;
count_i: Integer;
status: PWideChar;
tracking_code: Boolean;
batch_id: Boolean;
batch_status: Boolean;
batch_message: Boolean;
parcelId: PWideChar;
parcelObject: PWideChar;
parcelLength: Integer;
parcelWidth: Integer;
parcelHeight: Integer;
parcelPredefined_package: Boolean;
parcelWeight: Integer;
parcelCreated_at: PWideChar;
parcelUpdated_at: PWideChar;
postage_label: Boolean;
refund_status: Boolean;
scan_form: Boolean;
selected_rate: Boolean;
tracker: Boolean;
j: Integer;
count_j: Integer;
created_at_bool: Boolean;
updated_at_bool: Boolean;
service: PWideChar;
carrier: PWideChar;
rate: PWideChar;
currency: PWideChar;
retail_rate: Boolean;
retail_currency: Boolean;
list_rate: Boolean;
list_currency: Boolean;
delivery_days: Integer;
delivery_date: PWideChar;
delivery_date_guaranteed: Boolean;
est_delivery_days: Boolean;
shipment_id: PWideChar;
carrier_account_id: PWideChar;

begin
rest := CkRest_Create();

//  URL: https://api.easypost.com/v2/orders
bTls := True;
port := 443;
bAutoReconnect := True;
success := CkRest_Connect(rest,'api.easypost.com',port,bTls,bAutoReconnect);
if (success <> True) then
  begin
    Memo1.Lines.Add('ConnectFailReason: ' + IntToStr(CkRest_getConnectFailReason(rest)));
    Memo1.Lines.Add(CkRest__lastErrorText(rest));
    Exit;
  end;

CkRest_SetAuthBasic(rest,'<YOUR_TEST/PRODUCTION_API_KEY>','');

CkRest_AddQueryParam(rest,'order[to_address][id]','adr_...');
CkRest_AddQueryParam(rest,'order[from_address][id]','adr_...');
CkRest_AddQueryParam(rest,'order[shipments][0][parcel][predefined_package]','FedExBox');
CkRest_AddQueryParam(rest,'order[shipments][0][parcel][weight]','10.2');
CkRest_AddQueryParam(rest,'order[shipments][1][parcel][predefined_package]','FedExBox');
CkRest_AddQueryParam(rest,'order[shipments][1][parcel][weight]','17.5');

strResponseBody := CkRest__fullRequestFormUrlEncoded(rest,'POST','/v2/orders');
if (CkRest_getLastMethodSuccess(rest) <> True) then
  begin
    Memo1.Lines.Add(CkRest__lastErrorText(rest));
    Exit;
  end;

jsonResponse := CkJsonObject_Create();
CkJsonObject_Load(jsonResponse,strResponseBody);

id := CkJsonObject__stringOf(jsonResponse,'id');
mode := CkJsonObject__stringOf(jsonResponse,'mode');
reference := CkJsonObject_IsNullOf(jsonResponse,'reference');
is_return := CkJsonObject_BoolOf(jsonResponse,'is_return');
optionsCurrency := CkJsonObject__stringOf(jsonResponse,'options.currency');
optionsLabel_date := CkJsonObject_IsNullOf(jsonResponse,'options.label_date');
created_at := CkJsonObject__stringOf(jsonResponse,'created_at');
updated_at := CkJsonObject__stringOf(jsonResponse,'updated_at');
customs_info := CkJsonObject_IsNullOf(jsonResponse,'customs_info');
object := CkJsonObject__stringOf(jsonResponse,'object');
i := 0;
count_i := CkJsonObject_SizeOfArray(jsonResponse,'messages');
while i < count_i do
  begin
CkJsonObject_putI(jsonResponse,i);
    i := i + 1;
  end;

i := 0;
count_i := CkJsonObject_SizeOfArray(jsonResponse,'shipments');
while i < count_i do
  begin
CkJsonObject_putI(jsonResponse,i);
    id := CkJsonObject__stringOf(jsonResponse,'shipments[i].id');
    created_at := CkJsonObject__stringOf(jsonResponse,'shipments[i].created_at');
    updated_at := CkJsonObject__stringOf(jsonResponse,'shipments[i].updated_at');
    is_return := CkJsonObject_BoolOf(jsonResponse,'shipments[i].is_return');
    mode := CkJsonObject__stringOf(jsonResponse,'shipments[i].mode');
    optionsCurrency := CkJsonObject__stringOf(jsonResponse,'shipments[i].options.currency');
    optionsLabel_date := CkJsonObject_IsNullOf(jsonResponse,'shipments[i].options.label_date');
    reference := CkJsonObject_IsNullOf(jsonResponse,'shipments[i].reference');
    status := CkJsonObject__stringOf(jsonResponse,'shipments[i].status');
    tracking_code := CkJsonObject_IsNullOf(jsonResponse,'shipments[i].tracking_code');
    batch_id := CkJsonObject_IsNullOf(jsonResponse,'shipments[i].batch_id');
    batch_status := CkJsonObject_IsNullOf(jsonResponse,'shipments[i].batch_status');
    batch_message := CkJsonObject_IsNullOf(jsonResponse,'shipments[i].batch_message');
    parcelId := CkJsonObject__stringOf(jsonResponse,'shipments[i].parcel.id');
    parcelObject := CkJsonObject__stringOf(jsonResponse,'shipments[i].parcel.object');
    parcelLength := CkJsonObject_IntOf(jsonResponse,'shipments[i].parcel.length');
    parcelWidth := CkJsonObject_IntOf(jsonResponse,'shipments[i].parcel.width');
    parcelHeight := CkJsonObject_IntOf(jsonResponse,'shipments[i].parcel.height');
    parcelPredefined_package := CkJsonObject_IsNullOf(jsonResponse,'shipments[i].parcel.predefined_package');
    parcelWeight := CkJsonObject_IntOf(jsonResponse,'shipments[i].parcel.weight');
    parcelCreated_at := CkJsonObject__stringOf(jsonResponse,'shipments[i].parcel.created_at');
    parcelUpdated_at := CkJsonObject__stringOf(jsonResponse,'shipments[i].parcel.updated_at');
    customs_info := CkJsonObject_IsNullOf(jsonResponse,'shipments[i].customs_info');
    postage_label := CkJsonObject_IsNullOf(jsonResponse,'shipments[i].postage_label');
    refund_status := CkJsonObject_IsNullOf(jsonResponse,'shipments[i].refund_status');
    scan_form := CkJsonObject_IsNullOf(jsonResponse,'shipments[i].scan_form');
    selected_rate := CkJsonObject_IsNullOf(jsonResponse,'shipments[i].selected_rate');
    tracker := CkJsonObject_IsNullOf(jsonResponse,'shipments[i].tracker');
    object := CkJsonObject__stringOf(jsonResponse,'shipments[i].object');
    j := 0;
    count_j := CkJsonObject_SizeOfArray(jsonResponse,'shipments[i].messages');
    while j < count_j do
      begin
CkJsonObject_putJ(jsonResponse,j);
        j := j + 1;
      end;

    j := 0;
    count_j := CkJsonObject_SizeOfArray(jsonResponse,'shipments[i].rates');
    while j < count_j do
      begin
CkJsonObject_putJ(jsonResponse,j);
        id := CkJsonObject__stringOf(jsonResponse,'shipments[i].rates[j].id');
        object := CkJsonObject__stringOf(jsonResponse,'shipments[i].rates[j].object');
        created_at_bool := CkJsonObject_IsNullOf(jsonResponse,'shipments[i].rates[j].created_at');
        updated_at_bool := CkJsonObject_IsNullOf(jsonResponse,'shipments[i].rates[j].updated_at');
        mode := CkJsonObject__stringOf(jsonResponse,'shipments[i].rates[j].mode');
        service := CkJsonObject__stringOf(jsonResponse,'shipments[i].rates[j].service');
        carrier := CkJsonObject__stringOf(jsonResponse,'shipments[i].rates[j].carrier');
        rate := CkJsonObject__stringOf(jsonResponse,'shipments[i].rates[j].rate');
        currency := CkJsonObject__stringOf(jsonResponse,'shipments[i].rates[j].currency');
        retail_rate := CkJsonObject_IsNullOf(jsonResponse,'shipments[i].rates[j].retail_rate');
        retail_currency := CkJsonObject_IsNullOf(jsonResponse,'shipments[i].rates[j].retail_currency');
        list_rate := CkJsonObject_IsNullOf(jsonResponse,'shipments[i].rates[j].list_rate');
        list_currency := CkJsonObject_IsNullOf(jsonResponse,'shipments[i].rates[j].list_currency');
        delivery_days := CkJsonObject_IntOf(jsonResponse,'shipments[i].rates[j].delivery_days');
        delivery_date := CkJsonObject__stringOf(jsonResponse,'shipments[i].rates[j].delivery_date');
        delivery_date_guaranteed := CkJsonObject_BoolOf(jsonResponse,'shipments[i].rates[j].delivery_date_guaranteed');
        est_delivery_days := CkJsonObject_IsNullOf(jsonResponse,'shipments[i].rates[j].est_delivery_days');
        shipment_id := CkJsonObject__stringOf(jsonResponse,'shipments[i].rates[j].shipment_id');
        carrier_account_id := CkJsonObject__stringOf(jsonResponse,'shipments[i].rates[j].carrier_account_id');
        j := j + 1;
      end;

    j := 0;
    count_j := CkJsonObject_SizeOfArray(jsonResponse,'shipments[i].forms');
    while j < count_j do
      begin
CkJsonObject_putJ(jsonResponse,j);
        j := j + 1;
      end;

    j := 0;
    count_j := CkJsonObject_SizeOfArray(jsonResponse,'shipments[i].fees');
    while j < count_j do
      begin
CkJsonObject_putJ(jsonResponse,j);
        j := j + 1;
      end;

    i := i + 1;
  end;

i := 0;
count_i := CkJsonObject_SizeOfArray(jsonResponse,'rates');
while i < count_i do
  begin
CkJsonObject_putI(jsonResponse,i);
    id := CkJsonObject__stringOf(jsonResponse,'rates[i].id');
    object := CkJsonObject__stringOf(jsonResponse,'rates[i].object');
    created_at_bool := CkJsonObject_IsNullOf(jsonResponse,'rates[i].created_at');
    updated_at_bool := CkJsonObject_IsNullOf(jsonResponse,'rates[i].updated_at');
    mode := CkJsonObject__stringOf(jsonResponse,'rates[i].mode');
    service := CkJsonObject__stringOf(jsonResponse,'rates[i].service');
    carrier := CkJsonObject__stringOf(jsonResponse,'rates[i].carrier');
    rate := CkJsonObject__stringOf(jsonResponse,'rates[i].rate');
    currency := CkJsonObject__stringOf(jsonResponse,'rates[i].currency');
    retail_rate := CkJsonObject_IsNullOf(jsonResponse,'rates[i].retail_rate');
    retail_currency := CkJsonObject_IsNullOf(jsonResponse,'rates[i].retail_currency');
    list_rate := CkJsonObject_IsNullOf(jsonResponse,'rates[i].list_rate');
    list_currency := CkJsonObject_IsNullOf(jsonResponse,'rates[i].list_currency');
    delivery_days := CkJsonObject_IntOf(jsonResponse,'rates[i].delivery_days');
    delivery_date := CkJsonObject__stringOf(jsonResponse,'rates[i].delivery_date');
    delivery_date_guaranteed := CkJsonObject_BoolOf(jsonResponse,'rates[i].delivery_date_guaranteed');
    est_delivery_days := CkJsonObject_IsNullOf(jsonResponse,'rates[i].est_delivery_days');
    shipment_id := CkJsonObject__stringOf(jsonResponse,'rates[i].shipment_id');
    carrier_account_id := CkJsonObject__stringOf(jsonResponse,'rates[i].carrier_account_id');
    i := i + 1;
  end;

CkRest_Dispose(rest);
CkJsonObject_Dispose(jsonResponse);

Sample JSON Response Body

{
  "id": "order_b39d44e7059a46c8a787174e8320bf1c",
  "mode": "test",
  "reference": null,
  "is_return": false,
  "options": {
    "currency": "USD",
    "label_date": null
  },
  "messages": [
  ],
  "created_at": "2016-02-17T02:51:04Z",
  "updated_at": "2016-02-17T02:51:04Z",
  "customs_info": null,
  "to_address": {},
  "from_address": {},
  "buyer_address": {},
  "return_address": {},
  "shipments": [
    {
      "id": "shp_7a387659db374a8ea197d7bba3009d5d",
      "created_at": "2016-02-17T02:51:04Z",
      "updated_at": "2016-02-17T02:51:10Z",
      "is_return": false,
      "messages": [
      ],
      "mode": "test",
      "options": {
        "currency": "USD",
        "label_date": null
      },
      "reference": null,
      "status": "unknown",
      "tracking_code": null,
      "batch_id": null,
      "batch_status": null,
      "batch_message": null,
      "parcel": {
        "id": "prcl_071994637e1046ab98a79f96d8b26488",
        "object": "Parcel",
        "length": 20.2,
        "width": 10.9,
        "height": 5.0,
        "predefined_package": null,
        "weight": 17.5,
        "created_at": "2013-04-22T05:39:57Z",
        "updated_at": "2013-04-22T05:39:57Z"
      },
      "customs_info": null,
      "to_address": {},
      "from_address": {},
      "buyer_address": {},
      "return_address": {},
      "postage_label": null,
      "rates": [
        {
          "id": "rate_1f168714581b40af965dd740ddf35f69",
          "object": "Rate",
          "created_at": null,
          "updated_at": null,
          "mode": "test",
          "service": "PRIORITY_OVERNIGHT",
          "carrier": "FedEx",
          "rate": "47.36",
          "currency": "USD",
          "retail_rate": null,
          "retail_currency": null,
          "list_rate": null,
          "list_currency": null,
          "delivery_days": 1,
          "delivery_date": "2016-02-18T10:30:00Z",
          "delivery_date_guaranteed": true,
          "est_delivery_days": null,
          "shipment_id": "shp_b701a9da21424a5f85a09530c9f924aa",
          "carrier_account_id": "ca_f02596dcabbb46a8ba823280efc277bb"
        },
        {
          "id": "rate_1567998062c445ab909daf872461d15e",
          "object": "Rate",
          "created_at": null,
          "updated_at": null,
          "mode": "test",
          "service": "STANDARD_OVERNIGHT",
          "carrier": "FedEx",
          "rate": "118.00",
          "currency": "USD",
          "retail_rate": null,
          "retail_currency": null,
          "list_rate": null,
          "list_currency": null,
          "delivery_days": 1,
          "delivery_date": "2016-02-18T15:00:00Z",
          "delivery_date_guaranteed": true,
          "est_delivery_days": null,
          "shipment_id": "shp_b701a9da21424a5f85a09530c9f924aa",
          "carrier_account_id": "ca_f02596dcabbb46a8ba823280efc277bb"
        },
        {
          "id": "rate_f9a9706f99754609a60b2ec512e82cbf",
          "object": "Rate",
          "created_at": null,
          "updated_at": null,
          "mode": "test",
          "service": "FEDEX_GROUND",
          "carrier": "FedEx",
          "rate": "17.96",
          "currency": "USD",
          "retail_rate": null,
          "retail_currency": null,
          "list_rate": null,
          "list_currency": null,
          "delivery_days": 4,
          "delivery_date": null,
          "delivery_date_guaranteed": false,
          "est_delivery_days": null,
          "shipment_id": "shp_b701a9da21424a5f85a09530c9f924aa",
          "carrier_account_id": "ca_f02596dcabbb46a8ba823280efc277bb"
        }
      ],
      "refund_status": null,
      "scan_form": null,
      "selected_rate": null,
      "tracker": null,
      "forms": [
      ],
      "fees": [
      ],
      "object": "Shipment"
    },
    {
      "id": "shp_b25c22b64a7f45bd859e826d3701471c",
      "created_at": "2016-02-17T02:51:04Z",
      "updated_at": "2016-02-17T02:51:10Z",
      "is_return": false,
      "messages": [
      ],
      "mode": "test",
      "options": {
        "currency": "USD",
        "label_date": null
      },
      "reference": null,
      "status": "unknown",
      "tracking_code": null,
      "batch_id": null,
      "batch_status": null,
      "batch_message": null,
      "parcel": {
        "id": "prcl_307ea2f3486544e58d5496fc840f6376",
        "object": "Parcel",
        "length": 7.2,
        "width": 1.9,
        "height": 1.0,
        "predefined_package": null,
        "weight": 10.8,
        "created_at": "2013-04-22T05:39:57Z",
        "updated_at": "2013-04-22T05:39:57Z"
      },
      "customs_info": null,
      "to_address": {},
      "from_address": {},
      "buyer_address": {},
      "return_address": {},
      "postage_label": null,
      "rates": [
      ],
      "refund_status": null,
      "scan_form": null,
      "selected_rate": null,
      "tracker": null,
      "forms": [
      ],
      "fees": [
      ],
      "object": "Shipment"
    }
  ],
  "rates": [
    {
      "id": "rate_1f168714581b40af965dd740ddf35f69",
      "object": "Rate",
      "created_at": null,
      "updated_at": null,
      "mode": "test",
      "service": "PRIORITY_OVERNIGHT",
      "carrier": "FedEx",
      "rate": "47.36",
      "currency": "USD",
      "retail_rate": null,
      "retail_currency": null,
      "list_rate": null,
      "list_currency": null,
      "delivery_days": 1,
      "delivery_date": "2016-02-18T10:30:00Z",
      "delivery_date_guaranteed": true,
      "est_delivery_days": null,
      "shipment_id": "shp_7a387659db374a8ea197d7bba3009d5d",
      "carrier_account_id": "ca_f02596dcabbb46a8ba823280efc277bb"
    },
    {
      "id": "rate_1567998062c445ab909daf872461d15e",
      "object": "Rate",
      "created_at": null,
      "updated_at": null,
      "mode": "test",
      "service": "STANDARD_OVERNIGHT",
      "carrier": "FedEx",
      "rate": "118.00",
      "currency": "USD",
      "retail_rate": null,
      "retail_currency": null,
      "list_rate": null,
      "list_currency": null,
      "delivery_days": 1,
      "delivery_date": "2016-02-18T15:00:00Z",
      "delivery_date_guaranteed": true,
      "est_delivery_days": null,
      "shipment_id": "shp_7a387659db374a8ea197d7bba3009d5d",
      "carrier_account_id": "ca_f02596dcabbb46a8ba823280efc277bb"
    },
    {
      "id": "rate_f9a9706f99754609a60b2ec512e82cbf",
      "object": "Rate",
      "created_at": null,
      "updated_at": null,
      "mode": "test",
      "service": "FEDEX_GROUND",
      "carrier": "FedEx",
      "rate": "17.96",
      "currency": "USD",
      "retail_rate": null,
      "retail_currency": null,
      "list_rate": null,
      "list_currency": null,
      "delivery_days": 4,
      "delivery_date": null,
      "delivery_date_guaranteed": false,
      "est_delivery_days": null,
      "shipment_id": "shp_7a387659db374a8ea197d7bba3009d5d",
      "carrier_account_id": "ca_f02596dcabbb46a8ba823280efc277bb"
    }
  ],
  "object": "Order"
}