Download OpenAPI specification:Download
The Complero API is organized around REST.
Our API has predictable resource-oriented URLs,
accepts form-encoded request bodies,
returns JSON-encoded responses, and uses standard HTTP response codes, authentication, and verbs.
You can use test data, which doesn’t affect your live data or interact with the Contacts. The test flag determines whether the Contact is a live or test Contact.
The Complero's API uses bulk operations for data heavy transfers and processes them in the background. You can monitor the operations to see the status of your request.
Complero uses conventional HTTP response codes to indicate
the success or failure of an API request.
In general: Codes in the 2xx
range indicate success.
Codes in the 4xx
range indicate an error
that failed given the information provided
(e.g., a required parameter was omitted, a charge failed, etc.).
Codes in the 5xx
range indicate an error with Complero’s servers
(these are rare).
Each validation error is mapped to a specific code.
Tags related to standard validation rules (such as email
, uuid
, min
, etc.) return the generic code v1c001
.
The required
tag is treated as a special case and returns v1c002.
Tags specific to Complero's domain, such as mobilenumber
, faxnumber
, or zipcode
, return v1c004
.
Any other unknown or unrecognized tags fall back to the generic code v1c003
.
Each API request has an associated request identifier.
You can find this value in the response headers, under Request-Id
.
To expedite the resolution process, provide the request identifier when you contact us about a specific request.
Get endpoints that return an array of Models support cursor based pagination.
By default, it returns only 1000 events per page and next page can be requested by passing cursor
query parameter
with value from response header Next-Cursor
.
For convenience, response also has header Next-Link
which contains full link what can be used
for requesting next page.
Headers Next-Cursor
and Next-Link
will be present in the headers as long as next page exists.
Get documentation PDF for Contact by EventID
contactID required | string documentation for Contact with specified ID. Returns latest documentation file when eventID not passed |
eventID required | string when passed returns documentation for specified Event |
Get Contact updates
type | string Enum: "confirm" "update" "documentation" filter events by one or more types |
from | string Example: from=2024-09-17T09:19:04Z events occurred from this time in an ISO 8601 format |
to | string Example: to=2024-10-17T14:50:00Z events occurred up to this time in an ISO 8601 format |
limit | string Default: "1000" number of events per page |
cursor | string Example: cursor=MDAwMDAwMDAtMDAwMC0 pagination cursor to next page |
[- {
- "contact": {
- "birthday": "1985-11-23",
- "company": "Beispiel GmbH",
- "data": {
- "bevorzugtes_kontaktfenster": "09:00-17:00 CET",
- "crm_lead_score": "92"
}, - "documentation": {
- "consents": [
- {
- "granted": true,
- "granted_agent": "Firefox/121.0",
- "granted_at": "2024-10-12T09:22:41Z",
- "granted_ip": "203.0.113.55",
- "id": "cnt_adv_001",
- "type": "advertisement"
}
]
}, - "first_name": "Max",
- "id": "K-2025-00012345",
- "language": "de",
- "last_name": "Mustermann",
- "nationality": "DE",
- "position": "Vertriebsleiter",
- "salutation": "Herr",
- "section_private": {
- "addresses": [
- {
- "city": "München",
- "country": "DE",
- "house_number": "12a",
- "street": "Musterstraße",
- "zip_code": "80331"
}
], - "emails": [
- "max.mustermann@example.de"
], - "mobile_numbers": [
- {
- "area": "171",
- "international_formatted": "+49 171 1234567",
- "national_formatted": "0171 1234567",
- "number": "1234567",
- "original": "+49 171 1234567"
}
]
}, - "section_work": {
- "addresses": [
- {
- "addition": "2. OG",
- "city": "Hamburg",
- "country": "DE",
- "house_number": "7",
- "street": "Industriepark",
- "zip_code": "20457"
}
], - "emails": [
- "m.mustermann@beispiel-gmbh.de"
], - "fax_numbers": [
- {
- "area": "40",
- "number": "5550123499",
- "original": "+49 40 55501234-99"
}
], - "phone_numbers": [
- {
- "area": "40",
- "international_formatted": "+49 40 55501234-0",
- "national_formatted": "040 55501234-0",
- "number": "555012340",
- "original": "+49 40 55501234-0"
}
]
}, - "tags": [
- "premiumkunde",
- "newsletter"
],
}, - "contact_id": "K-2025-00012345",
- "event_id": "2ad40cba-3d5f-4bb9-a123-997f620dee87",
- "event_time": "2025-04-25T12:48:03Z",
- "type": "update"
}, - {
- "contact_id": "K-2025-00012345",
- "event_documentation_url": "https://cdn.example.com/docs/contacts/2ad40cba-3d5f-4bb9-a123-997f620dee87.pdf",
- "event_id": "2ad40cba-3d5f-4bb9-a123-997f620dee87",
- "event_time": "2025-04-25T12:48:03Z",
- "type": "documentation"
}, - {
- "contact": {
- "birthday": "1992-03-08",
- "company": "Demo AG",
- "data": {
- "bevorzugtes_kontaktfenster": "08:00-16:00 CET",
- "crm_lead_score": "78"
}, - "documentation": {
- "consents": [
- {
- "granted": true,
- "granted_agent": "Edge/122.0",
- "granted_at": "2024-11-05T14:17:09Z",
- "granted_ip": "198.51.100.77",
- "id": "cnt_adv_002",
- "type": "advertisement"
}
]
}, - "first_name": "Maximilian",
- "id": "K-2025-00067890",
- "language": "de",
- "last_name": "Mustermann",
- "nationality": "DE",
- "position": "Projektmanager",
- "salutation": "Herr",
- "section_private": {
- "addresses": [
- {
- "city": "Köln",
- "country": "DE",
- "house_number": "25",
- "street": "Hauptstraße",
- "zip_code": "50667"
}
], - "emails": [
- "maximilian.mustermann@example.de"
], - "mobile_numbers": [
- {
- "area": "172",
- "international_formatted": "+49 172 6543210",
- "national_formatted": "0172 6543210",
- "number": "6543210",
- "original": "+49 172 6543210"
}
]
}, - "section_work": {
- "addresses": [
- {
- "addition": "3. OG",
- "city": "Düsseldorf",
- "country": "DE",
- "house_number": "9",
- "street": "Technopark",
- "zip_code": "40219"
}
], - "emails": [
- "mustermann.m@demo-ag.de"
], - "fax_numbers": [
- {
- "area": "211",
- "number": "98765499",
- "original": "+49 211 987654-99"
}
], - "phone_numbers": [
- {
- "area": "211",
- "international_formatted": "+49 211 987654-0",
- "national_formatted": "0211 987654-0",
- "number": "9876540",
- "original": "+49 211 987654-0"
}
]
}, - "tags": [
- "neukunde",
- "webinar-teilnehmer"
],
}, - "contact_id": "K-2025-00067890",
- "event_id": "b7f509f3-e805-4743-b9a6-efa9e651e543",
- "event_time": "2025-04-25T13:05:41Z",
- "type": "confirm"
}
]
Get only latest Contact updates that have not yet been received via any API endpoint
type | string Enum: "confirm" "update" "documentation" filter events by one or more types |
limit | string Default: "1000" number of events per request |
[- {
- "contact": {
- "birthday": "string",
- "company": "string",
- "data": {
- "property1": "string",
- "property2": "string"
}, - "degree": "string",
- "documentation": {
- "consents": [
- {
- "granted": true,
- "granted_agent": "string",
- "granted_at": "string",
- "granted_ip": "string",
- "id": "string",
- "type": "string"
}
]
}, - "employee_id": "string",
- "first_name": "string",
- "id": "string",
- "language": "string",
- "last_name": "string",
- "name_suffix": "string",
- "nationality": "string",
- "position": "string",
- "salutation": "string",
- "section_private": {
- "addresses": [
- {
- "addition": "string",
- "city": "string",
- "country": "string",
- "district": "string",
- "extra_1": "string",
- "extra_2": "string",
- "extra_3": "string",
- "house_number": "string",
- "street": "string",
- "zip_code": "string"
}
], - "emails": [
- "string"
], - "fax_numbers": [
- {
- "area": "string",
- "number": "string",
- "original": "string"
}
], - "mobile_numbers": [
- {
- "area": "string",
- "international_formatted": "string",
- "national_formatted": "string",
- "number": "string",
- "original": "string"
}
], - "phone_numbers": [
- {
- "area": "string",
- "international_formatted": "string",
- "national_formatted": "string",
- "number": "string",
- "original": "string"
}
]
}, - "section_work": {
- "addresses": [
- {
- "addition": "string",
- "city": "string",
- "country": "string",
- "district": "string",
- "extra_1": "string",
- "extra_2": "string",
- "extra_3": "string",
- "house_number": "string",
- "street": "string",
- "zip_code": "string"
}
], - "emails": [
- "string"
], - "fax_numbers": [
- {
- "area": "string",
- "number": "string",
- "original": "string"
}
], - "mobile_numbers": [
- {
- "area": "string",
- "international_formatted": "string",
- "national_formatted": "string",
- "number": "string",
- "original": "string"
}
], - "phone_numbers": [
- {
- "area": "string",
- "international_formatted": "string",
- "national_formatted": "string",
- "number": "string",
- "original": "string"
}
]
}, - "tags": [
- "string"
], - "title": "string",
- "website": "string"
}, - "contact_id": "string",
- "event_id": "string",
- "event_time": "string",
- "type": "update"
}
]
Triggers new update or confirm event and creates a static generic documentation of the consents
payload
object (Contact) | |
type | string Enum: "update" "confirm" |
{- "contact": {
- "birthday": "string",
- "company": "string",
- "data": {
- "property1": "string",
- "property2": "string"
}, - "degree": "string",
- "documentation": {
- "consents": [
- {
- "granted": true,
- "granted_agent": "string",
- "granted_at": "string",
- "granted_ip": "string",
- "id": "string",
- "type": "string"
}
]
}, - "employee_id": "string",
- "first_name": "string",
- "id": "string",
- "language": "string",
- "last_name": "string",
- "name_suffix": "string",
- "nationality": "string",
- "position": "string",
- "salutation": "string",
- "section_private": {
- "addresses": [
- {
- "addition": "string",
- "city": "string",
- "country": "string",
- "district": "string",
- "extra_1": "string",
- "extra_2": "string",
- "extra_3": "string",
- "house_number": "string",
- "street": "string",
- "zip_code": "string"
}
], - "emails": [
- "string"
], - "fax_numbers": [
- {
- "area": "string",
- "number": "string",
- "original": "string"
}
], - "mobile_numbers": [
- {
- "area": "string",
- "international_formatted": "string",
- "national_formatted": "string",
- "number": "string",
- "original": "string"
}
], - "phone_numbers": [
- {
- "area": "string",
- "international_formatted": "string",
- "national_formatted": "string",
- "number": "string",
- "original": "string"
}
]
}, - "section_work": {
- "addresses": [
- {
- "addition": "string",
- "city": "string",
- "country": "string",
- "district": "string",
- "extra_1": "string",
- "extra_2": "string",
- "extra_3": "string",
- "house_number": "string",
- "street": "string",
- "zip_code": "string"
}
], - "emails": [
- "string"
], - "fax_numbers": [
- {
- "area": "string",
- "number": "string",
- "original": "string"
}
], - "mobile_numbers": [
- {
- "area": "string",
- "international_formatted": "string",
- "national_formatted": "string",
- "number": "string",
- "original": "string"
}
], - "phone_numbers": [
- {
- "area": "string",
- "international_formatted": "string",
- "national_formatted": "string",
- "number": "string",
- "original": "string"
}
]
}, - "tags": [
- "string"
], - "title": "string",
- "website": "string"
}, - "type": "update"
}
{- "message": "string"
}
Bulk Upload up to 1000 Contacts. If Contacts already exist their data will be synced with the content of this request.
payload
birthday | string |
company | string |
object | |
degree | string |
object (Documentation) | |
employee_id | string |
first_name required | string |
id required | string |
language | string |
last_name required | string |
name_suffix | string |
nationality | string |
position | string |
salutation | string |
object (Section) | |
object (Section) | |
title | string |
website | string |
[- {
- "birthday": "string",
- "company": "string",
- "data": {
- "property1": "string",
- "property2": "string"
}, - "degree": "string",
- "documentation": {
- "consents": [
- {
- "granted": true,
- "granted_agent": "string",
- "granted_at": "string",
- "granted_ip": "string",
- "id": "string",
- "type": "string"
}
]
}, - "employee_id": "string",
- "first_name": "string",
- "id": "string",
- "language": "string",
- "last_name": "string",
- "name_suffix": "string",
- "nationality": "string",
- "position": "string",
- "salutation": "string",
- "section_private": {
- "addresses": [
- {
- "addition": "string",
- "city": "string",
- "country": "string",
- "district": "string",
- "extra_1": "string",
- "extra_2": "string",
- "extra_3": "string",
- "house_number": "string",
- "street": "string",
- "zip_code": "string"
}
], - "emails": [
- {
- "email": "string"
}
], - "fax_numbers": [
- {
- "number": "string"
}
], - "mobile_numbers": [
- {
- "number": "string"
}
], - "phone_numbers": [
- {
- "number": "string"
}
]
}, - "section_work": {
- "addresses": [
- {
- "addition": "string",
- "city": "string",
- "country": "string",
- "district": "string",
- "extra_1": "string",
- "extra_2": "string",
- "extra_3": "string",
- "house_number": "string",
- "street": "string",
- "zip_code": "string"
}
], - "emails": [
- {
- "email": "string"
}
], - "fax_numbers": [
- {
- "number": "string"
}
], - "mobile_numbers": [
- {
- "number": "string"
}
], - "phone_numbers": [
- {
- "number": "string"
}
]
}, - "title": "string",
- "website": "string"
}
]
{- "message": "string"
}
Get the full Contact by their ID in their most updated state.
id required | string search Contact by their ID |
{- "birthday": "string",
- "company": "string",
- "data": {
- "property1": "string",
- "property2": "string"
}, - "degree": "string",
- "documentation": {
- "consents": [
- {
- "granted": true,
- "granted_agent": "string",
- "granted_at": "string",
- "granted_ip": "string",
- "id": "string",
- "type": "string"
}
]
}, - "employee_id": "string",
- "first_name": "string",
- "id": "string",
- "language": "string",
- "last_name": "string",
- "name_suffix": "string",
- "nationality": "string",
- "position": "string",
- "salutation": "string",
- "section_private": {
- "addresses": [
- {
- "addition": "string",
- "city": "string",
- "country": "string",
- "district": "string",
- "extra_1": "string",
- "extra_2": "string",
- "extra_3": "string",
- "house_number": "string",
- "street": "string",
- "zip_code": "string"
}
], - "emails": [
- "string"
], - "fax_numbers": [
- {
- "area": "string",
- "number": "string",
- "original": "string"
}
], - "mobile_numbers": [
- {
- "area": "string",
- "international_formatted": "string",
- "national_formatted": "string",
- "number": "string",
- "original": "string"
}
], - "phone_numbers": [
- {
- "area": "string",
- "international_formatted": "string",
- "national_formatted": "string",
- "number": "string",
- "original": "string"
}
]
}, - "section_work": {
- "addresses": [
- {
- "addition": "string",
- "city": "string",
- "country": "string",
- "district": "string",
- "extra_1": "string",
- "extra_2": "string",
- "extra_3": "string",
- "house_number": "string",
- "street": "string",
- "zip_code": "string"
}
], - "emails": [
- "string"
], - "fax_numbers": [
- {
- "area": "string",
- "number": "string",
- "original": "string"
}
], - "mobile_numbers": [
- {
- "area": "string",
- "international_formatted": "string",
- "national_formatted": "string",
- "number": "string",
- "original": "string"
}
], - "phone_numbers": [
- {
- "area": "string",
- "international_formatted": "string",
- "national_formatted": "string",
- "number": "string",
- "original": "string"
}
]
}, - "tags": [
- "string"
], - "title": "string",
- "website": "string"
}
Individuals employed by your entity. Adding employees is optional, but recommended for Companies with branch offices or when different groups of contacts are managed by separate agencies or Employees. If no employee is specified, all uploaded Contacts will be assigned to the default Employee.
Create Employees if they don't exist in the Complero system or update existing ones.
payload
city | string |
object | |
department | string |
email required | string |
fax_number | string |
first_name required | string |
house_number | string |
id required | string |
last_name | string |
phone_number | string |
position | string |
profile_picture_url | string |
street | string |
tags | Array of strings |
website | string |
zip_code | string |
[- {
- "city": "string",
- "data": {
- "property1": "string",
- "property2": "string"
}, - "department": "string",
- "email": "string",
- "fax_number": "string",
- "first_name": "string",
- "house_number": "string",
- "id": "string",
- "last_name": "string",
- "phone_number": "string",
- "position": "string",
- "profile_picture_url": "string",
- "street": "string",
- "tags": [
- "string"
], - "website": "string",
- "zip_code": "string"
}
]
{- "message": "string",
- "validation_errors": {
- "property1": {
- "property1": {
- "code": "string",
- "message": "string"
}, - "property2": {
- "code": "string",
- "message": "string"
}
}, - "property2": {
- "property1": {
- "code": "string",
- "message": "string"
}, - "property2": {
- "code": "string",
- "message": "string"
}
}
}
}
Get the full Employee by their Native ID.
id required | string Employee Native ID |
{- "city": "string",
- "data": {
- "property1": "string",
- "property2": "string"
}, - "department": "string",
- "email": "string",
- "fax_number": "string",
- "first_name": "string",
- "house_number": "string",
- "id": "string",
- "last_name": "string",
- "phone_number": "string",
- "position": "string",
- "profile_picture_url": "string",
- "street": "string",
- "tags": [
- "string"
], - "website": "string",
- "zip_code": "string"
}
Returns a list of Operations. The Operations returned are sorted by creation date descending.
from | string Example: from=2024-09-17T09:19:04Z updates made From the date in a ISO 8601 format |
to | string Example: to=2024-10-17T14:50:00Z updates made To the date in a ISO 8601 format |
limit | string Default: "1000" number of events per page |
cursor | string Example: cursor=MDAwMDAwMDAtMDAwMC0 pagination cursor to next page |
[- {
- "created_at": "string",
- "id": "string",
- "items": [
- {
- "id": "string",
- "model_id": "string",
- "status": "string"
}
], - "model": "string",
- "status": "string",
- "type": "string"
}
]
Returns a single Operation.
id required | string the id of the operation |
{- "created_at": "string",
- "id": "string",
- "items": [
- {
- "id": "string",
- "model_id": "string",
- "status": "string"
}
], - "model": "string",
- "status": "string",
- "type": "string"
}