Список контактов

Получить список всех контактов в вашем рабочем пространстве. Требуются полные права доступа.

GET/contacts

Параметры запроса

pageinteger

Номер страницы для пагинации (минимум: 1, по умолчанию: 1).

limitinteger

Количество контактов для возврата (минимум: 1, максимум: 100, по умолчанию: 10).

const response = await fetch('https://api.emailit.com/v2/contacts?page=1&limit=10', {
method: 'GET',
headers: {
'Authorization': 'Bearer em_test_51RxCWJ...vS00p61e0qRE',
'Content-Type': 'application/json'
}
});

const result = await response.json();
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => 'https://api.emailit.com/v2/contacts?page=1&limit=10',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer em_test_51RxCWJ...vS00p61e0qRE',
'Content-Type: application/json'
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "Ошибка cURL #:" . $err;
} else {
$result = json_decode($response, true);
print_r($result);
}
import requests

response = requests.get(
'https://api.emailit.com/v2/contacts',
params={
    'page': 1,
    'limit': 10
},
headers={
    'Authorization': 'Bearer em_test_51RxCWJ...vS00p61e0qRE',
    'Content-Type': 'application/json'
}
)

result = response.json()
print(result)
require 'net/http'
require 'json'

uri = URI('https://api.emailit.com/v2/contacts?page=1&limit=10')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true

request = Net::HTTP::Get.new(uri)
request['Authorization'] = 'Bearer em_test_51RxCWJ...vS00p61e0qRE'
request['Content-Type'] = 'application/json'

response = http.request(request)
result = JSON.parse(response.body)
puts result
package main

import (
"encoding/json"
"fmt"
"net/http"
"net/url"
)

func main() {
baseURL := "https://api.emailit.com/v2/contacts"
params := url.Values{}
params.Add("page", "1")
params.Add("limit", "10")

fullURL := baseURL + "?" + params.Encode()

req, _ := http.NewRequest("GET", fullURL, nil)
req.Header.Set("Authorization", "Bearer em_test_51RxCWJ...vS00p61e0qRE")
req.Header.Set("Content-Type", "application/json")

client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()

var result map[string]interface{}
json.NewDecoder(resp.Body).Decode(&result)
fmt.Println(result)
}
use reqwest;
use serde_json::Value;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = reqwest::Client::new();

let response = client
    .get("https://api.emailit.com/v2/contacts")
    .query(&[("page", "1"), ("limit", "10")])
    .header("Authorization", "Bearer em_test_51RxCWJ...vS00p61e0qRE")
    .header("Content-Type", "application/json")
    .send()
    .await?;

let result: Value = response.json().await?;
println!("{:?}", result);

Ok(())
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

public class ListContacts {
public static void main(String[] args) throws Exception {
    HttpClient client = HttpClient.newHttpClient();
    
    HttpRequest request = HttpRequest.newBuilder()
        .uri(URI.create("https://api.emailit.com/v2/contacts?page=1&limit=10"))
        .header("Authorization", "Bearer em_test_51RxCWJ...vS00p61e0qRE")
        .header("Content-Type", "application/json")
        .GET()
        .build();
    
    HttpResponse<String> response = client.send(request, 
        HttpResponse.BodyHandlers.ofString());
    
    System.out.println(response.body());
}
}
using System;
using System.Net.Http;
using System.Threading.Tasks;

public class ListContacts
{
public static async Task Main()
{
    using (var client = new HttpClient())
    {
        client.DefaultRequestHeaders.Add("Authorization", 
            "Bearer em_test_51RxCWJ...vS00p61e0qRE");
        
        var response = await client.GetAsync(
            "https://api.emailit.com/v2/contacts?page=1&limit=10");
        
        var result = await response.Content.ReadAsStringAsync();
        Console.WriteLine(result);
    }
}
}
curl -X GET "https://api.emailit.com/v2/contacts?page=1&limit=10" \
-H "Authorization: Bearer em_test_51RxCWJ...vS00p61e0qRE" \
-H "Content-Type: application/json"
{
"data": [
{
  "object": "contact",
  "id": "con_2BxFg7KNqr5M...",
  "email": "john@example.com",
  "first_name": "John",
  "last_name": "Doe",
  "custom_fields": { "company": "Acme" },
  "unsubscribed": false,
  "audiences": [
    {
      "id": "aud_xxx",
      "name": "Newsletter",
      "subscribed": true
    }
  ],
  "created_at": "2026-02-10T10:00:00.000000+00:00",
  "updated_at": "2026-02-10T10:00:00.000000+00:00"
}
],
"next_page_url": "/v2/contacts?page=2&limit=10",
"previous_page_url": null
}
{
"error": {
"code": 401,
"message": "Unauthorized"
}
}

