contacts.import_create
Importar contatos de um arquivo. Enfileira a importação; o processamento roda em segundo plano, em lotes de 500. Acompanhe por contacts.import_get.
Entrada: fileName, header (cabeçalho do arquivo), as linhas e mapping. Linhas: rows (já lidas no navegador, até 50 000, cada uma na ordem do cabeçalho) ou fileId (o CSV cru enviado com contacts.import_upload_url, até 100 MB e 500 000 linhas; o servidor lê o arquivo, confere que o cabeçalho é igual a header e conta as linhas, e até lá total fica 0). mapping: coluna do arquivo -> ignore, uma chave do contato (contact/name, email, phone/whatsapp (com DDI; 10 ou 11 dígitos ganham 55), secondaryEmail, document, city, state, profession, language, gender (masculino/feminino/outro), birthday (DD/MM/AAAA ou AAAA-MM-DD), instagram, linkedin, telegram, lgpd (sim/não)), cf:<id do campo personalizado> ou consent:<canal> (sim/não = opt-in/opt-out; canais whatsapp, email, sms, instagram, telegram, voice). E-mail ou telefone mapeado é obrigatório; um campo só pode receber uma coluna.
Identidade: telefone, senão e-mail. Contato que já existe só tem os campos vazios preenchidos (mescla); opt-out importado sempre vale. Contatos novos ficam com origem import (detalhe = nome do arquivo) e visíveis para quem importou. tagIds e listId valem para todas as linhas importadas. Eventos de automação (contato criado, tag, campo) não disparam na importação.
- Endpoint:
POST https://app.atomiks.com.br/api/v1/contacts.import_create(corpo JSON) - Quem pode chamar: membro da conta
- Escopo da chave:
crm:write - Grava dados: sim
- Pela chave de API: sim
- Ferramenta MCP:
contacts_import_create - Ficha em JSON:
https://app.atomiks.com.br/api/v1/openapi.json(operationIdcontacts.import_create)
Entrada
| Campo | Tipo | Obrigatório | Nota |
|---|---|---|---|
fileName | string | sim | |
header | string[] | sim | |
rows | string[][] | não | |
fileId | string (uuid) | não | |
mapping | object | sim | |
tagIds | string (uuid)[] | não | |
listId | string (uuid) | não |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"fileName": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"header": {
"minItems": 1,
"maxItems": 200,
"type": "array",
"items": {
"type": "string",
"maxLength": 200
}
},
"rows": {
"minItems": 1,
"maxItems": 50000,
"type": "array",
"items": {
"maxItems": 200,
"type": "array",
"items": {
"type": "string",
"maxLength": 2000
}
}
},
"fileId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"mapping": {
"type": "object",
"propertyNames": {
"type": "string",
"maxLength": 200
},
"additionalProperties": {
"type": "string",
"maxLength": 60
}
},
"tagIds": {
"maxItems": 50,
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"listId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"required": [
"fileName",
"header",
"mapping"
]
}Exemplo
curl -X POST https://app.atomiks.com.br/api/v1/contacts.import_create \
-H "Authorization: Bearer $ATOMIKS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"fileName":"clientes.csv","header":["Nome","Celular"],"rows":[["Maria","11912345678"]],"mapping":{"Nome":"name","Celular":"phone"}}'CLI:
node cli/atomiks.mjs contacts.import_create --json '{"fileName":"clientes.csv","header":["Nome","Celular"],"rows":[["Maria","11912345678"]],"mapping":{"Nome":"name","Celular":"phone"}}'MCP: ferramenta contacts_import_create com a mesma entrada.
Saída
Sucesso: {"data": ...} com o formato abaixo.
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"importId": {
"type": "string"
}
},
"required": [
"importId"
],
"additionalProperties": false
}Erros
{"error": {"code", "message", "requestId"}}. Códigos: invalid_input (400), unauthorized (401), forbidden / account_pending / scope_missing (403), not_found (404), limit_reached (409), internal (500).