Ecolet → Apaczka endpoint map
Every Ecolet endpoint, what replaces it, and what to watch out for. The table is ordered roughly by how heavily each endpoint is used in practice, so working top-down gets you to a shipping integration fastest.
All Apaczka routes are POST with a trailing slash and the signed
envelope described in Request signing (HMAC). Payload
shapes: API v2 reference.
Covered — a direct replacement exists
| Ecolet | Apaczka API v2 | Notes |
|---|---|---|
POST v1/oauth/token | — (no equivalent by design) | No tokens. Sign each request instead — see Authentication. |
POST v2/add-parcel/reload-formPOST v1/add-parcel/reload-form | service_structure/ + order_valuation/ + pickup_hours/ | Ecolet's one call is split in three: the dictionary of services and options, the price for a concrete payload, and the available pickup windows. See Choosing a service from the offer. |
GET v1/order/get-statuses-for-many-orders | tracking/{waybill}/ | One waybill per call — the array form is gone. Loop with a cache, or switch to push tracking webhooks and stop polling. |
GET v1/order/{id} | order/{order_id}/ | Full order detail including price (in minor units). |
DELETE v1/order/{id} | cancel_order/{order_id}/ | Separate endpoint, not a verb. Only until the carrier takes the parcel over; a cancelled order also stops serving its documents, so download them first. |
GET v1/services | service_structure/ | Numeric service_ids instead of slugs — you need a mapping table. Returns options and additional services too. Cache it; refresh daily. |
POST v1/map-points/ro | points/{type}/ | Keyed by point type / carrier rather than by locality, and there is no destination (sender/receiver) filter — see gaps. The chosen point goes into foreign_address_id on the address, with pickup type SELF (Pickup types). |
GET /api/v1/order/{id}/download-waybill | waybill/{order_id}/ | Returns base64 in JSON, not a binary stream: base64_decode() before writing the PDF. |
POST v2/add-parcel/send-orderPOST v1/add-parcel/send-order | order_send/ | Synchronous — returns the order id, waybill number and tracking URL immediately. Not idempotent; see Order lifecycle. |
GET v1/order | orders/ | Paginated list, max 25 per page. |
Partly covered — behaviour differs
| Ecolet | Apaczka API v2 | What to do |
|---|---|---|
GET v1/order-to-send/{id} | — | The order basket / validation step has no counterpart because creation is synchronous. Validate on your side, then call order_send/ and handle the error envelope. Optionally price the final payload with order_valuation/ first. |
DELETE v1/order-to-send/destroy | — | Nothing to destroy — a draft that was never sent does not exist on the Apaczka side. Keep drafts locally. |
GET v1/me | me/ | Exists, but it is feature-flag-gated — not enabled on every account, and it does not return Ecolet's credit limit / unpaid-invoice view. Check with your Alsendo contact before you depend on it; see gaps. |
Not covered — no equivalent
These need a decision on your side before you start. Each one is worked through on the Gaps and workarounds page.
| Ecolet | Replacement strategy |
|---|---|
GET v1/locations/ro/localities/{code} | Own locality dictionary |
GET v1/locations/{id}/streets/{street} | Own street data |
GET /api/v1/locations/{id}/search-street-postal-codes/{street} | Own street / postal-code data |
GET /api/v1/locations/ro/counties | Static list — county maps to state_code |
GET /api/v1/locations/countries | Static ISO 3166-1 alpha-2 list |
GET v1/address-book | Keep the address book in your own system |
Endpoints you gain
Apaczka exposes a few things Ecolet did not, worth knowing before you re-implement them yourself:
| Apaczka API v2 | What it does |
|---|---|
pickup_hours/ | Available courier pickup windows for a service and postal code. |
pickup/{order_id}/ · batch_pickup/ | Order a courier pickup for orders that already exist — see Pickup types. |
dispatch_code/ · turn_in/ | Drop-off code and a turn-in confirmation for a batch handed to one courier. |
| Push tracking webhooks | Signed status notifications to your URL, instead of polling — see Tracking. |
Additional services
Ecolet's named services map onto numeric option ids from
service_structure. Treat the ids below as a starting point to verify
against your own account, not as constants — the available options differ
per carrier and per service.
| Ecolet service | Apaczka | Status |
|---|---|---|
saturday_delivery | option 19 | Confirmed equivalent |
sms_notify | option 31 | Confirmed equivalent |
rod (return of documents) | option 11 | Equivalent exists, but there is no rod_code; the option is skipped when the return contains no payment instruments |
open_package | exists in the dictionary | Verify against your service before relying on it |
rop (return of pallets), swap, epod | none identified | No equivalent confirmed — decide per service whether to drop the feature or block the order |
Read the ids, don't hardcode them
Always resolve option ids from service_structure/ for the service you are
about to use, and fail loudly when an option your order needs is absent from
the dictionary. Hardcoding the numbers above will silently ship parcels
without the service the customer paid for.
See also: Overview · Gaps and workarounds · API v2 reference