Получить контакт

Получить информацию о конкретном контакте. Требуются полные права доступа. Контакты можно идентифицировать по ID (con_xxx) или адресу электронной почты.

GET/contacts/{id}

Параметры пути

idstringRequired

ID контакта (con_xxx) или адрес электронной почты.

Примечание: Массив audiences в методе Get включает полную информацию о подписчиках (с subscribed_at, unsubscribed_at и т.д.), в то время как метод List возвращает только id, name и subscribed для каждой аудитории.

const response = await fetch('https://api.emailit.com/v2/contacts/con_2BxFg7KNqr5M', {
method: 'GET',
headers: {
'Authorization': 'Bearer em_test_51RxCWJ...vS00p61e0qRE',
'Content-Type': 'application/json'
}
});

const result = await response.json();
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => 'https://api.emailit.com/v2/contacts/con_2BxFg7KNqr5M',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer em_test_51RxCWJ...vS00p61e0qRE',
'Content-Type: application/json'
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "Ошибка cURL #:" . $err;
} else {
$result = json_decode($response, true);
print_r($result);
}
import requests

response = requests.get(
'https://api.emailit.com/v2/contacts/con_2BxFg7KNqr5M',
headers={
    'Authorization': 'Bearer em_test_51RxCWJ...vS00p61e0qRE',
    'Content-Type': 'application/json'
}
)

result = response.json()
print(result)
require 'net/http'
require 'json'

uri = URI('https://api.emailit.com/v2/contacts/con_2BxFg7KNqr5M')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true

request = Net::HTTP::Get.new(uri)
request['Authorization'] = 'Bearer em_test_51RxCWJ...vS00p61e0qRE'
request['Content-Type'] = 'application/json'

response = http.request(request)
result = JSON.parse(response.body)
puts result
package main

import (
"encoding/json"
"fmt"
"net/http"
)

func main() {
url := "https://api.emailit.com/v2/contacts/con_2BxFg7KNqr5M"

req, _ := http.NewRequest("GET", url, nil)
req.Header.Set("Authorization", "Bearer em_test_51RxCWJ...vS00p61e0qRE")
req.Header.Set("Content-Type", "application/json")

client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()

var result map[string]interface{}
json.NewDecoder(resp.Body).Decode(&result)
fmt.Println(result)
}
use reqwest;
use serde_json::Value;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = reqwest::Client::new();

let response = client
    .get("https://api.emailit.com/v2/contacts/con_2BxFg7KNqr5M")
    .header("Authorization", "Bearer em_test_51RxCWJ...vS00p61e0qRE")
    .header("Content-Type", "application/json")
    .send()
    .await?;

let result: Value = response.json().await?;
println!("{:?}", result);

Ok(())
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

public class GetContact {
public static void main(String[] args) throws Exception {
    HttpClient client = HttpClient.newHttpClient();
    
    HttpRequest request = HttpRequest.newBuilder()
        .uri(URI.create("https://api.emailit.com/v2/contacts/con_2BxFg7KNqr5M"))
        .header("Authorization", "Bearer em_test_51RxCWJ...vS00p61e0qRE")
        .header("Content-Type", "application/json")
        .GET()
        .build();
    
    HttpResponse<String> response = client.send(request, 
        HttpResponse.BodyHandlers.ofString());
    
    System.out.println(response.body());
}
}
using System;
using System.Net.Http;
using System.Threading.Tasks;

