Resource

Contacts

Contacts represent people in your CRM (Salesforce "Contacts", HubSpot "Contacts", Apollo "Leads", etc.). Link them to an account via account_external_id so we can surface every contact at a funded company — even when their personal email wouldn't match the domain directly.

POST /api/v1/contacts

Upsert key: (your_user_id, external_id). Max 1,000 contacts per request.

Request body

{
  "contacts": [
    {
      "external_id": "0034x000007xY3oAAE",   // required
      "email": "sarah@vellum.ai",             // optional (used for email_domain matching)
      "first_name": "Sarah",                  // optional
      "last_name": "Park",                    // optional
      "account_external_id": "0014x...",      // optional but recommended
      "metadata": { "title": "VP Sales" }     // optional, JSONB passthrough
    }
  ]
}

Field reference

FieldTypeRequiredNotes
external_idstringyesYour CRM's ID for this contact. Upsert key.
emailstringnoPowers the email_domain match path. Free-mail domains (gmail, yahoo, etc.) are excluded from matching.
first_namestringnoReturned in match payloads — useful for personalizing outreach.
last_namestringnoSame as above.
account_external_idstringnoLinks this contact to an account. Critical for personal-email contacts who'd otherwise miss the match.
metadataobjectnoArbitrary JSON. Returned unchanged when this contact is in a match payload.

Response (200)

{ "upserted": 312, "errors": [] }

Why link contacts to accounts?

Suppose Sarah works at Vellum AI but her CRM email is sarah@gmail.com (personal). Without linking, the email-domain match path can't connect her to Vellum's funding event. With account_external_id pointing to the Vellum account, she shows up in the match anyway — because the account domain matches.

Roughly 30–40% of B2B contacts in a typical CRM use personal email domains. Linking them to accounts roughly doubles your match coverage.

DELETE /api/v1/contacts

curl -X DELETE "https://fundingscout.io/api/v1/contacts?external_id=003C1" \
  -H "Authorization: Bearer $FS_KEY"

# Response: { "deleted": 1 }

Privacy notes

  • We store contact email + name solely to match against funding rounds. We never email your contacts or share them with third parties.
  • DELETE removes the row immediately. There's no soft-delete or retention period for contacts.
  • Free-mail domains (gmail, yahoo, hotmail, etc.) are excluded from the email-domain match path — to prevent spam matches.