Skip to main content
POST
Create several contacts in one call. Partial success is normal; read the response per record rather than assuming every row landed. Writes land in the AIsa workspace, which every caller shares: the record becomes visible and editable by others, and there is no per-caller isolation.
First time? Point any MCP client at https://mcp.aisa.one/mcp — Claude Code, Codex, Cursor, VS Code and the rest. Authorization is OAuth: the client opens a browser, you click Allow once, and there is no key to paste. Your agent then reaches every endpoint through a few meta tools: search, list_categories, get_details and batch_quote are free, batch_use is billed per call. Setup per client is in Connect via MCP; the live tool list and what each call costs are on aisa.one/mcp.
Set this endpoint up in your agent →

Request contract

Complete OpenAPI definition Effective request and pricing declaration (including authentication and referenced schemas):

Cost and request rules

Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ. Published reference values are not an account-specific quote or a settled charge. For endpoints supporting X-AISA-Cost-Mode: quote, obtain a free quote for your exact request before execution; reconcile the settled cost with response metadata and Usage Logs. USD amounts use 1,000,000 integer micro-USD per dollar.
  • Default request reference estimate (USD): 0.012
  • Cost contract: fixed_success
  • Settlement evidence source: request_snapshot

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Body

application/json
contacts
object[]
required

Array of contact objects to create (maximum 100 contacts per request)

Maximum array length: 100
append_label_names
string[]

Array of label names to add to ALL contacts in this request

Example:
owner_id
string

Owner user ID applied to all contacts in this batch. Defaults to current user if omitted. Returns 422 if the ID does not belong to the current team.

Example:

"507f1f77bcf86cd799439013"

run_dedupe
boolean
default:false

Enable full deduplication across all sources. When false (default), creates duplicates for non-email_import sources and merges with email_import placeholders only. When true, returns existing contacts in existing_contacts without modifying them (except email_import placeholders, which are still merged).

Matching is checked in order: id, CRM identifiers, person_id, email (against the contact's primary and additional emails), then name plus company (matched on email domain, organization_id, or organization_name).

Unlike create a contact, this endpoint never overwrites a matched contact's fields.

Example:

true

Response

Successful response

created_contacts
string

Contacts created in this request

created_contacts[].account_id
string

Account ID

created_contacts[].email
string

Email

created_contacts[].first_name
string

First name

created_contacts[].id
string

Contact ID

created_contacts[].last_name
string

Last name

created_contacts[].organization_name
string

Organization name

created_contacts[].owner_id
string

Owner ID

created_contacts[].phone_numbers
string

Phone numbers

created_contacts[].title
string

Title

created_contacts[].typed_custom_fields
object

Typed custom fields object

created_contacts[].updated_at
string

Updated timestamp

existing_contacts
string

Contacts that already existed (dedupe matches)

existing_contacts[].account_id
string

Account ID

existing_contacts[].email
string

Email

existing_contacts[].first_name
string

First name

existing_contacts[].id
string

Contact ID

existing_contacts[].last_name
string

Last name

existing_contacts[].organization_name
string

Organization name

existing_contacts[].owner_id
string

Owner ID

existing_contacts[].phone_numbers
string

Phone numbers

existing_contacts[].title
string

Title

existing_contacts[].typed_custom_fields
object

Typed custom fields object

existing_contacts[].updated_at
string

Updated timestamp