public class GetContact
{
public static async Task Main()
{
    using (var client = new HttpClient())
    {
        client.DefaultRequestHeaders.Add("Authorization", 
            "Bearer em_test_51RxCWJ...vS00p61e0qRE");
        
        var response = await client.GetAsync(
            "https://api.emailit.com/v2/contacts/con_2BxFg7KNqr5M");
        
        var result = await response.Content.ReadAsStringAsync();
        Console.WriteLine(result);
    }
}
}
curl -X GET https://api.emailit.com/v2/contacts/con_2BxFg7KNqr5M \
-H "Authorization: Bearer em_test_51RxCWJ...vS00p61e0qRE" \
-H "Content-Type: application/json"
{
"object": "contact",
"id": "con_2BxFg7KNqr5M...",
"email": "john@example.com",
"first_name": "John",
"last_name": "Doe",
"custom_fields": { "company": "Acme" },
"unsubscribed": false,
"audiences": [
{
  "id": "aud_xxx",
  "name": "Newsletter",
  "subscriber": {
    "id": "sub_xxx",
    "subscribed": true,
    "subscribed_at": "2026-02-10T10:00:00.000000+00:00",
    "unsubscribed_at": null,
    "created_at": "2026-02-10T10:00:00.000000+00:00",
    "updated_at": "2026-02-10T10:00:00.000000+00:00"
  }
}
],
"created_at": "2026-02-10T10:00:00.000000+00:00",
"updated_at": "2026-02-10T10:00:00.000000+00:00"
}
{
"error": "Контакт не найден"
}

Создание контакта

Создайте новый контакт в вашем рабочем пространстве. Требуются полные права доступа.

POST/contacts

Тело запроса

emailstringRequired

Адрес электронной почты (должен быть действительным).

first_namestring

Имя (по умолчанию: null).

last_namestring

Фамилия (по умолчанию: null).

custom_fieldsobject

Произвольные пары ключ-значение (по умолчанию: null).

audiencesstring[]

Массив идентификаторов аудиторий для подписки (по умолчанию: пустой массив).

unsubscribedboolean

Глобальный статус отписки (по умолчанию: false).

const response = await fetch('https://api.emailit.com/v2/contacts', {
method: 'POST',
headers: {
'Authorization': 'Bearer em_test_51RxCWJ...vS00p61e0qRE',
'Content-Type': 'application/json'
},
body: JSON.stringify({
email: 'ivan@example.com',
first_name: 'Иван',
last_name: 'Петров',
custom_fields: { company: 'ООО "Рога и копыта"' },
audiences: ['aud_2BxFg7KNqr5M...'],
unsubscribed: false
})
});

const result = await response.json();
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => 'https://api.emailit.com/v2/contacts',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => json_encode([
'email' => 'ivan@example.com',
'first_name' => 'Иван',
'last_name' => 'Петров',
'custom_fields' => ['company' => 'ООО "Рога и копыта"'],
'audiences' => ['aud_2BxFg7KNqr5M...'],
'unsubscribed' => false
]),
CURLOPT_HTTPHEADER => [
'Authorization: Bearer em_test_51RxCWJ...vS00p61e0qRE',
'Content-Type: application/json'
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "Ошибка cURL #:" . $err;
} else {
$result = json_decode($response, true);
print_r($result);
}
import requests

response = requests.post(
'https://api.emailit.com/v2/contacts',
headers={
    'Authorization': 'Bearer em_test_51RxCWJ...vS00p61e0qRE',
    'Content-Type': 'application/json'
},
json={
    'email': 'ivan@example.com',
    'first_name': 'Иван',
    'last_name': 'Петров',
    'custom_fields': {'company': 'ООО "Рога и копыта"'},
    'audiences': ['aud_2BxFg7KNqr5M...'],
    'unsubscribed': False
}
)

result = response.json()
print(result)
require 'net/http'
require 'json'

uri = URI('https://api.emailit.com/v2/contacts')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true

