curl "https://api.phrase.com/v2/projects/:project_id/keys?branch=my-feature-branch&sort=updated_at&order=desc&q=mykey*%20translated:true&locale_id=abcd1234abcd1234abcd1234abcd1234" \
-u USERNAME_OR_ACCESS_TOKENphrase keys list \
--project_id <project_id> \
--branch my-feature-branch \
--sort updated_at \
--order desc \
--query 'mykey* translated:true' \
--locale_id abcd1234abcd1234abcd1234abcd1234 \
--access_token <token>import requests
url = "https://api.phrase.com/v2/projects/{project_id}/keys"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://api.phrase.com/v2/projects/{project_id}/keys', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.phrase.com/v2/projects/{project_id}/keys",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.phrase.com/v2/projects/{project_id}/keys"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.phrase.com/v2/projects/{project_id}/keys")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.phrase.com/v2/projects/{project_id}/keys")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body[
{
"id": "abcd1234cdef1234abcd1234cdef1234",
"name": "home.index.headline",
"description": "My description for this key...",
"name_hash": "1b31d2580ce324f246f66b3be00ed399",
"plural": false,
"use_ordinal_rules": false,
"tags": [
"awesome-feature",
"needs-proofreading"
],
"data_type": "string",
"created_at": "2015-01-28T09:52:53Z",
"updated_at": "2015-01-28T09:52:53Z"
}
]List keys
List all keys for the given project. Alternatively you can POST requests to /search.
curl "https://api.phrase.com/v2/projects/:project_id/keys?branch=my-feature-branch&sort=updated_at&order=desc&q=mykey*%20translated:true&locale_id=abcd1234abcd1234abcd1234abcd1234" \
-u USERNAME_OR_ACCESS_TOKENphrase keys list \
--project_id <project_id> \
--branch my-feature-branch \
--sort updated_at \
--order desc \
--query 'mykey* translated:true' \
--locale_id abcd1234abcd1234abcd1234abcd1234 \
--access_token <token>import requests
url = "https://api.phrase.com/v2/projects/{project_id}/keys"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://api.phrase.com/v2/projects/{project_id}/keys', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.phrase.com/v2/projects/{project_id}/keys",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.phrase.com/v2/projects/{project_id}/keys"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.phrase.com/v2/projects/{project_id}/keys")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.phrase.com/v2/projects/{project_id}/keys")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body[
{
"id": "abcd1234cdef1234abcd1234cdef1234",
"name": "home.index.headline",
"description": "My description for this key...",
"name_hash": "1b31d2580ce324f246f66b3be00ed399",
"plural": false,
"use_ordinal_rules": false,
"tags": [
"awesome-feature",
"needs-proofreading"
],
"data_type": "string",
"created_at": "2015-01-28T09:52:53Z",
"updated_at": "2015-01-28T09:52:53Z"
}
]Authorizations
Enter your token in the format token TOKEN
Headers
Two-Factor-Authentication token (optional)
Path Parameters
Project ID
Query Parameters
Page number
Limit on the number of objects to be returned, between 1 and 100. 25 by default
specify the branch to use
Sort by field. Can be one of: name, created_at, updated_at.
Order direction. Can be one of: asc, desc.
Specify a query to do broad search for keys by name (including wildcards).
The following qualifiers are also supported in the search term:
ids:key_id,...for queries on a comma-separated list of idsname:key_namefor text queries on exact key names - spaces, commas, and colons need to be escaped with double backslashestags:tag_nameto filter for keys with certain tagstranslated:{true|false}for translation status (also requireslocale_idto be specified)updated_at:{>=|<=}2013-02-21T00:00:00Zfor date range queriesunmentioned_in_upload:upload_id,...to filter keys unmentioned within upload. When multiple upload IDs provided, matches only keys not mentioned in all uploads
Caution: Query parameters with empty values will be treated as though they are not included in the request and will be ignored.
Find more examples here.
Locale used to determine the translation state of a key when filtering for untranslated or translated keys.
Was this page helpful?