Keys endpoints
Manage translation keys and their translated values.
Overview
Translation keys are the named slots that hold translated strings for each language. A key belongs to a group, lives inside a project, and can have one translation value per language.
GET /v1/keys
List all non-deleted translation keys for the project.
Request
GET https://sapi.i18nme.com/v1/keys| Parameter | In | Required | Description |
|---|---|---|---|
group | query | ❌ | Filter keys by group name |
| Header | Required | Description |
|---|---|---|
X-API-Key | ✅ | Your project API key |
Response
200 OK
{
"project_id": "3fa85f64-...",
"keys": [
{
"id": "a1b2c3d4-...",
"key": "common.welcome",
"group_name": "common",
"description": "Greeting shown on the home page",
"created_at": "2026-01-15T10:00:00Z",
"updated_at": "2026-01-15T10:00:00Z"
}
],
"count": 1
}POST /v1/keys
Create a new translation key.
Plan limits
The number of keys per project depends on your subscription plan. The API returns 402 Payment Required when the limit is reached.
| Plan | Keys per project |
|---|---|
| Free | 250 |
| Solo | 2,500 |
| Team / Business | Unlimited |
Request
POST https://sapi.i18nme.com/v1/keys
Content-Type: application/json| Header | Required | Description |
|---|---|---|
X-API-Key | ✅ | Your project API key |
{
"key": "common.welcome",
"group_name": "common",
"description": "Greeting shown on the home page"
}| Field | Required | Max length | Description |
|---|---|---|---|
key | ✅ | 500 | Unique key identifier within the project |
group_name | ❌ | 200 | Group to assign the key to (default: "Default") |
description | ❌ | 1,000 | Optional human-readable description |
Response
201 Created
{
"id": "a1b2c3d4-...",
"project_id": "3fa85f64-...",
"key": "common.welcome",
"group_name": "common",
"description": "Greeting shown on the home page"
}402 Payment Required — key limit reached for your plan.
409 Conflict — a key with this name already exists in this group.
PATCH /v1/keys/
Update the group_name and/or description of an existing key. The key name itself cannot be changed — delete and recreate if needed.
Request
PATCH https://sapi.i18nme.com/v1/keys/{key_id}
Content-Type: application/json| Parameter | In | Required | Description |
|---|---|---|---|
key_id | path | ✅ | UUID of the key |
{
"group_name": "nav",
"description": "Updated description"
}Response
200 OK
{
"id": "a1b2c3d4-...",
"project_id": "3fa85f64-...",
"updated": true,
"group_name": "nav"
}404 Not Found — key does not exist or belongs to another project.
DELETE /v1/keys/
Soft-delete a translation key and all its translation values.
Request
DELETE https://sapi.i18nme.com/v1/keys/{key_id}Response
204 No Content — key deleted; no response body.
404 Not Found — key does not exist.
PUT /v1/keys/{key_id}/translations/
Create or update the translation value for a specific key and language. If a translation already exists for that language it is overwritten.
Request
PUT https://sapi.i18nme.com/v1/keys/{key_id}/translations/{language}
Content-Type: application/json| Parameter | In | Required | Description |
|---|---|---|---|
key_id | path | ✅ | UUID of the key |
language | path | ✅ | BCP-47 language code (e.g. en, en-US) |
{
"value": "Welcome",
"status": "approved"
}| Field | Required | Description |
|---|---|---|
value | ✅ | Translated string (max 10,000 characters) |
status | ❌ | draft (default), review, or approved |
Response
200 OK
{
"key_id": "a1b2c3d4-...",
"language": "en",
"value": "Welcome",
"status": "approved",
"project_id": "3fa85f64-..."
}404 Not Found — key does not exist or belongs to another project.
DELETE /v1/keys/{key_id}/translations/
Permanently delete a single translation value (one language for one key).
Request
DELETE https://sapi.i18nme.com/v1/keys/{key_id}/translations/{language}Response
204 No Content — translation deleted; no response body.
404 Not Found — key or translation not found.
Examples
curl -X POST https://sapi.i18nme.com/v1/keys \
-H "X-API-Key: key_live_XXXX" \
-H "Content-Type: application/json" \
-d '{"key": "common.welcome", "group_name": "common"}'curl -X PUT https://sapi.i18nme.com/v1/keys/a1b2c3d4-.../translations/en \
-H "X-API-Key: key_live_XXXX" \
-H "Content-Type: application/json" \
-d '{"value": "Welcome", "status": "approved"}'curl -X DELETE https://sapi.i18nme.com/v1/keys/a1b2c3d4-... \
-H "X-API-Key: key_live_XXXX"