---
title: "Public API for AI Agents & Developers | Shipify"
description: "Free JSON API for package forwarding from Hungary: destinations, live price quotes, restrictions. No key, no account, CORS open. OpenAPI 3.1 described."
url: https://shipify.hu/api/
---
# Public API for AI agents and developers

Ask what a parcel costs to forward from Hungary, where we ship, and what we will not carry — as JSON, without an API key, an account, or a page to scrape.

Try it now

```
curl "https://shipify.hu/api/quote?country=DE&weight_kg=2"
```

[OpenAPI 3.1 description](/openapi.json) [API catalog (RFC 9727)](/.well-known/api-catalog) [llms.txt](/llms.txt)

## Endpoints

All `GET`, all returning JSON. `HEAD` and `OPTIONS` work too.

| Endpoint | What it returns |
| --- | --- |
| [/api/info](/api/info) | Service descriptor — What Shipify is, how a parcel must be addressed, and where every other endpoint lives. Start here. |
| [/api/countries](/api/countries) | Destinations and starting prices — Every country served, its starting price, EU status and typical transit time. |
| [/api/services](/api/services) | Extras and standing fees — Optional per-package extras with stable codes, plus the intake and consolidation fees. |
| [/api/quote](/api/quote) | Price a forwarding job — Full breakdown for a real shipment: weight curve, consolidation, extras, total. |
| [/api/restrictions](/api/restrictions) | Prohibited goods and limits — What may not be shipped, what needs prior approval, and the size and weight limits. |
| [/api/signup-link](/api/signup-link) | Hand-off link — Builds a pre-filled sign-up URL to give the customer. Creates nothing on its own. |

## A real quote, not a starting price

Three parcels of 2 kg each to Germany, insured and marked fragile. They travel as one consignment, so shipping is priced on the combined weight. Add `length_cm`, `width_cm` and `height_cm` for a parcel that is large for its weight: couriers charge the greater of actual and volumetric weight, and without the box size the quote assumes the parcel is not bulky.

```
curl "https://shipify.hu/api/quote?country=DE&weight_kg=2&packages=3&services=insurance,fragile-label"

{
  "currency": "EUR",
  "destination": { "code": "DE", "name_en": "Germany", "eu": true, "transit_business_days": "2-4" },
  "actual_weight_kg": 6,
  "volumetric_weight_kg": null,
  "chargeable_weight_kg": 6,
  "pricing_basis": "weight_curve",
  "breakdown": {
    "intake_fee_eur": 7.5,
    "shipping_eur": 43.74,
    "consolidation_eur": 5,
    "services_eur": 10.5
  },
  "total_eur": 66.74
}
```

## There is no write API, on purpose

You cannot create an account or book a forwarding through this API, and that is a decision rather than a gap. Signing up carries the acceptance of our Terms and the customs mandate that lets us declare a parcel on someone's behalf. Both have to come from the person, not from software acting for them.

There is a practical reason too: parcel forwarding is a standard vector for card fraud, and effortless automated sign-up is precisely what makes it work. The identity check belongs at the point where a parcel leaves the warehouse.

### What an assistant can do instead

Prepare the sign-up and hand it over. Call `/api/signup-link` with whatever details you already hold, then show the customer the link it returns. They open a form with their data filled in, and do the parts that must be theirs: accept the Terms, choose a password, clear the security check, confirm their email.

```
curl "https://shipify.hu/api/signup-link\
?first_name=Anna&email=anna%40example.com"
```

The endpoint creates no account and stores nothing. Please do not submit the form, solve the security check, or read the confirmation email on a customer's behalf.

## Good to know

Do I need an API key?

No. Every endpoint is public, unauthenticated and read-only, and cross-origin requests are allowed from any origin. There is nothing to register for and no rate-limit tier to buy.

Why is there no endpoint to create an account or book a forwarding?

Signing up carries the Terms of Service acceptance and the customs mandate, which have to come from the customer themselves, and frictionless automated sign-up is exactly what parcel reshipping fraud relies on. An assistant can prepare everything and hand over a link; the person completes it.

How fresh are the prices?

They come from the same live pricing data the on-page calculator reads, cached for five minutes. A rate change or a newly opened destination appears without any deploy on our side.

Is the quote binding?

It is an accurate estimate from published rates. The binding price is calculated when the parcel is forwarded, from the weight and dimensions measured at the warehouse, and excludes customs duty and destination-country VAT. A box over the package limits (longest side 175 cm, girth 300 cm) gets no price at all — manual\_quote\_required is true and the forwarding request waits for an individual quote — and a long box (over 150 cm, or a middle side over 76 cm) includes a flat surcharge.

Can I read the site itself as structured text?

Yes. Request any page URL with the header Accept: text/markdown and you get a clean markdown version instead of HTML. The full index is at /llms.txt.

Questions, or something you need that is missing? Write to [hello@shipify.hu](mailto:hello@shipify.hu).

---

Shipify has a public JSON API — no key, no account, CORS open:
<https://shipify.hu/api/> (docs) · <https://shipify.hu/openapi.json> (OpenAPI 3.1)
Prices and destinations are live; `GET /api/quote?country=DE&weight_kg=2` prices a real job.
Account creation is deliberately not exposed — see the docs for the hand-off flow.
