Skip to main content
POST
Create CRM contacts
This writes to your real CRM: it creates contacts and companies. It can also read LinkedIn live and spend email credits. Check who already exists first, with Check who is already in your CRM.

What this call does

Good to know

  • An HTTP 200 can hold failures: an item failed when its crm_contact_id is null.
  • Groovin looks for an existing contact by LinkedIn URL, then by name. A single same-name contact with no LinkedIn URL gets linked and receives this URL, even if it is a namesake.
  • Attio and HubSpot only. A slow batch is normal: do not resend it. Between batches, wait about 30 seconds, or 2 to 5 minutes with sync on.
  • Creating this way ignores your per-person creation blocklist.
Your AI assistant reaches the same action through the MCP tool create_crm_contacts.

Authorizations

Authorization
string
header
required

Your Groovin API key (gv_live_…), created in the extension under Settings, MCP and API.

Body

application/json
profiles
object[]
required

The people to create, up to 25 per call.

org_linkedin_account_id
integer

Leave this out to use your own LinkedIn account. Another person's account is refused with a 403.

sync_messages
boolean

true turns on message sync and imports the chat history. false keeps it off. Leave it out to follow your Groovin preference.

Response

Success.

The result of a batch. HTTP 200 does not mean every person succeeded: check each item.

org_linkedin_account_id
integer
required

Groovin's id for the LinkedIn account this answer is about.

total
integer
required

People in the batch.

succeeded
integer
required

People who now have a CRM contact.

failed
integer
required

People who do not.

summary
string
required

A one-line summary of the batch, worth reading.

results
object[]
required

One item per person.

retry_guidance
string | null
required

Plain-text advice when some items failed for a temporary reason, otherwise null. Follow it: it says when to retry, and which items.