request = Net::HTTP::Post.new(uri)
request['Authorization'] = 'Bearer em_test_51RxCWJ...vS00p61e0qRE'
request['Content-Type'] = 'application/json'
request.body = {
email: 'ivan@example.com',
first_name: 'Иван',
last_name: 'Петров',
custom_fields: { company: 'ООО "Рога и копыта"' },
audiences: ['aud_2BxFg7KNqr5M...'],
unsubscribed: false
}.to_json

response = http.request(request)
result = JSON.parse(response.body)
puts result
package main

import (
"bytes"
"encoding/json"
"fmt"
"net/http"
)

func main() {
url := "https://api.emailit.com/v2/contacts"

data := map[string]interface{}{
    "email":         "ivan@example.com",
    "first_name":    "Иван",
    "last_name":     "Петров",
    "custom_fields": map[string]string{"company": "ООО \"Рога и копыта\""},
    "audiences":     []string{"aud_2BxFg7KNqr5M..."},
    "unsubscribed":  false,
}

jsonData, _ := json.Marshal(data)

req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
req.Header.Set("Authorization", "Bearer em_test_51RxCWJ...vS00p61e0qRE")
req.Header.Set("Content-Type", "application/json")

client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()

var result map[string]interface{}
json.NewDecoder(resp.Body).Decode(&result)
fmt.Println(result)
}
use reqwest;
use serde_json::{json, Value};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = reqwest::Client::new();

let response = client
    .post("https://api.emailit.com/v2/contacts")
    .header("Authorization", "Bearer em_test_51RxCWJ...vS00p61e0qRE")
    .header("Content-Type", "application/json")
    .json(&json!({
        "email": "ivan@example.com",
        "first_name": "Иван",
        "last_name": "Петров",
        "custom_fields": {"company": "ООО \"Рога и копыта\""},
        "audiences": ["aud_2BxFg7KNqr5M..."],
        "unsubscribed": false
    }))
    .send()
    .await?;

let result: Value = response.json().await?;
println!("{:?}", result);

Ok(())
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.net.http.HttpRequest.BodyPublishers;

public class CreateContact {
public static void main(String[] args) throws Exception {
    HttpClient client = HttpClient.newHttpClient();
    
    String jsonBody = "{\"email\":\"ivan@example.com\",\"first_name\":\"Иван\",\"last_name\":\"Петров\",\"custom_fields\":{\"company\":\"ООО \\\"Рога и копыта\\\"\"},\"audiences\":[\"aud_2BxFg7KNqr5M...\"],\"unsubscribed\":false}";
    
    HttpRequest request = HttpRequest.newBuilder()
        .uri(URI.create("https://api.emailit.com/v2/contacts"))
        .header("Authorization", "Bearer em_test_51RxCWJ...vS00p61e0qRE")
        .header("Content-Type", "application/json")
        .POST(BodyPublishers.ofString(jsonBody))
        .build();
    
    HttpResponse<String> response = client.send(request, 
        HttpResponse.BodyHandlers.ofString());
    
    System.out.println(response.body());
}
}
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;

public class CreateContact
{
public static async Task Main()
{
    using (var client = new HttpClient())
    {
        client.DefaultRequestHeaders.Add("Authorization", 
            "Bearer em_test_51RxCWJ...vS00p61e0qRE");
        
        var data = new {
            email = "ivan@example.com",
            first_name = "Иван",
            last_name = "Петров",
            custom_fields = new { company = "ООО \"Рога и копыта\"" },
            audiences = new[] { "aud_2BxFg7KNqr5M..." },
            unsubscribed = false
        };
        var json = JsonConvert.SerializeObject(data);
        var content = new StringContent(json, Encoding.UTF8, "application/json");
        
        var response = await client.PostAsync(
            "https://api.emailit.com/v2/contacts", content);
        
        var result = await response.Content.ReadAsStringAsync();
        Console.WriteLine(result);
    }
}
}
curl -X POST https://api.emailit.com/v2/contacts \
-H "Authorization: Bearer em_test_51RxCWJ...vS00p61e0qRE" \
-H "Content-Type: application/json" \
-d '{
"email": "ivan@example.com",
"first_name": "Иван",
"last_name": "Петров",
"custom_fields": { "company": "ООО \"Рога и копыта\"" },
"audiences": ["aud_2BxFg7KNqr5M..."],
"unsubscribed": false
}'
{
"object": "contact",
"id": "con_2BxFg7KNqr5M...",
"email": "ivan@example.com",
"first_name": "Иван",
"last_name": "Петров",
"custom_fields": { "company": "ООО \"Рога и копыта\"" },
"unsubscribed": false,
"audiences": [
{
  "id": "aud_xxx",
  "name": "Рассылка новостей",
  "subscriber": {
    "id": "sub_xxx",
    "subscribed": true,
    "subscribed_at": "2026-02-10T10:00:00.000000+00:00",
    "unsubscribed_at": null,
    "created_at": "2026-02-10T10:00:00.000000+00:00",
    "updated_at": "2026-02-10T10:00:00.000000+00:00"
  }
}
],
"created_at": "2026-02-10T10:00:00.000000+00:00",
"updated_at": "2026-02-10T10:00:00.000000+00:00"
}
{
"error": "Контакт с таким адресом электронной почты уже существует",
"existing": {
"object": "contact",
"id": "con_...",
"email": "..."
}
}

