API Beschreibung
Die API dient als zentrale Schnittstelle zwischen Ihrem CRM-System und unserer Plattform. Ihr Hauptzweck ist es, Daten aus bestehenden Systemen automatisiert zu übernehmen und in unser System zu integrieren.
Damit wird sichergestellt, dass:
- Kundendaten ohne manuelle Eingriffe importiert werden können
- Daten aus dem CRM stets aktuell gehalten werden
- Integrationen mit bestehenden Systemlandschaften einfach möglich sind
- Prozesse in Marketing, Vertrieb und Datenanalyse effizienter werden
Kurz gesagt: Die API reduziert manuelle Arbeit und schafft eine saubere, automatisierte Datenbasis aus Ihrem CRM.
Upload Data for Import
POST /importsUploads JSON data for import processing.
Request Header
curl -X POST https://crm.mainition.de/api/v1/imports \
-H "Authorization: Bearer <Your Bearer>" \
-H "Content-Type: application/json" \
-H "Tenant-ID: 1" \
Request Body (JSON Example)
{
"entity": "persons",
"data": [
{
"contact_type": "Customer",
"entity_type": "Person",
"firstname": "John",
"lastname": "Doe",
"company_name": "Doe Inc.",
"email": "john.doe@example.com",
"addresses": [
{
"external_id": "ADDR-001",
"street": "123 Main St",
"city": "New York",
"postal_code": "10001",
"country": "USA"
}
],
"email_bounce": false,
"email_verified": false,
"advertisement_consent": true,
"advertisement_consent_date": "2025-02-07T12:00:00Z",
"advertisement_ban": false,
"is_control_group": false,
"is_duplicate": false,
"phone": "+1234567890",
"is_deleted": false,
"preferred_language": "en",
"last_interaction_date": "2025-01-10T08:30:00Z",
"dossier": {},
"category": ["VIP", "Loyal Customer"],
"qualification_status": "MQL",
"interaction_status": "New",
"is_verified": false,
"is_blocked": false,
"created_at": "2025-02-07T12:00:00Z",
"updated_at": "2025-02-07T12:00:00Z",
"source": "LinkedIn",
"custom_fields": {},
"external_id": "CONTACT-001",
}
],
"options": {
"deduplication": "email",
"update_existing": true,
"update_key": "email"
}
}Response
{
"import_id": 1234,
"status": "processing"
}
Request Parameters
Parameter
Type
Description
entity
data
options.deduplication
options.update_existing
options.update_key
data
options.deduplication
options.update_existing
options.update_key
string
array
string
boolean
string
array
string
boolean
string
The type of data being imported (e.g., contacts, orders).
List of records to import.
Field to check for duplicates (e.g., email).
Whether to update existing records if they match.
Field to use for matching records when update_existing is true (e.g., email, id, external_id).
List of records to import.
Field to check for duplicates (e.g., email).
Whether to update existing records if they match.
Field to use for matching records when update_existing is true (e.g., email, id, external_id).
Check Import Status
GET /imports/{import_id}/statusRetrieves the status of an import job.
Path Parameters
Parameter
Type
Description
import_id
integer
The unique identifier of the import job.
Response Examples
In Progress Response
{
"import_id": 1234,
"status": "processing",
"processed": 500,
"total": 1000
}
Completed Response
{
"import_id": 1234,
"status": "completed",
"success_count": 950,
"error_count": 50
}
Response Fields
Parameter
Type
Description
import_id
status
processed
success_count
error_count
status
processed
success_count
error_count
integer
string
integer
integer
integer
string
integer
integer
integer
The ID of the import job.
Current status (processing, completed, failed).
Number of processed records (if applicable).
Number of successfully imported records.
Number of records that failed to import.
Current status (processing, completed, failed).
Number of processed records (if applicable).
Number of successfully imported records.
Number of records that failed to import.
Retrieve Import Errors
GET /imports/{import_id}/errors
Fetches the list of errors from a completed import.
Path Parameters
Parameter
Type
Description
import_id
integer
The unique identifier of the import job.
Response Examples
{
"import_id": 1234,
"errors": [
{
"row": 15,
"field": "email",
"error": "Invalid email format"
},
{
"row": 50,
"field": "email",
"error": "Missing required field"
}
]
}
Response Fields
Parameter
Type
Description
import_id
errors
row
field
error
errors
row
field
error
integer
array
integer
string
string
array
integer
string
string
The ID of the import job.
List of errors encountered during import.Current status (processing, completed, failed).
The row number in the import file where the error occurred.Number of processed records (if applicable).
The field that caused the error.Number of successfully imported records.
A description of the error.
List of errors encountered during import.Current status (processing, completed, failed).
The row number in the import file where the error occurred.Number of processed records (if applicable).
The field that caused the error.Number of successfully imported records.
A description of the error.
Additional Considerations
Rate Limits
- Maximum 10,000 records per import request.
- API rate limit: 100 requests per minute per user.
Authentication
- API Key required in the Authorization header.
Example Webhook Payload:
{
"import_id": 1234,
"status": "completed",
"success_count": 980,
"error_count": 20,
"errors": [
{ "row": 15, "field": "email", "error": "Invalid format" }
]
}
Webhook for Import Completion
- Webhook Event: IMPORT_COMPLETED
For API support, please contact support@mainition.de

