Getting started

5-minute quickstart

A complete integration in 4 curl calls. By the end of this page, you'll have a working pipeline: your CRM data flowing into FundingScout, and funding-event webhooks flowing back.

Prerequisites

Step 1 — Sync your accounts (companies)

Push up to 1,000 accounts per request. Upsert key is external_id, so repeat calls are idempotent.

export FS_KEY="fs_live_..."

curl -X POST https://fundingscout.io/api/v1/accounts \
  -H "Authorization: Bearer $FS_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "accounts": [
      {"external_id": "001A1", "name": "Vellum AI",  "domain": "vellum.ai"},
      {"external_id": "001A2", "name": "Acme Corp",  "domain": "acme.com"}
    ]
  }'

# Response:
# { "upserted": 2, "errors": [] }

Step 2 — Sync your contacts (people)

Link contacts to accounts via account_external_id. Contacts with personal email (e.g., @gmail.com) still match through their account.

curl -X POST https://fundingscout.io/api/v1/contacts \
  -H "Authorization: Bearer $FS_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "contacts": [
      {
        "external_id": "003C1",
        "email": "sarah@vellum.ai",
        "first_name": "Sarah",
        "account_external_id": "001A1"
      },
      {
        "external_id": "003C2",
        "email": "jane@gmail.com",
        "first_name": "Jane",
        "account_external_id": "001A1"
      }
    ]
  }'

# Response:
# { "upserted": 2, "errors": [] }

Step 3 — Register your webhook

HTTPS required. Pass null or "" to clear and switch to pull-only mode.

curl -X POST https://fundingscout.io/api/v1/webhooks \
  -H "Authorization: Bearer $FS_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://yourapp.example.com/hooks/fundingscout"}'

# Response:
# { "webhook_url": "https://yourapp.example.com/hooks/fundingscout" }

Step 4 — Verify

Pull current matches via the polling endpoint. It'll be empty if no company in your CRM has been funded since you synced.

curl https://fundingscout.io/api/v1/matches \
  -H "Authorization: Bearer $FS_KEY"

# Response:
# { "data": [], "next_cursor": null }

That's it

From now on: every funding round we ingest is matched against your accounts + contacts. Matches POST to your webhook within ~60 seconds.

What to read next