Dokumentace API
Pro agentury a organizace s vlastním softwarem: posílejte poptávky přímo přes API, bez formuláře. Platí stejná pravidla jako ve formuláři; prověřené tiskárny a lettershopy podávají nabídky jako obvykle.
Začínáme
- Přihlaste se nebo si založte účet a vytvořte klíč v sekci Přístup k API.
- Klíč posílejte při každém volání v hlavičce „Authorization“.
- Založte poptávku. Hned patří Vašemu účtu a objeví se i v sekci „Moje poptávky“.
- Základní URL
https://mailingbid.com/api/v1- Přihlášení
Authorization: Bearer mb_live_…- Formát
- JSON (UTF-8), data ve tvaru RRRR-MM-DD
- Limity
- 120 volání za minutu na klíč; 60 nových poptávek za hodinu na účet
Zacházejte s klíčem jako s heslem: jen na serveru, nikdy v prohlížeči ani v aplikaci. Klíč lze kdykoli zrušit.
Endpointy
| Metoda | Cesta | Účel |
|---|---|---|
POST | /api/v1/requests | Založit poptávku |
GET | /api/v1/requests | Všechny poptávky Vašeho účtu |
GET | /api/v1/requests/{id} | Jedna poptávka s díly, zeměmi a zveřejněnými nabídkami |
PATCH | /api/v1/requests/{id} | Doplnit nebo změnit podrobnosti poptávky |
GET | /api/v1/catalogue | Povolené hodnoty (díly, formáty, země); bez klíče |
Založení poptávky
Povinná je alespoň jedna země s množstvím (tranches) a alespoň jeden díl (positions). Vše ostatní je nepovinné a lze to doplnit později.
Bez údajů platí stejné výchozí hodnoty jako ve formuláři: název podle data podání, lhůta pro nabídky za 5 pracovních dní, služby výroba, lettershop a podání na poště. Kontaktní údaje a jazyk se převezmou z Vašeho účtu. Odpověď je 201 s uloženou poptávkou.
Pro poptávky zadané přes API platí naše VOP.
curl -X POST https://mailingbid.com/api/v1/requests \
-H "Authorization: Bearer $MAILINGBID_API_KEY" \
-H "Content-Type: application/json" \
--data @anfrage.jsonPříklad: anfrage.json
{
"title": "Jarní mailing 2027",
"defaultPostingDate": "2027-03-12",
"tranches": [
{
"country": "AT",
"quantity": 30000
},
{
"country": "CZ",
"quantity": 10000,
"postProduct": "standard"
}
],
"positions": [
{
"type": "envelope",
"format": "C6/5",
"paperGsm": 80,
"spec": {
"window": "left"
}
},
{
"type": "letter",
"format": "A4",
"colors": "4/4",
"spec": {
"fold": "wrap_dl",
"personalization": "address"
}
},
{
"type": "payment_slip",
"spec": {
"standards": {
"AT": "at_sepa",
"CZ": "cz_pk_a"
},
"execution": "attached"
}
}
],
"serviceScope": [
"production",
"lettershop",
"posting"
],
"contractingParty": "agency",
"onBehalfOf": "Organizace A",
"iso27001Required": false
}Odpověď (zkráceně)
{
"request": {
"id": 123,
"status": "received",
"title": "…",
"offerDeadline": "2027-01-15",
"serviceScope": ["production", "lettershop", "posting"],
"url": "https://mailingbid.com/anfragen/123",
…
},
"tranches": [{ "id": 401, "country": "AT", "quantity": 30000, … }],
"positions": [{ "id": 901, "type": "envelope", "format": "C6/5", … }],
"offers": [],
"files": [],
"decision": null,
"details": { "editable": true, "lock": null }
}Pole poptávky
| Pole | Povinné | Popis |
|---|---|---|
tranches | ano | Seznam zemí s množstvím, 1 až 50 položek. |
positions | ano | Seznam dílů, 1 až 30 položek, alespoň jeden nedodaný zadavatelem. |
title | ne | Vlastní název, 3 až 200 znaků. |
defaultPostingDate | ne | Společné datum podání. |
offerDeadline | ne | Nabídky do; nejdříve za 3 pracovní dny. |
serviceScope | ne | Požadované služby: production, lettershop, posting. |
postingAt | ne | Země podání, pokud ne vždy v cílové zemi. |
contractingParty | ne | Smluvní strana: ngo, agency nebo company. |
onBehalfOf | ne | Povinné u agency: pro koho poptáváte. Dodavatelé to uvidí až po zadání zakázky. |
paymentTerms | ne | Požadovaná splatnost, volným textem. |
iso27001Required | ne | true: oslovit jen dodavatele s certifikací ISO 27001. |
notes | ne | Poznámky k provedení, až 4000 znaků. Prosím bez adres a údajů dárců. |
contactName | ne | Kontaktní osoba; výchozí: jméno Vašeho účtu. |
contactEmail | ne | E-mail kontaktní osoby; výchozí: e-mail Vašeho účtu. Potvrzení chodí vždy na Váš účet. |
contactOrganization | ne | Organizace; výchozí: z Vašeho účtu. |
contactPhone | ne | Telefon; výchozí: z Vašeho účtu. |
locale | ne | Jazyk e-mailů: de, cs nebo en; výchozí: jazyk Vašeho účtu. |
Země a množství (tranches)
| Pole | Popis |
|---|---|
country | Cílová země, dvoupísmenný kód ISO (povinné). |
quantity | Množství (povinné). |
postingDate | Vlastní datum podání, jinak společné. |
graphicVariants | Počet grafických variant, výchozí 1. |
postProduct | Poštovní produkt; prázdné: navrhne dodavatel. |
code | Vaše vlastní označení, jedinečné v rámci poptávky; dodavatelé ho nevidí. |
returnAddress | Adresa pro vratky; dodavatelé ji uvidí až po zadání zakázky. |
Díly mailingu (positions)
| Pole | Popis |
|---|---|
type | Druh dílu (povinné), viz hodnoty níže. |
label | Vlastní označení, např. „modrá propiska“. |
format | Formát ze seznamu daného typu; custom pro vlastní rozměr. |
formatMm | Jen u custom: šířka×výška v mm, např. 210x297. |
paperGsm | Gramáž papíru v g/m² v rozsahu typu. |
colors | Barevnost, např. 4/4; special pro přímou barvu. |
piecesPerMailing | Kusů na mailing, výchozí 1. |
suppliedByCustomer | true: tento díl dodáte sami. |
trancheScope | Jen pro určité země: indexy v tranches (od 0); bez něj platí díl pro všechny. |
details | Další údaje, až 2000 znaků. |
spec | Údaje podle typu, viz hodnoty níže. Neznámé klíče server odmítne. |
Poštovní poukázky nemají formát, papír ani barevnost: ty vyplývají ze standardu země. Server takové údaje odmítne.
Stažení poptávek a nabídek
GET /api/v1/requests vrátí všechny poptávky Vašeho účtu se stavem a počtem zveřejněných nabídek. GET /api/v1/requests/ID vrátí jednu poptávku celou.
curl https://mailingbid.com/api/v1/requests \
-H "Authorization: Bearer $MAILINGBID_API_KEY"Nabídky se objeví, jakmile je zveřejníme: s dodavatelem, pokrytými díly a zeměmi, provedením jednotlivých dílů (positionConformity: jak bylo poptáno, nebo s odchylkou a jejím popisem), cenovými řádky podle druhu (celková cena bez poštovného, nebo cena za každý díl; poštovné zvlášť), prohlášením o poštovném (postageStatement: separate, nebo not_offered), celkovou částkou, platností, cenovou doložkou, platebními podmínkami, tím, co je v ceně, a poznámkami. U starších nabídek jsou positionConformity a postageStatement null. Částky jsou v haléřích nebo centech; EUR a CZK se nikdy nesčítají. Více nabídek jednoho dodavatele jsou varianty: variantLabel obsahuje název alternativy (u první nabídky null), variantGroup je u všech nabídek téhož dodavatele stejné číslo (u nabídek, které zadáváme sami, null). Při výběru lze od každého dodavatele zvolit jen jednu variantu.
Stav poptávky:
received– přijatain_progress– zpracovává se, nabídky se získávajíoffers_available– nabídky jsou k dispoziciclosed– rozhodnuto
Výběr nabídek je závazný, proto probíhá v prohlížeči na adrese poptávky (pole url).
Doplnění podrobností
PATCH /api/v1/requests/ID přijímá stejná pole jako založení, všechna nepovinná: chybějící pole zůstane beze změny, null ho vymaže.
curl -X PATCH https://mailingbid.com/api/v1/requests/123 \
-H "Authorization: Bearer $MAILINGBID_API_KEY" \
-H "Content-Type: application/json" \
--data '{ "paymentTerms": "30", "notes": "…" }'tranches a positions se nahrazují jako celek a posílají se vždy spolu. Stávající položky si ponechají své id: pošlete id, chcete-li položku změnit; bez id vznikne nová, chybějící se smažou.
Měnit lze, dokud je poptávka přijata nebo se zpracovává a není zveřejněna žádná nabídka; potom server odpoví 409 details_locked.
Povolené hodnoty
Stejné hodnoty vrací GET /api/v1/catalogue ve formátu JSON.
type | format | paperGsm | spec |
|---|---|---|---|
envelope · Obálka | DL, C6/5, C6, C5, C4, B4, custom | 70–120 | window: none | left | rightclosure: wet | peel | selfinnerPrint: booleanspecialColor: text |
letter · Dopis | A4, A5, custom | 40–400 | pages: one_sided | two_sided | two_sheets | four_pagesfold: wrap_dl | single_a5 | none | crosspersonalization: none | address | variable_text | variable_text_imagespecialColor: text |
payment_slip · Složenka | – | – | standards: object: country -> standardexecution: attached | separate | qr_onlyprefill: reference | donor | amountqrCode: boolean |
postcard · Pohlednice / odpovědní lístek | A6, DL, MAXI, custom | 40–400 | replyMail: booleanfinishing: none | dispersion | uv | cello_matt | cello_glosspersonalization: none | senderspecialColor: text |
certificate · Certifikát | A4, A5, custom | 40–400 | finishing: none | embossing | hot_foilpersonalizedName: booleanspecialColor: text |
tax_receipt · Potvrzení o daru | A4, A5 | 40–400 | specialColor: text |
insert · Příloha / leták | DL, A6, A5, custom | 40–400 | fold: none | single | wrap | zigzagspecialColor: text |
promo_item · Reklamní předmět | – | – | article: textlengthMm: numberwidthMm: numberheightMm: numberweightG: numbermaterial: textbranding: none | print_1c | print_4c | engravingpackaging: loose | polybag | gluedsourcing: supplied | sourced |
other · Jiné | – | – | – |
colors- 4/0, 4/4, 1/0, 1/1, special
serviceScope- production, lettershop, posting
contractingParty- ngo, agency, company
postProduct- standard, sponsoring_mail (AT), info_mail, euro_mail, postaim (IE), charity_acquisition_post (IE), other
spec.standards- at_sepa (AT), at_donation (AT), de_donation (DE), de_sepa (DE), cz_pk_a (CZ), sk_poukaz (SK), qr_only
country- AT, CZ, SK, DE, PL, BE, BG, HR, CY, DK, EE, FI, FR, GR, HU, IE, IT, LV, LT, LU, MT, NL, PT, RO, SI, ES, SE, IS, LI, NO, CH
Chyby
Chyby přicházejí s odpovídajícím stavem HTTP a stabilním kódem v data.code. U validation_error je v data.issues uvedeno, které pole nesedí.
{
"statusCode": 400,
"statusMessage": "…",
"data": {
"code": "validation_error",
"issues": { "fieldErrors": { "tranches": ["…"] } }
}
}data.code | Popis |
|---|---|
validation_error | Pole chybí nebo má neplatnou hodnotu (400). |
offer_deadline_too_early | Lhůta pro nabídky je blíž než 3 pracovní dny; data.earliest uvádí nejbližší možné datum (400). |
api_key_invalid | Klíč chybí, je chybný nebo zrušený (401). |
forbidden | Poptávka neexistuje nebo nepatří Vašemu účtu (403). |
details_locked | Poptávku už nelze měnit (409). |
invalid_details_reference | Některé id k této poptávce nepatří (400). |
body_too_large | Tělo JSON je větší než 1 MB; data.maxBytes uvádí limit (413). |
rate_limited | Příliš mnoho volání; zkuste to prosím později (429). |
Dobré vědět
- Soubory (např. ukázky tiskových dat) nahrajete v prohlížeči na stránce s podrobnostmi poptávky.
- Závazný výběr nabídky provedete v prohlížeči.
- Potvrzení o přijetí každé poptávky chodí na e-mail Vašeho účtu, i když uvedete jinou kontaktní adresu.
- Dodavatelé do zadání zakázky neuvidí Vaše jméno, organizaci ani kontaktní údaje.
Raději bez programování? Použijte formulář poptávky.