A project is the top-level container for your localization work. Each project has a source language (the language your strings are written in) and one or more target languages that you want to translate into. All translation keys, translations, AI jobs, imports, and exports live under a project.
Projects are scoped to an organization. API tokens are associated with an organization, so all project endpoints automatically filter to the organization that owns the token.
Endpoints
POST /api/projects Create a project
GET /api/projects List projects
GET /api/projects/:id Get a project
PATCH /api/projects/:id Update a project
DELETE /api/projects/:id Archive a project
DELETE /api/projects/:id/permanent Permanently delete a project
POST /api/projects/:id/languages Add a target language
DELETE /api/projects/:id/languages/:lang Remove a target language
Create a Project
curl -X POST https://app.nt3.io/api/projects \
-H "X-API-Key: entri_your_token_here" \
-H "Content-Type: application/json" \
-d '{
"name": "Marketing Website",
"description": "All strings for the public marketing site",
"sourceLanguage": "en",
"targetLanguages": ["fr", "de", "es"]
}'
Response:
{
"_id": "proj_6abc123def456",
"name": "Marketing Website",
"description": "All strings for the public marketing site",
"sourceLanguage": "en",
"targetLanguages": ["fr", "de", "es"],
"organization": "org_789xyz",
"createdAt": "2025-03-01T10:00:00.000Z",
"updatedAt": "2025-03-01T10:00:00.000Z"
}
List Projects
Returns all projects belonging to your organization.
curl https://app.nt3.io/api/projects \
-H "X-API-Key: entri_your_token_here"
Get a Project
curl https://app.nt3.io/api/projects/proj_6abc123def456 \
-H "X-API-Key: entri_your_token_here"
Update a Project
All fields are optional — only the fields you include will be updated.
curl -X PATCH https://app.nt3.io/api/projects/proj_6abc123def456 \
-H "X-API-Key: entri_your_token_here" \
-H "Content-Type: application/json" \
-d '{"description": "Updated description"}'
Archive a Project
Deleting a project archives it rather than permanently destroying it. Archived projects and their data are retained for a recovery period.
curl -X DELETE https://app.nt3.io/api/projects/proj_6abc123def456 \
-H "X-API-Key: entri_your_token_here"
Permanently Delete a Project
Permanently deletes a project and all of its data: translation keys, translations, key and translation history, comments, project-scoped translation memory entries, project-scoped webhooks, and project-scoped API tokens. Activity logs are retained at the organization level as an audit trail, including a final project.deleted entry.
Unlike the other project endpoints, this endpoint cannot be called with an API key. It requires the session cookie of a signed-in organization owner:
curl -X DELETE https://app.nt3.io/api/projects/proj_6abc123def456/permanent \
-H "Cookie: better-auth.session_token=<owner_session_token>"
Response:
This action cannot be undone. Requests from any non-owner role — or authenticated with an API key, which carries no member session — receive a 403 Forbidden.
Manage Target Languages
Add a language to a project’s target language list:
curl -X POST https://app.nt3.io/api/projects/proj_6abc123def456/languages \
-H "X-API-Key: entri_your_token_here" \
-H "Content-Type: application/json" \
-d '{"language": "ja"}'
Remove a target language:
curl -X DELETE https://app.nt3.io/api/projects/proj_6abc123def456/languages/ja \
-H "X-API-Key: entri_your_token_here"
Removing a target language does not delete the existing translations for that language, but the language will no longer appear in the editor or be returned by export endpoints.
Key Notes
- Language codes follow the BCP 47 standard (for example
en, fr, zh-TW, pt-BR).
- The
sourceLanguage of a project cannot be changed after creation.
- Every action on a project is recorded in the Activity log.