Обновление контакта

Обновляет существующий контакт в вашем рабочем пространстве. Требует полные права доступа. Контакты можно идентифицировать по ID (con_xxx) или адресу электронной почты.

POST/contacts/{id}

Параметры пути

idstringRequired

ID контакта (con_xxx) или адрес электронной почты.

Тело запроса

emailstring

Новый адрес электронной почты.

first_namestring

Новое имя.

last_namestring

Новая фамилия.

custom_fieldsobject

Заменить пользовательские поля.

unsubscribedboolean

Глобальный статус отписки.

const response = await fetch('https://api.emailit.com/v2/contacts/con_2BxFg7KNqr5M', {
method: 'POST',
headers: {
'Authorization': 'Bearer em_test_51RxCWJ...vS00p61e0qRE',
'Content-Type': 'application/json'
},
body: JSON.stringify({
first_name: 'Анна',
last_name: 'Смирнова',
custom_fields: { company: 'НоваяКомпания' }
})
});

const result = await response.json();
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => 'https://api.emailit.com/v2/contacts/con_2BxFg7KNqr5M',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => json_encode([
'first_name' => 'Анна',
'last_name' => 'Смирнова',
'custom_fields' => ['company' => 'НоваяКомпания']
]),
CURLOPT_HTTPHEADER => [
'Authorization: Bearer em_test_51RxCWJ...vS00p61e0qRE',
'Content-Type: application/json'
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "Ошибка cURL #:" . $err;
} else {
$result = json_decode($response, true);
print_r($result);
}
import requests

response = requests.post(
'https://api.emailit.com/v2/contacts/con_2BxFg7KNqr5M',
headers={
    'Authorization': 'Bearer em_test_51RxCWJ...vS00p61e0qRE',
    'Content-Type': 'application/json'
},
json={
    'first_name': 'Анна',
    'last_name': 'Смирнова',
    'custom_fields': {'company': 'НоваяКомпания'}
}
)

result = response.json()
print(result)
require 'net/http'
require 'json'

uri = URI('https://api.emailit.com/v2/contacts/con_2BxFg7KNqr5M')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true

request = Net::HTTP::Post.new(uri)
request['Authorization'] = 'Bearer em_test_51RxCWJ...vS00p61e0qRE'
request['Content-Type'] = 'application/json'
request.body = {
first_name: 'Анна',
last_name: 'Смирнова',
custom_fields: { company: 'НоваяКомпания' }
}.to_json

response = http.request(request)
result = JSON.parse(response.body)
puts result
package main

import (
"bytes"
"encoding/json"
"fmt"
"net/http"
)

func main() {
url := "https://api.emailit.com/v2/contacts/con_2BxFg7KNqr5M"

data := map[string]interface{}{
    "first_name":    "Анна",
    "last_name":     "Смирнова",
    "custom_fields": map[string]string{"company": "НоваяКомпания"},
}

jsonData, _ := json.Marshal(data)

req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
req.Header.Set("Authorization", "Bearer em_test_51RxCWJ...vS00p61e0qRE")
req.Header.Set("Content-Type", "application/json")

client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()

var result map[string]interface{}
json.NewDecoder(resp.Body).Decode(&result)
fmt.Println(result)
}
use reqwest;
use serde_json::{json, Value};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = reqwest::Client::new();

