mirror of
https://github.com/twentyhq/twenty
synced 2026-05-02 19:07:20 +00:00
## Summary - **New Getting Started section** with quickstart guide and restructured navigation - **Halftone-style illustrations** for User Guide and Developer introduction cards using a Canvas 2D filter script - **Removed hero images** (`image:` frontmatter + `<Frame><img>` blocks) from all user-guide article pages - **Cleaned up translations** (13 languages): removed hero images and updated introduction cards to use halftone style - **Cleaned up twenty-ui pages**: removed outdated hero images from component docs - **Deleted orphaned images**: `table.png`, `kanban.png` - **Developer page**: fixed duplicate icon, switched to 3-column layout ## Test plan - [ ] Verify docs site builds without errors - [ ] Check User Guide introduction page renders halftone card images in both light and dark mode - [ ] Check Developer introduction page renders 3-column layout with distinct icons - [ ] Confirm article pages no longer show hero images at the top - [ ] Spot-check a few translated pages to ensure hero images are removed 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: github-actions <github-actions@twenty.com>
55 lines
2.2 KiB
Text
55 lines
2.2 KiB
Text
---
|
|
title: APIs
|
|
icon: "plug"
|
|
description: REST and GraphQL APIs generated from your workspace schema.
|
|
---
|
|
|
|
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
|
|
|
|
## Schema-per-tenant APIs
|
|
|
|
There is no static API reference for Twenty. Each workspace has its own schema — when you add a custom object (say `Invoice`), it immediately gets REST and GraphQL endpoints identical to built-in objects like `Company` or `Person`. The API is generated from the schema, so endpoints use your object and field names directly — no opaque IDs.
|
|
|
|
Your workspace-specific API documentation is available under **Settings → API & Webhooks** after creating an API key. It includes an interactive playground where you can execute real calls against your data.
|
|
|
|
## Two APIs
|
|
|
|
**Core API** — `/rest/` and `/graphql/`
|
|
|
|
CRUD on records: People, Companies, Opportunities, your custom objects. Query, filter, traverse relations.
|
|
|
|
**Metadata API** — `/rest/metadata/` and `/metadata/`
|
|
|
|
Schema management: create/modify/delete objects, fields, and relations. This is how you programmatically change your data model.
|
|
|
|
Both are available as REST and GraphQL. GraphQL adds batch upserts and the ability to traverse relations in a single query. Same underlying data either way.
|
|
|
|
## Base URLs
|
|
|
|
| Environment | Base URL |
|
|
|-------------|----------|
|
|
| Cloud | `https://api.twenty.com/` |
|
|
| Self-Hosted | `https://{your-domain}/` |
|
|
|
|
## Authentication
|
|
|
|
```
|
|
Authorization: Bearer YOUR_API_KEY
|
|
```
|
|
|
|
Create an API key in **Settings → API & Webhooks → + Create key**. Copy it immediately — it's shown once. Keys can be scoped to a specific role under **Settings → Roles → Assignment tab** to limit what they can access.
|
|
|
|
<VimeoEmbed videoId="928786722" title="Creating API key" />
|
|
|
|
For OAuth-based access (external apps acting on behalf of users), see [OAuth](/developers/extend/oauth).
|
|
|
|
## Batch operations
|
|
|
|
Both REST and GraphQL support batching up to 60 records per request — create, update, or delete. GraphQL also supports batch upsert (create-or-update in one call) using plural names like `CreateCompanies`.
|
|
|
|
## Rate limits
|
|
|
|
| Limit | Value |
|
|
|-------|-------|
|
|
| Requests | 100 per minute |
|
|
| Batch size | 60 records per call |
|