chronoskin Developers
Menu

v3 Rates for 31 carriers in one call

Ship a parcel with one request

The chronoskin API buys the label, books the collection and tells you where the parcel is. Seven lines of code, any carrier.

npm install chronoskin

Quickstart

About ten minutes, in test mode. Nothing is collected and nothing is charged.

1 of 3 steps done

  1. 1

    Get a test key

    Every account starts with one. It begins with sk_test_.

    Your keys
  2. 2

    Create a shipment

    Send an address and a weight; get back a label and a price.

    The request
  3. 3

    Listen for tracking

    Add a webhook and we call you each time the parcel is scanned.

    Webhooks

99.99%

of requests answered over the last 90 days

180 ms

median time to a label

31

carriers behind one address format

14

libraries, kept in step with the API

What the API does

Six resources. Each has its own page in the reference.

Shipments

Create, change and cancel a parcel on its way from you to a customer.

POST /v3/shipments

Labels

A label as PDF or ZPL, in the size your printer takes.

GET /v3/labels/:id

Tracking

Every scan as an event, in the same words for every carrier.

GET /v3/trackers/:id

Rates

Prices for a parcel from all carriers, before you buy anything.

POST /v3/rates

Addresses

Check and tidy an address, so a parcel is not sent to nowhere.

POST /v3/addresses

Webhooks

We call your server when something changes, and retry for three days.

POST /v3/webhooks

Recent changes

Changelog

API status

All good
  • Shipments and labelsUp
  • TrackingUp
  • Webhooks ?Deliveries are about two minutes behind while one carrier catches up.Slow
  • Test modeUp

Stuck on a request?

Send us its id. An engineer answers within a working day.

  1. Developers
  2. API reference
  3. Shipments

Shipments

A shipment is one parcel on its way from you to one address.

POST/v3/shipmentsIdempotentSend the same Idempotency-Key twice and the second call returns the first shipment.

Create a shipment

Buys a label from the cheapest carrier that can meet the service you ask for, and returns the shipment with its label and price.

Before you call

Use a test key while you build. A test shipment gets a real-looking label marked SAMPLE and is never collected.

Units

  • Weights are whole grams: weight=1200 is 1.2 kg.
  • Sizes are whole millimetres, longest side first.
  • Money is in the smallest unit of your account's currency.

Parameters

form encoded
ParameterTypeNeededLongest
to[name]stringRequired60
to[postcode]stringRequired12
weightinteger, gramsRequired30,000
serviceone of threeOptional16
referencestringOptional40

Test mode is free. Labels made with a test key cost nothing and cannot be posted.

Fractions of a gram are refused. Since 2019-03-11 the call fails with weight_not_whole.

Errors

400 address_not_found

No carrier knows the postcode. Check it with the Addresses resource first; the reply suggests the nearest match.

402 balance_too_low

The account cannot pay for the label. Top up, or switch on automatic top-ups in the dashboard.

429 too_many_requests

More than 100 calls in a second. Wait for the time given in the Retry-After header.

RequestCopy
curl api.chronoskin.test/v3/shipments \
  -u sk_test_a1b2c3d4: \
  -d "to[name]"="Harbour Bakery" \
  -d "to[postcode]"="EH6 6QQ" \
  -d weight=1200 \
  -d service=next_day
Reply201
{
  "id": "shp_8Kd20a",
  "status": "label_ready",
  "carrier": "northline",
  "service": "next_day",
  "weight": 1200,
  "cost": 485,
  "label": "label_8Kd20a.pdf",
  "tracker": "trk_51Lm9x"
}
  1. Developers
  2. Dashboard
  3. API keys

API keys

A key says who is calling. Keep live keys on your server and nowhere else.

Your keys

NameKeyMade byCalls todayState
Warehouse serversk_test_...c3d4IL Ingrid4,212In use
Returns desksk_test_...9f0aTO Tomas318In use
Old shop pluginsk_test_...77beMP Maya0Quiet 60 days
Laptop, Tomassk_test_...01aaTO Tomas0Revoked
4 test keys, 2 live keysRolling a key without downtime

Make a new key

Only you see it. Say where the key lives.
An address has four numbers, such as 203.0.113.24.
Cancel

This month

Growth plan
Labels6,200 of 10,000
Address checks18,000 of 20,000
Tracked parcels5,400 of 5,000

No webhooks yet

Give us an address on your server and we call it when a parcel moves.

Add a webhook
  1. Developers
  2. API reference
  3. Changelog

Changelog

Every change to the API, newest first. Your account stays on its version until you move it.

What the labels on a change mean.

Dated New Library Fixed Breaking Removed

Changes in 2019

MP You are on 2019-03-11
  • Each rate now carries delivery_day, worked out in the receiver's time zone. Nothing is taken away.

    Rates, all libraries from 3.4

  • A weight with a fraction used to be rounded down, which made labels too cheap. It is now refused.

    Shipments and rates, version 2019-03-11

  • The fourteenth library. It covers every resource and retries idempotent calls by itself.

    Libraries, February

  • Announced a year ago and used by eleven accounts, all of which have moved to PDF or ZPL.

    Labels, version 2019-01-15

Changes 1 to 4 of 7