let response = client
    .post("https://api.emailit.com/v2/contacts/con_2BxFg7KNqr5M")
    .header("Authorization", "Bearer em_test_51RxCWJ...vS00p61e0qRE")
    .header("Content-Type", "application/json")
    .json(&json!({
        "first_name": "Анна",
        "last_name": "Смирнова",
        "custom_fields": {"company": "НоваяКомпания"}
    }))
    .send()
    .await?;

let result: Value = response.json().await?;
println!("{:?}", result);

Ok(())
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import java.net.http.HttpRequest.BodyPublishers;

public class UpdateContact {
public static void main(String[] args) throws Exception {
    HttpClient client = HttpClient.newHttpClient();
    
    String jsonBody = "{\"first_name\":\"Анна\",\"last_name\":\"Смирнова\",\"custom_fields\":{\"company\":\"НоваяКомпания\"}}";
    
    HttpRequest request = HttpRequest.newBuilder()
        .uri(URI.create("https://api.emailit.com/v2/contacts/con_2BxFg7KNqr5M"))
        .header("Authorization", "Bearer em_test_51RxCWJ...vS00p61e0qRE")
        .header("Content-Type", "application/json")
        .POST(BodyPublishers.ofString(jsonBody))
        .build();
    
    HttpResponse<String> response = client.send(request, 
        HttpResponse.BodyHandlers.ofString());
    
    System.out.println(response.body());
}
}
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;

public class UpdateContact
{
public static async Task Main()
{
    using (var client = new HttpClient())
    {
        client.DefaultRequestHeaders.Add("Authorization", 
            "Bearer em_test_51RxCWJ...vS00p61e0qRE");
        
        var data = new {
            first_name = "Анна",
            last_name = "Смирнова",
            custom_fields = new { company = "НоваяКомпания" }
        };
        var json = JsonConvert.SerializeObject(data);
        var content = new StringContent(json, Encoding.UTF8, "application/json");
        
        var response = await client.PostAsync(
            "https://api.emailit.com/v2/contacts/con_2BxFg7KNqr5M", content);
        
        var result = await response.Content.ReadAsStringAsync();
        Console.WriteLine(result);
    }
}
}
curl -X POST https://api.emailit.com/v2/contacts/con_2BxFg7KNqr5M \
-H "Authorization: Bearer em_test_51RxCWJ...vS00p61e0qRE" \
-H "Content-Type: application/json" \
-d '{
"first_name": "Анна",
"last_name": "Смирнова",
"custom_fields": { "company": "НоваяКомпания" }
}'
{
"object": "contact",
"id": "con_2BxFg7KNqr5M...",
"email": "john@example.com",
"first_name": "Анна",
"last_name": "Смирнова",
"custom_fields": { "company": "НоваяКомпания" },
"unsubscribed": false,
"audiences": [
{
  "id": "aud_xxx",
  "name": "Рассылка",
  "subscriber": {
    "id": "sub_xxx",
    "subscribed": true,
    "subscribed_at": "2026-02-10T10:00:00.000000+00:00",
    "unsubscribed_at": null,
    "created_at": "2026-02-10T10:00:00.000000+00:00",
    "updated_at": "2026-02-10T10:00:00.000000+00:00"
  }
}
],
"created_at": "2026-02-10T10:00:00.000000+00:00",
"updated_at": "2026-02-12T09:00:00.000000+00:00"
}
{
"error": "Контакт не найден"
}
{
"error": "Контакт с таким адресом электронной почты уже существует",
"existing": {
"object": "contact",
"id": "con_...",
"email": "..."
}
}

Удаление контакта

Удаляет контакт из вашего рабочего пространства. Требует полных прав доступа. При удалении контакта также удаляются все связанные записи подписчиков. Перед удалением генерируется событие subscriber.deleted для каждого подписчика, затем contact.deleted. Контакты можно идентифицировать по ID (con_xxx) или адресу электронной почты.

