Endpoints
| Method | Endpoint | Result |
|---|---|---|
| GET | /apiListOrders | 100 most recent orders |
| POST | /apiCreateOrder | Creates order; charges saved card |
| GET | /apiGetOrder?order_id=... | Order, tracking and machine |
| POST | /apiCancelOrder | Cancel within the cancellation rules |
| GET | /apiListMachines | Up to 200 devices |
List orders
curl 'https://app.shiplytech.com/functions/apiListOrders' -H 'X-API-Key: stk_your_key_here'Response: org_id, count, orders[]. Each order has id, order_number, status, total_amount, recipient_name, recipient_email, ship_to_country and created_date.
Create an order
POST /apiCreateOrder. employee and company are required.
| Field | Accepted values / fields |
|---|---|
| employee | Required: name, email, street, city, state, postal_code. country defaults to US. Optional: street2, phone. |
| company (destination) | Required: name, street, city, state, postal_code, country. Optional: company, street2. |
| device_type | laptop (default), bulk_laptop, monitor, imac_24, peripherals. No standalone phone. Outside US only laptop. |
| add_peripherals | true or false. Adds a peripherals box to the same order: $25 with a laptop, monitor, iMac or 5-slot box; $30 when ordered alone. |
| intent | return (default), warehouse, laptop_disposal. All three intents are available. Peripherals boxes are allowed on return orders only. |
| pickup_type | future_day ($15), same_day ($20). |
| device | serial, ticket |
| return_prefs | company_name, cc_emails (array), additional_instructions, ask_charger (boolean), ask_phone (boolean; laptop or 5-slot box only, $9), disable_reminders (boolean) |
| internal | note1, note2 (not shown to employee), legal_hold_days |
curl -X POST https://app.shiplytech.com/functions/apiCreateOrder \
-H 'X-API-Key: stk_your_key_here' \
-H 'Content-Type: application/json' \
-d '{"employee":{"name":"Jane Doe","email":"jane@example.com","street":"123 Example Street","city":"Austin","state":"TX","postal_code":"78701","country":"US"},"company":{"name":"Example Company","street":"456 Example Road","city":"Austin","state":"TX","postal_code":"78701","country":"US"},"device_type":"laptop","intent":"return"}' The employee address is carrier-verified. Unverifiable addresses fail with carrier messages. Success fields: order_id, order_number, status (paid), payment_status (paid), total_amount, invoice_id, hosted_invoice_url. A missing or declined card returns an error; the order remains unpaid and no labels are bought. A failed charge also returns order_id and order_number.
Get an order
curl 'https://app.shiplytech.com/functions/apiGetOrder?order_id=example-order-id' -H 'X-API-Key: stk_your_key_here'order: id, order_number, status, payment_status, total_amount, recipient_name, recipient_email, ship_to_country, device_type, intent, created_date, paid_at.
tracking: outbound and return, each with tracking_number and carrier, or null. machine: id, status, serial_number, asset_tag, or null. A machine exists once the device has been checked in at the ShiplyTech warehouse.
Cancel an order
curl -X POST https://app.shiplytech.com/functions/apiCancelOrder -H 'X-API-Key: stk_your_key_here' -H 'Content-Type: application/json' -d '{"order_id":"example-order-id"}'Success: {"ok": true}. Cancellation is available within 30 minutes after payment while paid or label-created, before the box ships. Both labels are voided and the charge is fully refunded.
List machines
curl https://app.shiplytech.com/functions/apiListMachines -H 'X-API-Key: stk_your_key_here'Up to 200 devices. Fields: id, asset_tag, serial_number, status, model, received_date. device_category, make and storage_location are always null today.
Statuses
Order statuses
pending_payment, paid, label_created, outbound_shipped, outbound_delivered, return_shipped, return_delivered, device_received, return_failed, cancelled, completed
Device statuses
in_transit, received, in_storage, redeploy_requested, redeploy_shipped, redeployed, dispose_requested, awaiting_wipe, disposed, blocked_customer_action, forfeited, resale, recycled
Errors
Errors are JSON with an error string.
| HTTP status | Meaning |
|---|---|
| 400 | Invalid or missing fields |
| 401 | Missing, invalid or revoked key |
| 403 | API disabled or order belongs to another organization |
| 404 | Order not found |
No rate limits are published. There are no SDKs.