Send leads to your CRM with the API
Make an API key in your account settings so your website, Zapier, Make or your own code can add people to the CRM of one or more of your startups, hear about changes, or let Claude and Cursor use it.
Your CRM can take leads from other tools without a connected app: your website, Zapier, Make, a script, or an AI tool such as Claude. They all use an API key. A key is yours, not a startup's: one key can reach the CRM of every startup you tick. You can tick a startup where you are an owner or admin; other members ask one of them. For a plain contact form on your website, you need no key: see Add a form to your website.
Make a key
- Open Account settings from your name at the bottom of the menu, then API & webhooks, and stay on the API keys tab.
- Choose New key.
- Give it a Name, like Website form or Zapier.
- Under Startups it can reach, tick the startups it is for, or All my startups, including ones I add later.
- Tick what It may do. Reading and changing people, companies and deals is ticked already.
- Choose Make key, copy the key, then choose I copied it. It only shows once.
The list shows each key's startups and when it was last used. Keep the key on a server or in your tool's secrets, never in a web page's code: anyone with it can change those CRMs as you. A key stops working when you Revoke it. It stops reaching a startup when you are no longer an owner or admin there, or leave it.
Add or update a person
Send one request per lead. If someone with that email is already in the CRM, they are updated instead of added twice, and their company is found by its domain, or made.
curl -X PUT "https://startupcorners.com/api/v1/objects/people/records?matching_attribute=email&entity=your-startup" \
-H "Authorization: Bearer $STARTUPCORNERS_KEY" \
-H "Content-Type: application/json" \
-d '{"values": {"name": "Jane Doe", "email": "[email protected]",
"company": {"domain": "acme.com", "name": "Acme"}}}'
The answer is the record, with 201 when it was added and 200 when it was updated. The API keys tab shows this example in curl and JavaScript, with your startup's name in it.
Fields are named by their key, like name, email or job_title. GET /api/v1/objects/people/attributes lists them with their types and choices. A choice is written as its label ("stage": "Intro sent"), an amount as {"amount": 250000, "currency": "USD"}, a date as 2026-10-28.
When you have several startups
Every request names its startup with ?entity= and the startup's address name (the part after /s/ in its link) or its id. A key that reaches one startup can leave it out.
GET /api/v1/entitieslists the startups your key reaches, with their address names.- Without
?entity=, a key that reaches several answers400entity_required, with that list. - A startup the key does not reach answers
403entity_not_allowed.
Put someone in a pipeline
GET /api/v1/listslists your pipelines, like Fundraising and Customers, with their stages.POST /api/v1/lists/fundraising/entrieswith{"record_id": "...", "stage": "Intro sent"}adds a record at a stage. Fundraising holds companies, so use the company's id.PATCH /api/v1/entries/{id}with{"stage": "Term sheet"}moves it.
Notes go in with POST /api/v1/records/{id}/notes and {"text": "Met at the demo day."}. Every change made with a key shows on the record's history like any other. Every endpoint is in the API reference.
When something goes wrong
Errors come back as {"error": {"code": "...", "message": "..."}}. The ones you will meet:
401: the key is missing, wrong or revoked, or reaches no startup any more.403: the key may not do this, or does not reach that startup. Make a key with the right ticks.409duplicate: that email or domain is already on a record; the answer gives its id. Use the update request above instead.422invalid_value: a field or a choice does not exist, or a value is not valid. The message names the field.429: more than 100 requests in 10 seconds. Wait the seconds inRetry-After.
Hear about changes: webhooks
A webhook posts to your URL when a CRM changes, for example to start a Zap.
- In API & webhooks, choose the Webhooks tab, then Add webhook.
- Paste the URL (it must start with https), tick the Startups it can reach, tick when to post under Post when, and choose Add webhook.
- Copy the signing secret, then choose I copied it.
Each post holds the event, the startup it is about (entity, with its slug), and the ids of what changed (record_id, list_id, entry_id); read the rest with your key. The tab shows code to check the StartupCorners-Signature header with the secret. When your URL does not answer, we try again for about a day. After 3 days of failures the webhook is paused and you get an email; choose Turn on once it works again.
Use your CRM from Claude or Cursor
Your CRM is also an MCP server, so an AI tool can look up people and deals, add leads, move stages and write notes, as far as its key allows.
- Make a key. For questions only, tick just the reading ones.
- In API & webhooks, choose the AI tools tab and pick your tool: Claude Code, Cursor or Claude Desktop.
- Copy the setup shown, put your key in place of
sc_live_..., and add it to your tool.
Then ask, for example, which investors in Fundraising have not moved in two weeks. A key that reaches several startups lets the tool ask which one, or you name it: "add Jane to Kumo's Customers".