DELETE/contacts/{id}

Параметры пути

idstringRequired

ID контакта (con_xxx) или адрес электронной почты.

const response = await fetch('https://api.emailit.com/v2/contacts/con_2BxFg7KNqr5M', {
method: 'DELETE',
headers: {
'Authorization': 'Bearer em_test_51RxCWJ...vS00p61e0qRE',
'Content-Type': 'application/json'
}
});

const result = await response.json();
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => 'https://api.emailit.com/v2/contacts/con_2BxFg7KNqr5M',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'DELETE',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer em_test_51RxCWJ...vS00p61e0qRE',
'Content-Type: application/json'
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "Ошибка cURL #:" . $err;
} else {
$result = json_decode($response, true);
print_r($result);
}
import requests

response = requests.delete(
'https://api.emailit.com/v2/contacts/con_2BxFg7KNqr5M',
headers={
    'Authorization': 'Bearer em_test_51RxCWJ...vS00p61e0qRE',
    'Content-Type': 'application/json'
}
)

result = response.json()
print(result)
require 'net/http'
require 'json'

uri = URI('https://api.emailit.com/v2/contacts/con_2BxFg7KNqr5M')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true

request = Net::HTTP::Delete.new(uri)
request['Authorization'] = 'Bearer em_test_51RxCWJ...vS00p61e0qRE'
request['Content-Type'] = 'application/json'

response = http.request(request)
result = JSON.parse(response.body)
puts result
package main

import (
"fmt"
"net/http"
)

func main() {
url := "https://api.emailit.com/v2/contacts/con_2BxFg7KNqr5M"

req, _ := http.NewRequest("DELETE", url, nil)
req.Header.Set("Authorization", "Bearer em_test_51RxCWJ...vS00p61e0qRE")
req.Header.Set("Content-Type", "application/json")

client := &http.Client{}
resp, _ := client.Do(req)
defer resp.Body.Close()

fmt.Println("Статус:", resp.Status)
}
use reqwest;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = reqwest::Client::new();

let response = client
    .delete("https://api.emailit.com/v2/contacts/con_2BxFg7KNqr5M")
    .header("Authorization", "Bearer em_test_51RxCWJ...vS00p61e0qRE")
    .header("Content-Type", "application/json")
    .send()
    .await?;

println!("Статус: {}", response.status());

Ok(())
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;

public class DeleteContact {
public static void main(String[] args) throws Exception {
    HttpClient client = HttpClient.newHttpClient();
    
    HttpRequest request = HttpRequest.newBuilder()
        .uri(URI.create("https://api.emailit.com/v2/contacts/con_2BxFg7KNqr5M"))
        .header("Authorization", "Bearer em_test_51RxCWJ...vS00p61e0qRE")
        .header("Content-Type", "application/json")
        .DELETE()
        .build();
    
    HttpResponse<String> response = client.send(request, 
        HttpResponse.BodyHandlers.ofString());
    
    System.out.println("Статус: " + response.statusCode());
}
}
using System;
using System.Net.Http;
using System.Threading.Tasks;

public class DeleteContact
{
public static async Task Main()
{
    using (var client = new HttpClient())
    {
        client.DefaultRequestHeaders.Add("Authorization", 
            "Bearer em_test_51RxCWJ...vS00p61e0qRE");
        
        var response = await client.DeleteAsync(
            "https://api.emailit.com/v2/contacts/con_2BxFg7KNqr5M");
        
        Console.WriteLine("Статус: " + response.StatusCode);
    }
}
}
curl -X DELETE https://api.emailit.com/v2/contacts/con_2BxFg7KNqr5M \
-H "Authorization: Bearer em_test_51RxCWJ...vS00p61e0qRE" \
-H "Content-Type: application/json"
{
"object": "contact",
"id": "con_2BxFg7KNqr5M...",
"email": "john@example.com",
"deleted": true
}
{
"error": "Контакт не найден"
}
Локализовано с помощью ИИ