Kontakty
Spravujte profily kontaktů a vlastní pole, hromadně, nebo jednotlivě.
Vytvoření kontaktu
Vytvoří kontakt a volitelně ho přidá jako odběratele do seznamů kontaktů.
/contactsVyžaduje API klíč s oprávněním full. E-mailové adresy jsou ve workspace jedinečné a ukládají se malými písmeny; vytvoření kontaktu, který už existuje, vrací 409 s existujícím kontaktem v poli existing. Vyvolá contact.created a pro každý seznam kontaktů subscriber.created. Viz Kontakty.
Parametry v těle požadavku
emailstringpovinnéfirst_namestringlast_namestringcustom_fieldsobjectHodnoty podle klíče vlastního pole, například {"company": "Analytical Engines"}. Hodnoty datových polí musí být ve tvaru YYYY-MM-DD. Klíče, které neodpovídají žádnému vlastnímu poli, se uloží tak, jak jsou.
audiencesstring[]aud_…), do kterých se má kontakt přidat jako odběratel. ID, která ve workspace neexistují, se přeskočí.tagsstring[]scoreintegervýchozí: 0unsubscribedbooleanvýchozí: falsetrue, pokud má kontakt vzniknout jako odhlášený. Kampaně odhlášené kontakty přeskakují a jejich členství v seznamech kontaktů začínají jako odhlášená.
Odpověď
Vrací 201 s objektem kontaktu. Pole audiences tu uvádí každý seznam kontaktů s jeho id, name a stavem přihlášení subscribed. Všechna pole najdete na stránce Načtení kontaktu.
Pokud je některý seznam kontaktů na limitu odběratelů vašeho tarifu, vrací 422 s usage. V tom případě se žádný kontakt nevytvoří.
{
"object": "contact",
"id": "con_4K9kQdrXth7am0TPKvPrR5yd2oo",
"email": "ada@example.com",
"first_name": "Ada",
"last_name": "Lovelace",
"custom_fields": {
"company": "Analytical Engines",
"plan": "pro"
},
"unsubscribed": false,
"audiences": [
{
"id": "aud_4KbFmQPy1feMCGAY8F8pAhiZ1u2",
"name": "Newsletter",
"subscribed": true
}
],
"created_at": "2026-10-01T10:20:31.704113Z",
"updated_at": "2026-10-01T10:20:31.704113Z"
}{
"error": "Custom field \"Birthday\" must be a date in YYYY-MM-DD format"
}{
"error": "Contact with this email already exists",
"existing": {
"object": "contact",
"id": "con_4K9kQdrXth7am0TPKvPrR5yd2oo",
"email": "ada@example.com",
"first_name": "Ada",
"last_name": "Lovelace",
"custom_fields": {
"company": "Analytical Engines",
"plan": "pro"
},
"unsubscribed": false,
"audiences": [
{
"id": "aud_4KbFmQPy1feMCGAY8F8pAhiZ1u2",
"name": "Newsletter",
"subscribed": true
}
],
"created_at": "2026-10-01T10:20:31.704113Z",
"updated_at": "2026-10-01T10:20:31.704113Z"
}
}{
"error": "Pro includes 50,000 subscribers per audience.",
"usage": {
"used": 50000,
"limit": 50000,
"plan": "pro"
}
}Načtení kontaktu
Načte kontakt s jeho vlastními poli a členstvími v seznamech kontaktů.
/contacts/{id}Vyžaduje API klíč s oprávněním full.
Parametry v cestě
idstringpovinnécon_…), nebo e-mailová adresa kontaktu zakódovaná pro URL.Odpověď
Vrací objekt kontaktu.
objectstringcontact.idstringemailstringfirst_namestring | nulllast_namestring | nullcustom_fieldsobject{}, pokud žádné nejsou.unsubscribedbooleantrue, pokud se kontakt odhlásil ze všech kampaní.tagsstring[]scoreintegeraudiencesobject[]Seznamy kontaktů, do kterých kontakt patří, každý s id, name a objektem subscriber: id (sub_…), subscribed, subscribed_at, unsubscribed_at, created_at a updated_at.
created_atstringupdated_atstring{
"object": "contact",
"id": "con_4K9kQdrXth7am0TPKvPrR5yd2oo",
"email": "ada@example.com",
"first_name": "Ada",
"last_name": "Lovelace",
"custom_fields": {
"company": "Analytical Engines",
"plan": "pro"
},
"unsubscribed": false,
"audiences": [
{
"id": "aud_4KbFmQPy1feMCGAY8F8pAhiZ1u2",
"name": "Newsletter",
"subscriber": {
"id": "sub_4KECYl5AwXEy8ezswYRhuddttxo",
"subscribed": true,
"subscribed_at": "2026-10-01T10:20:31.000000Z",
"unsubscribed_at": null,
"created_at": "2026-10-01T10:20:31.000000Z",
"updated_at": "2026-10-01T10:20:31.000000Z"
}
}
],
"created_at": "2026-10-01T10:20:31.000000Z",
"updated_at": "2026-10-01T10:20:31.000000Z"
}{
"error": "Contact not found"
}Úprava kontaktu
Upraví kontakt. Změní se jen pole, která pošlete.
/contacts/{id}Vyžaduje API klíč s oprávněním full. Vyvolá contact.updated s předchozími hodnotami změněných polí v previous. Změna audiences navíc vyvolá subscriber.created a subscriber.deleted pro členství, která přidá a odebere.
Parametry v cestě
idstringpovinnécon_…), nebo e-mailová adresa kontaktu zakódovaná pro URL.Parametry v těle požadavku
emailstringfirst_namestringlast_namestringcustom_fieldsobjectunsubscribedbooleantrue kontakt odhlásí ze všech kampaní, false ho znovu přihlásí. Stávající členství v seznamech kontaktů si zachovají svůj vlastní stav.tagsstring[][] odebere všechny.add_tagsstring[]remove_tagsstring[]scoreintegeraudiencesstring[]Úplný výčet ID seznamů kontaktů, do kterých má kontakt patřit. Kontakt se přidá do seznamů z vašeho výčtu, ve kterých ještě není, a odebere se ze seznamů, které ve vašem výčtu nejsou. Pokud ho chcete odebrat ze všech seznamů, pošlete []. Pokud chcete přidat nebo odebrat jeden seznam bez vypisování všech ostatních, použijte endpoint Přidání odběratele, nebo Smazání odběratele.
Odpověď
Vrací upravený kontakt ve stejném formátu jako endpoint Načtení kontaktu. Požadavek, který neobsahuje žádné z těchto polí, vrací 400.
curl -X POST https://api.emailit.com/v2/contacts/ada%40example.com \
-H "Authorization: Bearer $EMAILIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"custom_fields": { "company": "Analytical Engines", "plan": "business" },
"audiences": ["aud_4KbFmQPy1feMCGAY8F8pAhiZ1u2", "aud_4KOlh9t2uw5od4qypqCtyrZyDq2"]
}'{
"object": "contact",
"id": "con_4K9kQdrXth7am0TPKvPrR5yd2oo",
"email": "ada@example.com",
"first_name": "Augusta",
"last_name": "Lovelace",
"custom_fields": {
"company": "Analytical Engines",
"plan": "pro"
},
"unsubscribed": false,
"audiences": [
{
"id": "aud_4KbFmQPy1feMCGAY8F8pAhiZ1u2",
"name": "Newsletter",
"subscriber": {
"id": "sub_4KECYl5AwXEy8ezswYRhuddttxo",
"subscribed": true,
"subscribed_at": "2026-10-01T10:20:31.000000Z",
"unsubscribed_at": null,
"created_at": "2026-10-01T10:20:31.000000Z",
"updated_at": "2026-10-01T10:20:31.000000Z"
}
}
],
"created_at": "2026-10-01T10:20:31.000000Z",
"updated_at": "2026-10-02T09:03:17.000000Z"
}{
"error": "No valid fields provided for update. Provide at least one of: email, first_name, last_name, custom_fields, unsubscribed, audiences"
}{
"error": "Contact not found"
}{
"error": "Another contact with this email already exists"
}Výpis kontaktů
Vrací stránku kontaktů od nejnovějších.
/contactsVyžaduje API klíč s oprávněním full. Se stejnými parametry můžete přes endpoint Export kontaktů stáhnout všechny odpovídající kontakty jako soubor.
Parametry dotazu
pageintegervýchozí: 1limitintegervýchozí: 10searchstringq.audience_idstringaud_…).unsubscribedbooleantrue, nebo false. Jen kontakty s tímto stavem odhlášení.filter[tag]stringtag.filter[score][gte], filter[score][lte]integersortstringvýchozí: created_atemail, first_name, last_name, name, audiences, score, created_at nebo updated_at.orderstringvýchozí: descasc, nebo desc. U tohoto endpointu je order směr řazení, ne klíč řazení.matchstringvýchozí: allall, nebo or. Určuje, jak se kombinují filtry níže.Filtry
Filtry přidejte ve tvaru key.condition=value, například email.ends_with=@acme.com nebo custom_fields.plan.exact=pro. Viz Filtrování a řazení.
| Klíč | Typ | Poznámky |
|---|---|---|
email |
string | |
first_name |
string | |
last_name |
string | |
name |
string | Křestní jméno a příjmení spojené mezerou. |
audiences |
string | Abecedně první název seznamu kontaktů, do kterého kontakt patří. |
unsubscribed |
boolean | |
created_at |
date | |
updated_at |
date | |
audience_id |
string | Jen exact a not_exact. Hodnota je ID seznamu kontaktů. |
custom_fields.<key> |
string | Místo <key> dosaďte klíč vlastního pole. Hodnoty se porovnávají jako text. |
Starší parametry filter[audience_id], filter[unsubscribed] a filter[custom_fields][<key>] stále fungují.
Odpověď
dataobject[]total_recordsintegernext_page_urlstring | nullnull. Viz Stránkování.previous_page_urlstring | nullnull.curl -G https://api.emailit.com/v2/contacts \
-H "Authorization: Bearer $EMAILIT_API_KEY" \
--data-urlencode "audience_id=aud_4KbFmQPy1feMCGAY8F8pAhiZ1u2" \
--data-urlencode "custom_fields.plan.exact=pro" \
--data-urlencode "sort=email" \
--data-urlencode "order=asc" \
--data-urlencode "limit=100"{
"data": [
{
"object": "contact",
"id": "con_4K9kQdrXth7am0TPKvPrR5yd2oo",
"email": "ada@example.com",
"first_name": "Ada",
"last_name": "Lovelace",
"custom_fields": {
"company": "Analytical Engines",
"plan": "pro"
},
"unsubscribed": false,
"audiences": [
{
"id": "aud_4KbFmQPy1feMCGAY8F8pAhiZ1u2",
"name": "Newsletter",
"subscribed": true
}
],
"created_at": "2026-10-01T10:20:31.704113Z",
"updated_at": "2026-10-01T10:20:31.704113Z"
},
{
"object": "contact",
"id": "con_4KiXIs4xLTcJIAHnKJaLcnMZYh7",
"email": "grace@example.com",
"first_name": "Grace",
"last_name": "Hopper",
"custom_fields": {},
"unsubscribed": true,
"audiences": [],
"created_at": "2026-09-28T07:55:02.118342Z",
"updated_at": "2026-09-30T18:11:40.902215Z"
}
],
"total_records": 2,
"next_page_url": null,
"previous_page_url": null
}Hromadná úprava kontaktů
Provede jednu akci až se 100 kontakty v jediném požadavku.
/contacts/bulkVyžaduje API klíč s oprávněním full. Každé ID musí patřit kontaktu ve workspace, jinak se nic nezmění a odpověď vypíše chybějící ID v poli missing. Každý kontakt vyvolá stejné události jako endpointy pro jednotlivé kontakty. Pokud seznam kontaktů během add_to_audience dosáhne limitu odběratelů vašeho tarifu, požadavek skončí s 422 a kontakty zpracované do té doby zůstanou přidané.
| Akce | Co dělá |
|---|---|
delete |
Smaže kontakty a jejich členství v seznamech kontaktů, stejně jako Smazání kontaktu. |
add_to_audience |
Přidá kontakty do seznamu audience_id. Kontakty, které v něm už jsou, zůstanou beze změny. |
remove_from_audience |
Odebere kontakty ze seznamu audience_id. |
unsubscribe |
Nastaví unsubscribed na true, takže kampaně kontakty přeskočí. |
resubscribe |
Nastaví unsubscribed na false. |
Parametry v těle požadavku
actionstringpovinnédelete, add_to_audience, remove_from_audience, unsubscribe nebo resubscribe.idsstring[]povinnécon_…), od 1 do 100. E-mailové adresy se tu nepřijímají. Duplicity se ignorují.audience_idstringadd_to_audience a remove_from_audience.Odpověď
objectstringcontact_bulk.actionstringprocessedintegeridsstring[]{
"object": "contact_bulk",
"action": "add_to_audience",
"processed": 2,
"ids": ["con_4K9kQdrXth7am0TPKvPrR5yd2oo", "con_4KiXIs4xLTcJIAHnKJaLcnMZYh7"]
}{
"error": "A maximum of 100 contacts can be updated per request"
}{
"error": "One or more contacts were not found",
"missing": ["con_4K3pZc1Q9nWm2LrT8vYb5Hd0XaE"]
}{
"error": "Pro includes 50,000 subscribers per audience.",
"usage": {
"used": 50000,
"limit": 50000,
"plan": "pro"
}
}Přidání štítků kontaktu
Přidá kontaktu štítky. Štítky, které už kontakt má, zůstanou beze změny. Vyžaduje API klíč s oprávněním full.
Štítky se oříznou o mezery na začátku a na konci, ukládají se malými písmeny se sloučenými vícenásobnými mezerami a mohou mít až 64 znaků. Když je aspoň jeden štítek nový, Emailit vyvolá událost contact.updated s novými štítky v tags a starými v previous.tags, která spouští automatizace se spouštěčem Tag added. Viz Štítky a skóre kontaktů.
/contacts/{id}/tagsParametry v cestě
idstringpovinnécon_…), nebo e-mailová adresa kontaktu zakódovaná pro URL.Parametry v těle požadavku
tagsstring[]povinnéOdpověď
dataobjectid a email kontaktu, všechny jeho štítky v tags po změně a changed, tedy štítky, které se přidaly.
messagestring1 tag added. nebo No tags changed.Pokud je štítek prázdný nebo delší než 64 znaků, vrací 400, pro neexistující kontakt 404.
{
"data": {
"id": "con_2kq8Vt4xLm7Rz",
"email": "ada@example.com",
"tags": ["customer", "vip", "webinar-2026"],
"changed": ["customer", "webinar-2026"]
},
"message": "2 tags added."
}Odebrání štítků kontaktu
Odebere kontaktu štítky. Štítky, které kontakt nemá, se ignorují. Vyžaduje API klíč s oprávněním full.
Když se odebere aspoň jeden štítek, Emailit vyvolá událost contact.updated s previous.tags, která spouští automatizace se spouštěčem Tag removed. Viz Štítky a skóre kontaktů.
/contacts/{id}/tagsParametry v cestě
idstringpovinnécon_…), nebo e-mailová adresa kontaktu zakódovaná pro URL.Parametry v těle požadavku
tagsstring[]povinnéOdpověď
dataobjectid a email kontaktu, jeho zbývající štítky v tags a changed, tedy štítky, které se odebraly.
messagestring1 tag removed. nebo No tags changed.Pokud kontakt neexistuje, vrací 404.
Výpis štítků
Vrátí štítky použité u kontaktů ve workspace, seřazené abecedně, a u každého počet kontaktů, které ho mají. Vyžaduje API klíč s oprávněním full. Pokud chcete vypsat kontakty s určitým štítkem, použijte Výpis kontaktů s filter[tag].
/contacts/tagsParametry dotazu
searchstringlimitintegervýchozí: 200Odpověď
dataobject[]Každý štítek ve tvaru { "object": "tag", "tag": "customer", "contacts": 42 }.
Změna skóre kontaktu
Přičte ke skóre kontaktu body, odečte je, nebo skóre nastaví. Vyžaduje API klíč s oprávněním full.
Změna je atomická, takže se souběžná volání navzájem nepřepíšou. Skóre začíná na 0, může být záporné a drží se v rozsahu ±1 000 000 000. Když se skóre změní, Emailit vyvolá událost contact.updated se score a previous.score, která spouští automatizace se spouštěčem Score changed. Viz Štítky a skóre kontaktů.
/contacts/{id}/scoreParametry v cestě
idstringpovinnécon_…), nebo e-mailová adresa kontaktu zakódovaná pro URL.Parametry v těle požadavku
operationstringvýchozí: addadd, subtract, nebo set.valueintegerpovinnéOdpověď
dataobjectid a email kontaktu, nové skóre v score a předchozí v previous_score.messagestringScore is now 55.Pokud je operation nebo value neplatné, vrací 400, pro neexistující kontakt 404.
{
"data": { "id": "con_2kq8Vt4xLm7Rz", "email": "ada@example.com", "score": 55, "previous_score": 45 },
"message": "Score is now 55."
}Export kontaktů
Stáhne odpovídající kontakty jako soubor CSV nebo XLSX.
/contacts/exportVyžaduje API klíč s oprávněním full. Přijímá stejné parametry vyhledávání, filtrování a řazení jako Výpis kontaktů, předané v řetězci dotazu, ale bez stránkování. POST /contacts/export funguje stejně. Export může obsahovat nejvýše 10 000 kontaktů; pokud jich odpovídá víc, požadavek vrátí 422, takže filtry zužte.
Parametry dotazu
formatstringvýchozí: csvcsv, nebo xlsx.search, audience_id, unsubscribed, sort, order, match, key.conditionstringOdpověď
Vrací soubor jako přílohu: contacts.csv (text/csv; charset=utf-8), nebo contacts.xlsx. Každý řádek je jeden kontakt s těmito sloupci:
| Sloupec | Obsah |
|---|---|
email |
E-mailová adresa. |
first_name, last_name |
Křestní jméno a příjmení. |
unsubscribed |
true, nebo false. |
audiences |
Názvy seznamů kontaktů, do kterých kontakt patří, oddělené ; . |
tags |
Štítky kontaktu, oddělené ; . |
score |
Skóre kontaktu. |
| Jeden sloupec pro každé vlastní pole | Hodnota každého vlastního pole definovaného ve workspace; sloupec se jmenuje podle klíče pole. Více hodnot se spojuje znakem ;. |
created_at, updated_at |
Časová razítka ISO 8601. |
email,first_name,last_name,unsubscribed,audiences,company,plan,created_at,updated_at
ada@example.com,Ada,Lovelace,false,Newsletter,Analytical Engines,pro,2026-10-01T10:20:31.000000Z,2026-10-01T10:20:31.000000Z{
"error": "format must be csv or xlsx"
}{
"error": "Export is limited to 10000 contacts. Narrow your filters and try again."
}Smazání kontaktu
Trvale smaže kontakt a všechna jeho členství v seznamech kontaktů.
/contacts/{id}Vyžaduje API klíč s oprávněním full. Smazání nelze vrátit zpět. Pokud chcete někomu přestat posílat e-maily, ale jeho záznam si ponechat, upravte kontakt a nastavte unsubscribed: true, nebo adresu přidejte na seznam blokovaných adres. Vyvolá subscriber.deleted pro každé členství a potom contact.deleted.
Parametry v cestě
idstringpovinnécon_…), nebo e-mailová adresa kontaktu zakódovaná pro URL.Odpověď
objectstringcontact.idstringemailstringdeletedbooleantrue.{
"object": "contact",
"id": "con_4Kt4ZXloQR8WGcMsYx8PFCUjokM",
"email": "alan@example.com",
"deleted": true
}{
"error": "Contact not found"
}