curl --request POST \
--url https://api.aisa.one/apis/v1/apollo/contacts/bulk_create \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"contacts": [
{
"email": "john.doe@example.com",
"first_name": "John",
"last_name": "Doe",
"organization_name": "Acme Corporation",
"title": "Senior Manager"
},
{
"email": "jane.smith@example.com",
"first_name": "Jane",
"last_name": "Smith",
"linkedin_url": "https://www.linkedin.com/in/jane-smith-4c8e21a9",
"organization_name": "TechStart Inc",
"title": "VP of Sales"
}
]
}
'{
"created_contacts": "<string>",
"created_contacts[].account_id": "<string>",
"created_contacts[].email": "<string>",
"created_contacts[].first_name": "<string>",
"created_contacts[].id": "<string>",
"created_contacts[].last_name": "<string>",
"created_contacts[].organization_name": "<string>",
"created_contacts[].owner_id": "<string>",
"created_contacts[].phone_numbers": "<string>",
"created_contacts[].title": "<string>",
"created_contacts[].typed_custom_fields": {},
"created_contacts[].updated_at": "<string>",
"existing_contacts": "<string>",
"existing_contacts[].account_id": "<string>",
"existing_contacts[].email": "<string>",
"existing_contacts[].first_name": "<string>",
"existing_contacts[].id": "<string>",
"existing_contacts[].last_name": "<string>",
"existing_contacts[].organization_name": "<string>",
"existing_contacts[].owner_id": "<string>",
"existing_contacts[].phone_numbers": "<string>",
"existing_contacts[].title": "<string>",
"existing_contacts[].typed_custom_fields": {},
"existing_contacts[].updated_at": "<string>"
}Bulk Create Contacts
Create several contacts in one call.
curl --request POST \
--url https://api.aisa.one/apis/v1/apollo/contacts/bulk_create \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"contacts": [
{
"email": "john.doe@example.com",
"first_name": "John",
"last_name": "Doe",
"organization_name": "Acme Corporation",
"title": "Senior Manager"
},
{
"email": "jane.smith@example.com",
"first_name": "Jane",
"last_name": "Smith",
"linkedin_url": "https://www.linkedin.com/in/jane-smith-4c8e21a9",
"organization_name": "TechStart Inc",
"title": "VP of Sales"
}
]
}
'{
"created_contacts": "<string>",
"created_contacts[].account_id": "<string>",
"created_contacts[].email": "<string>",
"created_contacts[].first_name": "<string>",
"created_contacts[].id": "<string>",
"created_contacts[].last_name": "<string>",
"created_contacts[].organization_name": "<string>",
"created_contacts[].owner_id": "<string>",
"created_contacts[].phone_numbers": "<string>",
"created_contacts[].title": "<string>",
"created_contacts[].typed_custom_fields": {},
"created_contacts[].updated_at": "<string>",
"existing_contacts": "<string>",
"existing_contacts[].account_id": "<string>",
"existing_contacts[].email": "<string>",
"existing_contacts[].first_name": "<string>",
"existing_contacts[].id": "<string>",
"existing_contacts[].last_name": "<string>",
"existing_contacts[].organization_name": "<string>",
"existing_contacts[].owner_id": "<string>",
"existing_contacts[].phone_numbers": "<string>",
"existing_contacts[].title": "<string>",
"existing_contacts[].typed_custom_fields": {},
"existing_contacts[].updated_at": "<string>"
}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.Request contract
- Method and path: POST /apis/v1/apollo/contacts/bulk_create
- Availability: enabled
- Request URL template: https://api.aisa.one/apis/v1/apollo/contacts/bulk_create
- Runtime facts: 9ab7612cf2d53be794cbf1d65d4a257f986ac6783e53c7c3a5d868e4593061c3
{
"operationId": "post_apollo_contacts_bulk_create",
"method": "POST",
"path": "/apis/v1/apollo/contacts/bulk_create",
"servers": [
{
"url": "https://api.aisa.one"
}
],
"parameters": [],
"security": [
{
"bearerAuth": []
}
],
"requestBody": {
"content": {
"application/json": {
"examples": {
"Basic Contact Creation": {
"value": {
"contacts": [
{
"email": "john.doe@example.com",
"first_name": "John",
"last_name": "Doe",
"organization_name": "Acme Corporation",
"title": "Senior Manager"
},
{
"email": "jane.smith@example.com",
"first_name": "Jane",
"last_name": "Smith",
"linkedin_url": "https://www.linkedin.com/in/jane-smith-4c8e21a9",
"organization_name": "TechStart Inc",
"title": "VP of Sales"
}
]
}
},
"With CRM IDs (Returns Existing Without Updating)": {
"value": {
"contacts": [
{
"email": "john.doe@example.com",
"first_name": "John",
"last_name": "Doe",
"phone": "+1-555-0159",
"salesforce_contact_id": "003xx000004TmiQAAS"
},
{
"email": "jane.smith@example.com",
"first_name": "Jane",
"hubspot_id": "12345678",
"last_name": "Smith"
}
]
}
},
"With Custom Fields and Labels": {
"value": {
"append_label_names": [
"VIP",
"Decision Maker"
],
"contacts": [
{
"contact_stage_id": "507f1f77bcf86cd799439014",
"email": "sarah.whitfield@example.com",
"first_name": "Sarah",
"last_name": "Whitfield",
"organization_name": "Enterprise Corp",
"title": "CTO",
"typed_custom_fields": {
"60c39ed82bd02f01154c470a": "2025-12-31",
"60c39ed82bd02f01154c470b": "High Priority"
}
}
]
}
},
"With Full Deduplication (Returns Existing Without Updating)": {
"value": {
"contacts": [
{
"email": "existing@example.com",
"first_name": "New",
"last_name": "Name",
"title": "New Title"
}
],
"run_dedupe": true
}
},
"With Multiple Contact Details": {
"value": {
"contacts": [
{
"contact_emails": [
{
"email": "michael.brown@example.com",
"position": 0
},
{
"email": "mbrown@example.com",
"position": 1
}
],
"first_name": "Michael",
"last_name": "Brown",
"organization_name": "Tech Solutions",
"phone_numbers": [
{
"position": 0,
"raw_number": "+1-555-0135"
},
{
"position": 1,
"raw_number": "+1-555-0122"
}
]
}
]
}
},
"With Top-Level Owner Assignment": {
"value": {
"contacts": [
{
"account_id": "507f1f77bcf86cd799439011",
"email": "alice.chen@example.com",
"first_name": "Alice",
"last_name": "Chen",
"organization_name": "CloudCo",
"title": "Director of Engineering"
},
{
"account_id": "507f1f77bcf86cd799439011",
"email": "bob.lee@example.com",
"first_name": "Bob",
"last_name": "Lee",
"organization_name": "CloudCo",
"title": "Head of Product"
}
],
"owner_id": "507f1f77bcf86cd799439013"
}
}
},
"schema": {
"properties": {
"append_label_names": {
"description": "Array of label names to add to ALL contacts in this request",
"example": [
"Hot Lead",
"Q1 2024"
],
"items": {
"type": "string"
},
"type": "array"
},
"contacts": {
"description": "Array of contact objects to create (maximum 100 contacts per request)",
"items": {
"properties": {
"account_id": {
"description": "Associated account ID",
"example": "507f1f77bcf86cd799439011",
"type": "string"
},
"contact_emails": {
"description": "Array of email objects with position",
"items": {
"properties": {
"email": {
"example": "john.doe@example.com",
"type": "string"
},
"position": {
"example": 0,
"type": "integer"
}
},
"type": "object"
},
"type": "array"
},
"contact_stage_id": {
"description": "Contact stage ID",
"example": "507f1f77bcf86cd799439014",
"type": "string"
},
"email": {
"description": "Contact's email address",
"example": "john.doe@example.com",
"type": "string"
},
"facebook_url": {
"description": "Facebook profile URL",
"example": "https://www.facebook.com/johndoe",
"type": "string"
},
"first_name": {
"description": "Contact's first name",
"example": "John",
"type": "string"
},
"hubspot_id": {
"description": "HubSpot ID for matching and deduplication",
"example": "12345678",
"type": "string"
},
"last_name": {
"description": "Contact's last name",
"example": "Doe",
"type": "string"
},
"linkedin_url": {
"description": "LinkedIn profile URL",
"example": "https://www.linkedin.com/in/john-doe-3f9a7c21",
"type": "string"
},
"organization_id": {
"description": "Associated organization ID",
"example": "507f1f77bcf86cd799439012",
"type": "string"
},
"organization_name": {
"description": "Company/organization name",
"example": "Acme Corporation",
"type": "string"
},
"outreach_id": {
"description": "Outreach.io ID",
"example": "98765",
"type": "string"
},
"phone": {
"description": "Phone number",
"example": "+1-555-0135",
"type": "string"
},
"phone_numbers": {
"description": "Array of phone number objects",
"items": {
"properties": {
"position": {
"example": 0,
"type": "integer"
},
"raw_number": {
"example": "+1-555-0135",
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"phone_status_cd": {
"description": "Phone validation status",
"type": "string"
},
"photo_url": {
"description": "Profile photo URL",
"example": "https://example.com/photo.jpg",
"type": "string"
},
"present_raw_address": {
"description": "Physical address",
"example": "San Francisco, CA",
"type": "string"
},
"primary_title": {
"description": "Primary job title (takes precedence over title)",
"example": "VP of Sales",
"type": "string"
},
"salesforce_account_id": {
"description": "Salesforce Account ID",
"example": "001pJNj9pix2idKsfj",
"type": "string"
},
"salesforce_contact_id": {
"description": "Salesforce Contact ID for matching",
"example": "003xx000004TmiQAAS",
"type": "string"
},
"salesforce_id": {
"description": "Salesforce ID for matching and deduplication",
"example": "003xx000004TmiQAAS",
"type": "string"
},
"salesforce_lead_id": {
"description": "Salesforce Lead ID",
"example": "00Qxx000001abcDEFG",
"type": "string"
},
"salesloft_id": {
"description": "SalesLoft ID",
"example": "54321",
"type": "string"
},
"title": {
"description": "Contact's job title",
"example": "Senior Manager",
"type": "string"
},
"twitter_url": {
"description": "Twitter profile URL",
"example": "https://twitter.com/johndoe",
"type": "string"
},
"typed_custom_fields": {
"additionalProperties": {
"type": "string"
},
"description": "Custom field values as key-value pairs where key is the field_id and value is the field_value",
"example": {
"60c39ed82bd02f01154c470a": "2025-08-07"
},
"type": "object"
}
},
"type": "object"
},
"maxItems": 100,
"type": "array"
},
"owner_id": {
"description": "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",
"type": "string"
},
"run_dedupe": {
"default": false,
"description": "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). <br><br>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`). <br><br>Unlike <a href=\"https://docs.apollo.io/reference/create-a-contact\">create a contact</a>, this endpoint never overwrites a matched contact's fields.",
"example": true,
"type": "boolean"
}
},
"required": [
"contacts"
],
"type": "object"
}
}
},
"required": true
},
"x-aisa-status": "enabled",
"x-aisa-pricing": {
"cost_contract": "fixed_success",
"customer_pricing": "fixed_success",
"default_request_estimate_usd": 0.012,
"estimate_source": "profile_seed",
"evidence_source": "request_snapshot"
},
"components": {
"securitySchemes": {
"bearerAuth": {
"scheme": "bearer",
"type": "http"
}
}
}
}
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
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
Array of contact objects to create (maximum 100 contacts per request)
100Show child attributes
Show child attributes
Array of label names to add to ALL contacts in this request
["Hot Lead", "Q1 2024"]
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.
"507f1f77bcf86cd799439013"
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.
true
Response
Successful response
Contacts created in this request
Account ID
First name
Contact ID
Last name
Organization name
Owner ID
Phone numbers
Title
Typed custom fields object
Updated timestamp
Contacts that already existed (dedupe matches)
Account ID
First name
Contact ID
Last name
Organization name
Owner ID
Phone numbers
Title
Typed custom fields object
Updated timestamp