This is our application programming interface (API).
Do you prefer to integrate the locize api on your own?
No problem! If you want to make a low level integration or just did not found an appropriate client library here you find our simple api description or you can access API via:
The most important feature first!
It's a simple HTTP GET request with this url pattern:
https://api.locize.app/{projectId}/{version}/{language}/{namespace}
$ curl -X GET https://api.locize.app/3d0aa5aa-4660-4154-b6d9-907dbef10bb2/production/en/landingpage
# will return something like:
# {
# "Average App": "Average App",
# "Benefits": "Benefits",
# "Blog": "Blog",
# ...
# "privacy policy": "privacy policy",
# "terms of service": "terms of service"
# }
(You can find your projectId in your project settings under the API Tab.)
Each of these requests counts as download for your next invoice.
Some projects have a higher demand for privacy. To accomplish this, you can set your versions to publish in private mode which means you will need an API key to fetch your namespace resources.
It's a simple HTTP GET request with this url pattern:
https://api.locize.app/private/{projectId}/{version}/{language}/{namespace}
$ curl -X GET -H "Content-Type: application/json" -H "Authorization: Bearer <API_KEY>" https://api.locize.app/private/3d0aa5aa-4660-4154-b6d9-907dbef10bb2/production/en/landingpage
# will return something like:
# {
# "Average App": "Average App",
# "Benefits": "Benefits",
# "Blog": "Blog",
# ...
# "privacy policy": "privacy policy",
# "terms of service": "terms of service"
# }
(You can find your projectId and API Key in your project settings under the API Tab.)
Each of these requests counts as private download for your next invoice.
You have the possibility to ask locize which languages are available for a particular project. That way you can have a dynamic language selector.
It's an even simpler HTTP GET request with this url pattern:
https://api.locize.app/languages/{projectId}
$ curl -X GET https://api.locize.app/languages/3d0aa5aa-4660-4154-b6d9-907dbef10bb2
# will return something like:
# {
# "en": {
# "name": "English",
# "nativeName": "English",
# "isReferenceLanguage": true,
# "translated": {
# "latest": 1,
# "production": 1
# }
# },
# "de-CH": {
# "name": "German",
# "nativeName": "Deutsch",
# "region": "CH",
# "isReferenceLanguage": false,
# "translated": {
# "latest": 1,
# "production": 0.521
# }
# },
# "it": {
# "name": "Italian",
# "nativeName": "Italiano",
# "isReferenceLanguage": false,
# "translated": {
# "latest": 1,
# "production": 1
# }
# },
# ...
# }
Advice:
(You can find your projectId in your project settings under the API Tab.)
You can say to locize that some translations are missing. For example this is very useful in development. This will not replace an existing translation.
This is a little bit more advanced. It's a HTTP POST request with this url pattern:
https://api.locize.app/missing/{projectId}/{version}/{language}/{namespace}
$ body=$(cat << EOF
{
"new.key": "default value",
"another.new.key": "another default value"
}
EOF
)
$ curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer <API_KEY>" -d $body https://api.locize.app/missing/3d0aa5aa-4660-4154-b6d9-907dbef10bb2/latest/en/landingpage
In case you want to also save a context information for a specific translation, you can define a nested object like this:
$ body=$(cat << EOF
{
"new.key": {
"value: "default value",
"context": {
"text: "description for this key"
}
},
"another.new.key": "another default value"
}
EOF
)
$ curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer <API_KEY>" -d $body https://api.locize.app/missing/3d0aa5aa-4660-4154-b6d9-907dbef10bb2/latest/en/landingpage
In case you want to also save tags for a specific translation, you can define a nested object like this:
$ body=$(cat << EOF
{
"new.key": {
"value: "default value",
"tags": [
true,
false
]
},
"another.new.key": "another default value"
}
EOF
)
$ curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer <API_KEY>" -d $body https://api.locize.app/missing/3d0aa5aa-4660-4154-b6d9-907dbef10bb2/latest/en/landingpage
Advice:
(You can find your projectId and API Key in your project settings under the API Tab.)
You should not use this endpoint in production. Read this guide before you're going to production.
You can say to locize which translations are used. Locize will then remember at which time the translations have been last used. For example this is very useful in development. For example during an e2e test you can spot which translations are probably not used anymore.
This is also a HTTP POST request, with this url pattern:
https://api.locize.app/used/{projectId}/{version}/{language}/{namespace}
$ body=$(cat << EOF
[
"new.key",
"another.new.key"
]
EOF
)
$ curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer <API_KEY>" -d $body https://api.locize.app/used/3d0aa5aa-4660-4154-b6d9-907dbef10bb2/latest/en/landingpage
Advice:
(You can find your projectId and API Key in your project settings under the API Tab.)
You should not use this endpoint in production. Read this guide before you're going to production.
You can say to locize that some translations should be updated or deleted. For example this is very useful for an integration from an other already existing system to slowly transition the translations to locize.
This is also a little bit more advanced. It's a HTTP POST request with this url pattern:
https://api.locize.app/update/{projectId}/{version}/{language}/{namespace}
To completely replace a namespace set the query parameter replace
to true. This will remove all the keys in that namespace that are not included in your body. If you have more than 1000 keys in a namespace, we do consider NOT to use the replace
parameter, this will probably delete more keys than you want to.
If you need to change or remove multiple keys, please do not create a single http request per key, but put them together in batches of maximum 1000 keys.
example:
$ body=$(cat << EOF
{
"new.key": "default value",
"another.existing.key": "another changed value",
"a.key.to.delete": null
}
EOF
)
$ curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer <API_KEY>" -d $body https://api.locize.app/update/3d0aa5aa-4660-4154-b6d9-907dbef10bb2/latest/en/landingpage
$ # or (Be aware, using the replace=true parameter will delete all non passed keys!):
$ # curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer <API_KEY>" -d $body https://api.locize.app/update/3d0aa5aa-4660-4154-b6d9-907dbef10bb2/latest/en/landingpage?replace=true
In case you want to also save a context information for a specific translation, you can define a nested object like this:
$ body=$(cat << EOF
{
"new.key": {
"value": "default value",
"context": {
"text": "description for this key"
}
},
"another.existing.key": "another changed value",
"a.key.to.delete": null
}
EOF
)
$ curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer <API_KEY>" -d $body https://api.locize.app/missing/3d0aa5aa-4660-4154-b6d9-907dbef10bb2/latest/en/landingpage
In case you want to also save tags for a specific translation, you can define a nested object like this:
$ body=$(cat << EOF
{
"new.key": {
"value: "default value",
"tags": [
true,
false
]
},
"another.new.key": "another default value"
}
EOF
)
$ curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer <API_KEY>" -d $body https://api.locize.app/update/3d0aa5aa-4660-4154-b6d9-907dbef10bb2/latest/en/landingpage
If you know if the text content quality is coming from machine translations or human translations, you can also pass this information via the quality property:
$ body=$(cat << EOF
{
"new.key": {
"value: "default value",
"quality": "MT" // MT = Machine Translation, AI = generative AI, TM = Translation Memory, HT = Human Translation
},
"another.new.key": "another default value"
}
EOF
)
$ curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer <API_KEY>" -d $body https://api.locize.app/update/3d0aa5aa-4660-4154-b6d9-907dbef10bb2/latest/en/landingpage
In case you want to use the review workflow and enabled it, you can add the ?review=true
query parameter:
$ body=$(cat << EOF
{
"a.key": "esto se añadirá automáticamente",
"meal": "me gusta comer pan"
}
EOF
)
$ curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer <API_KEY>" -d $body https://api.locize.app/update/3d0aa5aa-4660-4154-b6d9-907dbef10bb2/latest/es/common?review=true
This will create a new review:
By default (if the automatic machine or AI translation is enabled), new keys gets automatically translated. But if you update an existing key the automatic translation is not triggered by default.
By passing the ?autotranslate=true
query parameter, it will trigger an automatic translation also for existing keys.
$ body=$(cat << EOF
{
"an.existing.key": "This will get automatically translated",
"a.new.key": "And this will get automatically translated anyway"
}
EOF
)
$ curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer <API_KEY>" -d $body https://api.locize.app/update/3d0aa5aa-4660-4154-b6d9-907dbef10bb2/latest/en/common?autotranslate=true
Advice:
replace
query parameter.(You can find your projectId and API Key in your project settings under the API Tab.)
You should not use this endpoint in production. Read this guide before you're going to production.
If you need an overview of all published translation files of your project, you can do this with a simple HTTP GET request with this url pattern:
https://api.locize.app/download/{projectId}/{version}/{language}/{namespace}
{namespace}, {language} and {version} are optional and are used as filter.
$ curl -X GET https://api.locize.app/download/3d0aa5aa-4660-4154-b6d9-907dbef10bb2
# will return something like:
# [
# {
# "url": "https://api.locize.app/3d0aa5aa-4660-4154-b6d9-907dbef10bb2/latest/de/common",
# "key": "3d0aa5aa-4660-4154-b6d9-907dbef10bb2/latest/de/common",
# "size": 42,
# "lastModified": "2017-11-23T19:39:16.000Z"
# },
# {
# url: "https://api.locize.app/3d0aa5aa-4660-4154-b6d9-907dbef10bb2/latest/de/landingpage",
# key: "3d0aa5aa-4660-4154-b6d9-907dbef10bb2/latest/de/landingpage",
# "size": 21,
# "lastModified": "2017-11-23T18:39:16.000Z"
# },
# {
# url: "https://api.locize.app/3d0aa5aa-4660-4154-b6d9-907dbef10bb2/latest/en/common",
# key: "3d0aa5aa-4660-4154-b6d9-907dbef10bb2/latest/en/common",
# "size": 103,
# "lastModified": "2017-11-23T19:37:16.000Z"
# },
# {
# url: "https://api.locize.app/3d0aa5aa-4660-4154-b6d9-907dbef10bb2/latest/en/common",
# key: "3d0aa5aa-4660-4154-b6d9-907dbef10bb2/latest/en/common",
# "size": 12,
# "lastModified": "2017-11-23T19:29:16.000Z"
# },
# ...
# {
# url: "https://api.locize.app/3d0aa5aa-4660-4154-b6d9-907dbef10bb2/production/en/common",
# key: "3d0aa5aa-4660-4154-b6d9-907dbef10bb2/production/en/common",
# "size": 236,
# "lastModified": "2017-11-24T19:39:16.000Z"
# },
# {
# url: "https://api.locize.app/3d0aa5aa-4660-4154-b6d9-907dbef10bb2/production/en/common",
# key: "3d0aa5aa-4660-4154-b6d9-907dbef10bb2/production/en/common",
# "size": 417,
# "lastModified": "2017-11-23T13:39:16.000Z"
# }
# ]
Advice:
$ curl -X GET -H "Content-Type: application/json" -H "Authorization: Bearer <API_KEY>" https://api.locize.app/download/3d0aa5aa-4660-4154-b6d9-907dbef10bb2
# will return something like:
# [
# {
# "url": "https://api.locize.app/private/3d0aa5aa-4660-4154-b6d9-907dbef10bb2/latest/de/common",
# "key": "private/3d0aa5aa-4660-4154-b6d9-907dbef10bb2/latest/de/common",
# "size": 42,
# "lastModified": "2017-11-23T19:39:16.000Z",
# "isPrivate": true
# },
# ...
(You can find your projectId and API Key in your project settings under the API Tab.)
You should not use this endpoint in production.If you need to know the lastModified timestamp of a specific namespace, you should parse the last-modified
header in the Fetch namespace resources response.
Sometimes in your localization process you want to know which are the translations that are approved by your reviewer. Assuming you have defined some tags to mark translations as approved, with this api you're able to filter by these tags.
This is pretty easy. It's a simple HTTP GET request with this url pattern:
https://api.locize.app/pull/{projectId}/{version}/{language}/{namespace}
with positive tags filter: https://api.locize.app/pull/{projectId}/{version}/{language}/{namespace}?tags=[0,2]
(you need to pass the tag index)
in combination with a negative tags filter: https://api.locize.app/pull/{projectId}/{version}/{language}/{namespace}?tags=[0,2]&!tags=[1]
Another use case could be to track the amount of words changed during a time period. To do this, you can pull the translations at period 1, save this state and the current timestamp and later at period 2 you can pull again with an additional filter.
i.e. get all translations updated after 2017-12-06T19:42:18.139Z (UTC): https://api.locize.app/pull/{projectId}/{version}/{language}/{namespace}?updatedAt=>1512589338139
(number of milliseconds since 1970/01/01)
i.e. get all translations updated before 2017-12-06T19:42:18.139Z (UTC): https://api.locize.app/pull/{projectId}/{version}/{language}/{namespace}?updatedAt=<1512589338139
In the same way there is also the createdAt
filter.
Additionally another use case could be to remove unused translations. (This is only possible if you make use of the Used translations endpoint) To do this, you can pull the translations with an additional filter.
i.e. get all translations used after 2017-12-06T19:42:18.139Z (UTC): https://api.locize.app/pull/{projectId}/{version}/{language}/{namespace}?lastUsed=>1512589338139
(number of milliseconds since 1970/01/01)
i.e. get all translations used before 2017-12-06T19:42:18.139Z (UTC): https://api.locize.app/pull/{projectId}/{version}/{language}/{namespace}?lastUsed=<1512589338139
$ curl -X GET -H "Content-Type: application/json" -H "Authorization: Bearer <API_KEY>" https://api.locize.app/pull/3d0aa5aa-4660-4154-b6d9-907dbef10bb2/latest/en/landingpage
# will return something like:
# {
# "Average App": "Average App",
# "Benefits": "Benefits",
# "Blog": "Blog",
# ...
# "privacy policy": "privacy policy",
# "terms of service": "terms of service"
# }
(You can find your projectId and API Key in your project settings under the API Tab.)
There is also an option to ask for more segment information with the query parameter raw=true
$ curl -X GET -H "Content-Type: application/json" -H "Authorization: Bearer <API_KEY>" https://api.locize.app/pull/3d0aa5aa-4660-4154-b6d9-907dbef10bb2/latest/en/landingpage?raw=true
# will return something like:
# {
# "Average App": {
# "value": "Average App",
# "tags": [
# null,
# true
# ],
# "context": {
# "text": "This text is placed..."
# },
# "quality": "MT", // MT = Machine Translation, AI = generative AI, TM = Translation Memory, HT (or undefined) = Human Translation
# "updatedAt": 1610004393330
# },
# ...
# }
(You can find your projectId and API Key in your project settings under the API Tab.)
You should not use this endpoint in production.To fetch the translation in production, please use the Fetch namespaces resources endpoint.
Each of these requests counts as private download for your next invoice.
You may have defined some tags to mark translations as approved, etc. With this api you're able to fetch these tags.
A very simple HTTP GET request with this url pattern:
https://api.locize.app/tags/{projectId}
$ curl -X GET -H "Content-Type: application/json" -H "Authorization: Bearer <API_KEY>" https://api.locize.app/tags/3d0aa5aa-4660-4154-b6d9-907dbef10bb2
# will return something like:
# [
# "translated",
# "reviewed",
# "approved"
# ]
(You can find your projectId and API Key in your project settings under the API Tab.)
If you are using multiple versions of your translations you can ask locize to copy (replace) all translations from one version to the other. For example this is very useful when you release your translation files from one version to the other via your custom tooling. It's the same behavior like Overwriting via the UI.
This is easy. It's a HTTP POST request without body with this url pattern:
https://api.locize.app/copy/{projectId}/version/{fromVersion}/{toVersion}
$ curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer <API_KEY>" https://api.locize.app/copy/3d0aa5aa-4660-4154-b6d9-907dbef10bb2/version/latest/production
Hint:
(You can find your projectId and API Key in your project settings under the API Tab. Keep in mind to use the API Key for {toVersion}
)
For a more granular copy action, you can ask locize to copy (replace) all translations from one version to the other for a particular language.
Another HTTP POST request without body with this url pattern:
https://api.locize.app/copy/{projectId}/version/{fromVersion}/{toVersion}/{language}
$ curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer <API_KEY>" https://api.locize.app/copy/3d0aa5aa-4660-4154-b6d9-907dbef10bb2/version/latest/production/en
Hint:
(You can find your projectId and API Key in your project settings under the API Tab. Keep in mind to use the API Key for {toVersion}
)
If you want to fully automate your CI/CD pipeline by publishing a version exactly at the same time when you deploy a new version of your product this api call is exactly what you are looking for.
This is very easy. It's a HTTP POST request without body with this url pattern:
https://api.locize.app/publish/{projectId}/{version}
$ curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer <API_KEY>" https://api.locize.app/publish/3d0aa5aa-4660-4154-b6d9-907dbef10bb2/production
For parent projects in a multi-tenant setup, you can optionally pass the query parameter ?tenants=true
to automatically publish also all tenant projects.
Hint:
(You can find your projectId and API Key in your project settings under the API Tab. Keep in mind to use the API Key for the correct {version}
)
To wait for an async action (i.e. copy, copy language, publish) to be completed, you can make use this endpoint.
It's a simple HTTP GET request without body with this url pattern:
https://api.locize.app/jobs/{projectId}/{jobId}
Pull this endpoint with an interval of at least 2 seconds until no job object is returned anymore.The job is done as soon as no job object is returned. Depending on how big your project is it may take also several minutes until the job gets finished. (for example for the copy version job)
$ curl -X GET -H "Content-Type: application/json" -H "Authorization: Bearer <API_KEY>" https://api.locize.app/jobs/3d0aa5aa-4660-4154-b6d9-907dbef10bb2/410aa5aa-4660-4154-b6d9-907dbef10bb5
$ # {"projectId":"3d0aa5aa-4660-4154-b6d9-907dbef10bb2","jobId":"0bb35e4a-8f16-4997-866a-1332a59825e0","event":"saveVersionRequested","startedAt":1525094049152}
(You can find your projectId and API Key in your project settings under the API Tab.)
Sometimes you want to automate even more. I.e if you want to create your own translation management ui. The following endpoints are probably what you are looking for.
https://api.locize.app/create/{projectId}/{version}/{namespace}
A body containing initial values is optional.
It will create a new namespace in your reference language.
$ curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer <API_KEY>" https://api.locize.app/create/3d0aa5aa-4660-4154-b6d9-907dbef10bb2/latest/landingpage
(You can find your projectId and API Key in your project settings under the API Tab.)
https://api.locize.app/create/{projectId}/{version}/{language}/{namespace}
A body containing initial values is optional.
$ curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer <API_KEY>" https://api.locize.app/create/3d0aa5aa-4660-4154-b6d9-907dbef10bb2/latest/en/landingpage
(You can find your projectId and API Key in your project settings under the API Tab.)
https://api.locize.app/rename/{projectId}/{version}/{fromNamespace}/{toNamespace}
$ curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer <API_KEY>" https://api.locize.app/rename/3d0aa5aa-4660-4154-b6d9-907dbef10bb2/latest/landingpage/landingpagenew
(You can find your projectId and API Key in your project settings under the API Tab.)
https://api.locize.app/delete/{projectId}/{version}/{namespace}
$ curl -X DELETE -H "Content-Type: application/json" -H "Authorization: Bearer <API_KEY>" https://api.locize.app/delete/3d0aa5aa-4660-4154-b6d9-907dbef10bb2/latest/landingpage
(You can find your projectId and API Key in your project settings under the API Tab.)
This is the same as adding a new language via UI.
https://api.locize.app/language/{projectId}/{language}
$ curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer <API_KEY>" https://api.locize.app/language/3d0aa5aa-4660-4154-b6d9-907dbef10bb2/en
$ body=$(cat << EOF
{
"versions": ["latest", "production"]
}
EOF
)
$ curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer <API_KEY>" https://api.locize.app/language/3d0aa5aa-4660-4154-b6d9-907dbef10bb2/en
(You can find your projectId and API Key (requires admin role) in your project settings under the API Tab.)
https://api.locize.app/language/{projectId}/{language}
$ curl -X DELETE -H "Content-Type: application/json" -H "Authorization: Bearer <API_KEY>" https://api.locize.app/language/3d0aa5aa-4660-4154-b6d9-907dbef10bb2/en
Optionally, specify in which versions you want to update languages:
$ body=$(cat << EOF
{
"versions": ["latest", "production"]
}
EOF
)
$ curl -X DELETE -H "Content-Type: application/json" -H "Authorization: Bearer <API_KEY>" https://api.locize.app/language/3d0aa5aa-4660-4154-b6d9-907dbef10bb2/en
(You can find your projectId and API Key (requires admin role) in your project settings under the API Tab.)
Can be used to set the languages at once.
Languages not passed via request, are removed.
https://api.locize.app/language/{projectId}
$ body=$(cat << EOF
[
"en",
"de",
"it"
]
EOF
)
$ curl -X PUT -H "Content-Type: application/json" -H "Authorization: Bearer <API_KEY>" -d $body https://api.locize.app/language/3d0aa5aa-4660-4154-b6d9-907dbef10bb2
Optionally, specify in which versions you want to update languages:
$ body=$(cat << EOF
{
"latest": ["en", "de", "it"],
"production": ["en", "de"]
}
EOF
)
$ curl -X PUT -H "Content-Type: application/json" -H "Authorization: Bearer <API_KEY>" -d $body https://api.locize.app/language/3d0aa5aa-4660-4154-b6d9-907dbef10bb2
(You can find your projectId and API Key (requires admin role) in your project settings under the API Tab.)
This is the same as adding a new version via UI.
https://api.locize.app/version/{projectId}/{version}
The body optionally contains
true
or false
, defaults to false
number
, amount of seconds used for Cache-control max-age$ curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer <API_KEY>" https://api.locize.app/version/3d0aa5aa-4660-4154-b6d9-907dbef10bb2/v0.9.6
$ # or (optionally set autoPublsh to true):
$ # body=$(cat << EOF
# {
# "autoPublish": true
# "cacheControlMaxAge": 3600
# }
# EOF
# )
# curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer <API_KEY>" -d $body https://api.locize.app/version/3d0aa5aa-4660-4154-b6d9-907dbef10bb2/v0.9.6
(You can find your projectId and API Key (requires admin role) in your project settings under the API Tab.)
https://api.locize.app/invite/{projectId}
The body contains
"user"
or "publisher" or "manager"
or "admin"
(default: "user"
)To skip sending the email automatically set the query parameter send
to false. This will not send any email. This way you can send the invitation mail by your own, if you want to.
$ body=$(cat << EOF
{
"email": "new.user@somewhere-in-the-universe.com",
"role": "user",
"scope": {
"languages": ["en","de"],
"versions": ["latest","preprod"]
}
}
EOF
)
$ curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer <API_KEY>" -d $body https://api.locize.app/invite/3d0aa5aa-4660-4154-b6d9-907dbef10bb2
$ # or:
$ # curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer <API_KEY>" -d $body https://api.locize.app/invite/3d0aa5aa-4660-4154-b6d9-907dbef10bb2?send=false
# will return something like:
# {
# "code": "LL4mHDzyxKn4cKYP",
# "role": "user",
# "email": "new.user@somewhere-in-the-universe.com",
# "scope": {
# "languages":["en","de"],
# "versions":["latest","preprod"]
# },
# "link": "https://www.locize.app/register?invitation=LL4mHDzyxKn4cKYP"
# }
(You can find your projectId and API Key (requires admin role) in your project settings under the API Tab.)
For example when you want to build your own translation management ui, this endpoint will be very useful if you want to display the project's users.
Just a HTTP GET request with this url pattern:
https://api.locize.app/users/{projectId}
$ curl -X GET -H "Content-Type: application/json" -H "Authorization: Bearer <API_KEY>" https://api.locize.app/users/3d0aa5aa-4660-4154-b6d9-907dbef10bb2
# will return something like:
# [
# {
# "id":"ba175147-c7a3-45d2-9b24-739ae2ed948c",
# "firstname": "George",
# "lastname": "Winston",
# "username": "gg.win",
# "email": "george.user@somewhere-in-the-universe.com",
# "role": "user",
# "scope": {
# "languages": ["en","de"],
# "versions": ["latest","preprod"]
# }
# }
# ...
# ]
(You can find your projectId and API Key (requires admin role) in your project settings under the API Tab.)
Do you want to show some cool overview images like this:
You can access the same data we use on the locize UI also for your own ui.
Simply make a HTTP GET request with this url pattern:
https://api.locize.app/stats/project/{projectId}
$ curl -X GET -H "Content-Type: application/json" -H "Authorization: Bearer <API_KEY>" https://api.locize.app/stats/project/3d0aa5aa-4660-4154-b6d9-907dbef10bb2
# will return something like:
# {
# "latest":{
# "en":{
# "ns1":{
# "translated":1,
# "untranslated":0,
# "ordered":0,
# "segmentsTranslated":10,
# "segmentsTotal":10
# },
# "anotherNamespace":{
# "translated":1,
# "untranslated":0,
# "ordered":0,
# "segmentsTranslated":1,
# "segmentsTotal":1
# }
# },
# "de":{
# "ns1":{
# "translated":0.7,
# "untranslated":0.3,
# "ordered":0,
# "segmentsTranslated":7,
# "segmentsTotal":10
# },
# "anotherNamespace":{
# "translated":1,
# "untranslated":0,
# "ordered":0,
# "segmentsTranslated":1,
# "segmentsTotal":1
# }
# }
# },
# "prod":{
# "en":{
# "ns1":{
# "translated":1,
# "untranslated":0,
# "ordered":0,
# "segmentsTranslated":5,
# "segmentsTotal":5
# },
# "anotherNamespace":{
# "translated":1,
# "untranslated":0,
# "ordered":0,
# "segmentsTranslated":1,
# "segmentsTotal":1
# }
# },
# "de":{
# "ns1":{
# "translated":1,
# "untranslated":0,
# "ordered":0,
# "segmentsTranslated":5,
# "segmentsTotal":5
# },
# "anotherNamespace":{
# "translated":0.7142857142857143,
# "untranslated":0.2857142857142857,
# "ordered":0,
# "segmentsTranslated":5,
# "segmentsTotal":7
# }
# }
# }
# }
(You can find your projectId and API Key in your project settings under the API Tab.)
There are some nice statistics for users too:
Another HTTP GET request with this url pattern:
for a specific user: https://api.locize.app/stats/user/{projectId}/{userId}
https://api.locize.app/stats/user/{projectId}/{userId}?year=2019
or for all users: https://api.locize.app/stats/users/{projectId}
https://api.locize.app/stats/users/{projectId}?year=2019
To retrieve an other year than the current one set the query parameter year
with the appropriate value.
$ curl -X GET -H "Content-Type: application/json" -H "Authorization: Bearer <API_KEY>" https://api.locize.app/stats/user/3d0aa5aa-4660-4154-b6d9-907dbef10bb2/ba175147-c7a3-45d2-9b24-739ae2ed948c
# will return something like:
# {
# "userId":"ba175147-c7a3-45d2-9b24-739ae2ed948c",
# "year":2019,
# "words":{ // amount of words saved per month
# "0":23,
# "1":54,
# "2":16,
# ...
# },
# "modifications":{ // amount of modifications per month
# "0":2,
# "1":6,
# "2":1,
# ...
# },
# "tagsSet":{ // amount of tags set per month by tag index
# "0":{
# "2":12,
# "4":7
# },
# "1":{
# "2":5,
# "4":18,
# "5":21
# },
# "2":{
# "4":1,
# "5":24
# }
# ...
# },
# "tagsUnset":{ // amount of tags unset per month by tag index
# "0":{
# "0":2,
# "1":7
# },
# "1":{
# "0":5,
# "1":18,
# "2":49
# },
# "2":{
# "1":10,
# "2":34
# }
# ...
# }
# "updatedAt":1514926256221,
# }
$ curl -X GET -H "Content-Type: application/json" -H "Authorization: Bearer <API_KEY>" https://api.locize.app/stats/users/3d0aa5aa-4660-4154-b6d9-907dbef10bb2
# [
# {
# "userId":"ba175147-c7a3-45d2-9b24-739ae2ed948c",
# "year":2019,
# "words":{ // amount of words saved per month
# "0":23,
# "1":54,
# "2":16,
# ...
# }
# "modifications":{ // amount of modifications per month
# "0":2,
# "1":6,
# "2":1,
# ...
# },
# "tagsSet":{ // amount of tags set per month by tag index
# "0":{
# "2":12,
# "4":7
# },
# "1":{
# "2":5,
# "4":18,
# "5":21
# },
# "2":{
# "4":1,
# "5":24
# }
# ...
# },
# "tagsUnset":{ // amount of tags unset per month by tag index
# "0":{
# "0":2,
# "1":7
# },
# "1":{
# "0":5,
# "1":18,
# "2":49
# },
# "2":{
# "1":10,
# "2":34
# }
# ...
# }
# "updatedAt":1514926256221,
# },
# ...
# ]
(You can find your projectId and API Key (requires admin role) in your project settings under the API Tab.)
https://api.locize.app/tenant/create/{projectId}
The body contains
true
or false
(default: false
)true
or false
(default: false
)This response will include the id, that can be used other api endpoints.
$ body=$(cat << EOF
{
"name": "My tenant's project"
}
EOF
)
$ curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer <API_KEY>" -d $body https://api.locize.app/tenant/create/3d0aa5aa-4660-4154-b6d9-907dbef10bb2
# will return something like:
# {
# "id": "66a6631d-6439-4e4c-bbd3-3196d87dfdf4",
# "name": "My tenant's project"
# }
(You can find your projectId and API Key (requires admin role) in your project settings under the API Tab.)
https://api.locize.app/tenant/update/{projectId}/{tenantProjectId}
The body contains
true
or false
(default: false
)This response will include the id, that can be used other api endpoints.
$ body=$(cat << EOF
{
"canEditLanguages": true
}
EOF
)
$ curl -X POST -H "Content-Type: application/json" -H "Authorization: Bearer <API_KEY>" -d $body https://api.locize.app/tenant/update/3d0aa5aa-4660-4154-b6d9-907dbef10bb2/ad0aa5aa-2660-4154-b6d9-907dbef10bb3
# will return something like:
# {
# "id": "66a6631d-6439-4e4c-bbd3-3196d87dfdf4",
# "name": "My tenant's project"
# }
(You can find your projectId and API Key (requires admin role) in your project settings under the API Tab.)
https://api.locize.app/tenants/{projectId}
$ curl -X GET -H "Authorization: Bearer <API_KEY>" https://api.locize.app/tenants/3d0aa5aa-4660-4154-b6d9-907dbef10bb2
# will return something like:
# [{
# "id": "66a6631d-6439-4e4c-bbd3-3196d87dfdf4",
# "name": "My tenant's project"
# }]
(You can find your projectId and API Key (requires admin role) in your project settings under the API Tab.)