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 /imports

Uploads 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
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).

Check Import Status

GET /imports/{import_id}/status

Retrieves 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

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.

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
integer

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.

 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

Inhaltsverzeichnis

Ansprechpartner zum Projekt

Dr. Andreas Alin
Dr. Andreas Alin
sales@mainition.de