Access the Twenty CRM API with managed authentication. Manage companies, people, opportunities, notes, tasks, and workflows.
Reference
List Companies
GET /twenty/rest/companies?limit=20Response:
{
"data": {
"companies": [
{
"id": "06290608-8bf0-4806-99ae-a715a6a93fad",
"name": "Acme Corp",
"domainName": {
"primaryLinkUrl": "https://acme.com"
},
"employees": 100,
"address": {
"addressCity": "San Francisco",
"addressState": "CA",
"addressCountry": "United States"
},
"createdAt": "2026-03-20T23:59:52.906Z",
"updatedAt": "2026-03-20T23:59:52.906Z"
}
]
},
"pageInfo": {
"hasNextPage": true,
"startCursor": "06290608-8bf0-4806-99ae-a715a6a93fad",
"endCursor": "1f70157c-4ea5-4d81-bc49-e1401abfbb94"
},
"totalCount": 50
}Get Company
GET /twenty/rest/companies/{id}Create Company
POST /twenty/rest/companies
Content-Type: application/json
{
"name": "New Company",
"domainName": {
"primaryLinkUrl": "https://newcompany.com"
},
"employees": 50
}Update Company
PATCH /twenty/rest/companies/{id}
Content-Type: application/json
{
"name": "Updated Company Name",
"employees": 100
}Delete Company
DELETE /twenty/rest/companies/{id}List People
GET /twenty/rest/people?limit=20Response:
{
"data": {
"people": [
{
"id": "7a93d1e5-3f74-4945-8a65-d7f996083f72",
"name": {
"firstName": "John",
"lastName": "Doe"
},
"emails": {
"primaryEmail": "john@company.com"
},
"phones": {
"primaryPhoneNumber": "5551234567",
"primaryPhoneCallingCode": "+1"
},
"jobTitle": "CEO",
"city": "San Francisco",
"companyId": "06290608-8bf0-4806-99ae-a715a6a93fad"
}
]
},
"pageInfo": {...},
"totalCount": 100
}Get Person
GET /twenty/rest/people/{id}Create Person
POST /twenty/rest/people
Content-Type: application/json
{
"name": {
"firstName": "Jane",
"lastName": "Smith"
},
"emails": {
"primaryEmail": "jane@company.com"
},
"jobTitle": "CTO",
"companyId": "06290608-8bf0-4806-99ae-a715a6a93fad"
}Update Person
PATCH /twenty/rest/people/{id}
Content-Type: application/json
{
"jobTitle": "VP of Engineering"
}Delete Person
DELETE /twenty/rest/people/{id}List Opportunities
GET /twenty/rest/opportunities?limit=20Response:
{
"data": {
"opportunities": [
{
"id": "2beb07b0-340c-41d7-be33-5aa91757f329",
"name": "Enterprise Deal",
"amount": {
"amountMicros": 75000000000,
"currencyCode": "USD"
},
"closeDate": "2026-01-25T16:26:00.000Z",
"stage": "SCREENING",
"companyId": "1f70157c-4ea5-4d81-bc49-e1401abfbb94",
"pointOfContactId": "edf6d445-13a7-4373-9a47-8f89e8c0a877"
}
]
},
"pageInfo": {...},
"totalCount": 25
}Note: Amount is stored in micros (divide by 1,000,000 for actual value).
Get Opportunity
GET /twenty/rest/opportunities/{id}Create Opportunity
POST /twenty/rest/opportunities
Content-Type: application/json
{
"name": "New Deal",
"amount": {
"amountMicros": 50000000000,
"currencyCode": "USD"
},
"stage": "SCREENING",
"closeDate": "2026-06-01T00:00:00.000Z",
"companyId": "06290608-8bf0-4806-99ae-a715a6a93fad"
}Update Opportunity
PATCH /twenty/rest/opportunities/{id}
Content-Type: application/json
{
"stage": "MEETING",
"amount": {
"amountMicros": 60000000000,
"currencyCode": "USD"
}
}Delete Opportunity
DELETE /twenty/rest/opportunities/{id}List Notes
GET /twenty/rest/notes?limit=20Get Note
GET /twenty/rest/notes/{id}Create Note
POST /twenty/rest/notes
Content-Type: application/json
{
"title": "Meeting Notes",
"body": "Discussed Q2 roadmap and partnership opportunities."
}Update Note
PATCH /twenty/rest/notes/{id}
Content-Type: application/json
{
"body": "Updated meeting notes with action items."
}Delete Note
DELETE /twenty/rest/notes/{id}List Tasks
GET /twenty/rest/tasks?limit=20Get Task
GET /twenty/rest/tasks/{id}Create Task
POST /twenty/rest/tasks
Content-Type: application/json
{
"title": "Follow up with client",
"body": "Send proposal and schedule demo",
"dueAt": "2026-04-01T00:00:00.000Z",
"status": "TODO"
}Update Task
PATCH /twenty/rest/tasks/{id}
Content-Type: application/json
{
"status": "DONE"
}Delete Task
DELETE /twenty/rest/tasks/{id}List Workspace Members
GET /twenty/rest/workspaceMembers?limit=20