curl --request GET \
--url 'https://api.simkl.com/users/settings?client_id=' \
--header 'Authorization: Bearer <token>' \
--header 'User-Agent: <user-agent>'import requests
url = "https://api.simkl.com/users/settings?client_id="
headers = {
"User-Agent": "<user-agent>",
"Authorization": "Bearer <token>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'User-Agent': '<user-agent>', Authorization: 'Bearer <token>'}
};
fetch('https://api.simkl.com/users/settings?client_id=', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));const options = {
method: 'GET',
headers: {'User-Agent': '<user-agent>', Authorization: 'Bearer <token>'}
};
fetch('https://api.simkl.com/users/settings?client_id=', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));val client = OkHttpClient()
val request = Request.Builder()
.url("https://api.simkl.com/users/settings?client_id=")
.get()
.addHeader("User-Agent", "<user-agent>")
.addHeader("Authorization", "Bearer <token>")
.build()
val response = client.newCall(request).execute()import Foundation
let url = URL(string: "https://api.simkl.com/users/settings")!
var components = URLComponents(url: url, resolvingAgainstBaseURL: true)!
let queryItems: [URLQueryItem] = [
URLQueryItem(name: "client_id", value: ""),
]
var queryAllowed = CharacterSet.urlQueryAllowed
queryAllowed.remove(charactersIn: "&=+#")
let encodedQuery = queryItems.map { "\($0.name.addingPercentEncoding(withAllowedCharacters: queryAllowed)!)=\(($0.value ?? "").addingPercentEncoding(withAllowedCharacters: queryAllowed)!)" }.joined(separator: "&")
components.percentEncodedQuery = components.percentEncodedQuery.map { $0 + "&" + encodedQuery } ?? encodedQuery
var request = URLRequest(url: components.url!)
request.httpMethod = "GET"
request.timeoutInterval = 10
request.allHTTPHeaderFields = [
"User-Agent": "<user-agent>",
"Authorization": "Bearer <token>"
]
let (data, _) = try await URLSession.shared.data(for: request)
print(String(decoding: data, as: UTF8.self))HttpResponse<String> response = Unirest.get("https://api.simkl.com/users/settings?client_id=")
.header("User-Agent", "<user-agent>")
.header("Authorization", "Bearer <token>")
.asString();const url = 'https://api.simkl.com/users/settings?client_id=';
const options = {
method: 'GET',
headers: {'User-Agent': '<user-agent>', Authorization: 'Bearer <token>'}
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.simkl.com/users/settings?client_id="
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("User-Agent", "<user-agent>")
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}using RestSharp;
var options = new RestClientOptions("https://api.simkl.com/users/settings?client_id=");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("User-Agent", "<user-agent>");
request.AddHeader("Authorization", "Bearer <token>");
var response = await client.GetAsync(request);
Console.WriteLine("{0}", response.Content);
using RestSharp;
var options = new RestClientOptions("https://api.simkl.com/users/settings?client_id=");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("User-Agent", "<user-agent>");
request.AddHeader("Authorization", "Bearer <token>");
var response = await client.GetAsync(request);
Console.WriteLine("{0}", response.Content);
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.simkl.com/users/settings?client_id=",
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: Bearer <token>",
"User-Agent: <user-agent>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}require 'uri'
require 'net/http'
url = URI("https://api.simkl.com/users/settings?client_id=")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["User-Agent"] = '<user-agent>'
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body$headers=@{}
$headers.Add("User-Agent", "<user-agent>")
$headers.Add("Authorization", "Bearer <token>")
$response = Invoke-WebRequest -Uri 'https://api.simkl.com/users/settings?client_id=' -Method GET -Headers $headersCURL *hnd = curl_easy_init();
curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_WRITEDATA, stdout);
curl_easy_setopt(hnd, CURLOPT_URL, "https://api.simkl.com/users/settings?client_id=");
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "User-Agent: <user-agent>");
headers = curl_slist_append(headers, "Authorization: Bearer <token>");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);
CURLcode ret = curl_easy_perform(hnd);CURL *hnd = curl_easy_init();
curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_WRITEDATA, stdout);
curl_easy_setopt(hnd, CURLOPT_URL, "https://api.simkl.com/users/settings?client_id=");
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "User-Agent: <user-agent>");
headers = curl_slist_append(headers, "Authorization: Bearer <token>");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);
CURLcode ret = curl_easy_perform(hnd);{
"user": {
"name": "jane_doe",
"joined_at": "2018-06-12T14:23:08.000Z",
"gender": "female",
"avatar": "https://simkl.in/avatars/12/12345678abcdef9/user_100.jpg",
"bio": "Big into sci-fi shows and slice-of-life anime.",
"loc": "Lisbon, Portugal",
"age": "27 years"
},
"account": {
"id": 12345,
"timezone": "Europe/Lisbon",
"type": "free",
"anime_title_language": "en"
}
}{
"error": "user_token_failed",
"code": 401
}{
"error": "client_id_failed",
"code": 412,
"message": "Your client_id is wrong. Try another one"
}{
"error": "rate_limit",
"code": 429
}{
"error": "internal",
"code": 500
}Get the authenticated user's settings
Returns the authenticated user’s profile (name, avatar, bio, location, age) and account settings (timezone, plan type).
Response shape
{
"user": {
"name": "username",
"joined_at": "2018-01-15T00:00:00Z",
"gender": "Male",
"avatar": "https://simkl.in/avatars/.../user_100.jpg",
"bio": "I like anime.",
"loc": "Spain",
"age": 28
},
"account": {
"id": 12345,
"timezone": "Europe/Madrid",
"type": "vip"
}
}
account.type is one of free, pro, vip. Fields like gender are blank if the user disabled them in their privacy settings.
When to refetch
User settings are set-and-forget in practice — most users configure their timezone / date format / privacy preferences once and never touch them again. Don’t refetch on a timer or on every app launch / wake from background. Instead, gate the refetch on /sync/activities, which returns a settings.all timestamp that bumps when the user changes any account-level preference. Refetch only when that timestamp moves since the value you saved last time. Most launches will do zero extra calls. Full pattern + code example at Dates and timezones → User timezone preference.
curl --request GET \
--url 'https://api.simkl.com/users/settings?client_id=' \
--header 'Authorization: Bearer <token>' \
--header 'User-Agent: <user-agent>'import requests
url = "https://api.simkl.com/users/settings?client_id="
headers = {
"User-Agent": "<user-agent>",
"Authorization": "Bearer <token>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'User-Agent': '<user-agent>', Authorization: 'Bearer <token>'}
};
fetch('https://api.simkl.com/users/settings?client_id=', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));const options = {
method: 'GET',
headers: {'User-Agent': '<user-agent>', Authorization: 'Bearer <token>'}
};
fetch('https://api.simkl.com/users/settings?client_id=', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));val client = OkHttpClient()
val request = Request.Builder()
.url("https://api.simkl.com/users/settings?client_id=")
.get()
.addHeader("User-Agent", "<user-agent>")
.addHeader("Authorization", "Bearer <token>")
.build()
val response = client.newCall(request).execute()import Foundation
let url = URL(string: "https://api.simkl.com/users/settings")!
var components = URLComponents(url: url, resolvingAgainstBaseURL: true)!
let queryItems: [URLQueryItem] = [
URLQueryItem(name: "client_id", value: ""),
]
var queryAllowed = CharacterSet.urlQueryAllowed
queryAllowed.remove(charactersIn: "&=+#")
let encodedQuery = queryItems.map { "\($0.name.addingPercentEncoding(withAllowedCharacters: queryAllowed)!)=\(($0.value ?? "").addingPercentEncoding(withAllowedCharacters: queryAllowed)!)" }.joined(separator: "&")
components.percentEncodedQuery = components.percentEncodedQuery.map { $0 + "&" + encodedQuery } ?? encodedQuery
var request = URLRequest(url: components.url!)
request.httpMethod = "GET"
request.timeoutInterval = 10
request.allHTTPHeaderFields = [
"User-Agent": "<user-agent>",
"Authorization": "Bearer <token>"
]
let (data, _) = try await URLSession.shared.data(for: request)
print(String(decoding: data, as: UTF8.self))HttpResponse<String> response = Unirest.get("https://api.simkl.com/users/settings?client_id=")
.header("User-Agent", "<user-agent>")
.header("Authorization", "Bearer <token>")
.asString();const url = 'https://api.simkl.com/users/settings?client_id=';
const options = {
method: 'GET',
headers: {'User-Agent': '<user-agent>', Authorization: 'Bearer <token>'}
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.simkl.com/users/settings?client_id="
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("User-Agent", "<user-agent>")
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}using RestSharp;
var options = new RestClientOptions("https://api.simkl.com/users/settings?client_id=");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("User-Agent", "<user-agent>");
request.AddHeader("Authorization", "Bearer <token>");
var response = await client.GetAsync(request);
Console.WriteLine("{0}", response.Content);
using RestSharp;
var options = new RestClientOptions("https://api.simkl.com/users/settings?client_id=");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("User-Agent", "<user-agent>");
request.AddHeader("Authorization", "Bearer <token>");
var response = await client.GetAsync(request);
Console.WriteLine("{0}", response.Content);
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.simkl.com/users/settings?client_id=",
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: Bearer <token>",
"User-Agent: <user-agent>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}require 'uri'
require 'net/http'
url = URI("https://api.simkl.com/users/settings?client_id=")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["User-Agent"] = '<user-agent>'
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body$headers=@{}
$headers.Add("User-Agent", "<user-agent>")
$headers.Add("Authorization", "Bearer <token>")
$response = Invoke-WebRequest -Uri 'https://api.simkl.com/users/settings?client_id=' -Method GET -Headers $headersCURL *hnd = curl_easy_init();
curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_WRITEDATA, stdout);
curl_easy_setopt(hnd, CURLOPT_URL, "https://api.simkl.com/users/settings?client_id=");
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "User-Agent: <user-agent>");
headers = curl_slist_append(headers, "Authorization: Bearer <token>");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);
CURLcode ret = curl_easy_perform(hnd);CURL *hnd = curl_easy_init();
curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "GET");
curl_easy_setopt(hnd, CURLOPT_WRITEDATA, stdout);
curl_easy_setopt(hnd, CURLOPT_URL, "https://api.simkl.com/users/settings?client_id=");
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "User-Agent: <user-agent>");
headers = curl_slist_append(headers, "Authorization: Bearer <token>");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);
CURLcode ret = curl_easy_perform(hnd);{
"user": {
"name": "jane_doe",
"joined_at": "2018-06-12T14:23:08.000Z",
"gender": "female",
"avatar": "https://simkl.in/avatars/12/12345678abcdef9/user_100.jpg",
"bio": "Big into sci-fi shows and slice-of-life anime.",
"loc": "Lisbon, Portugal",
"age": "27 years"
},
"account": {
"id": 12345,
"timezone": "Europe/Lisbon",
"type": "free",
"anime_title_language": "en"
}
}{
"error": "user_token_failed",
"code": 401
}{
"error": "client_id_failed",
"code": 412,
"message": "Your client_id is wrong. Try another one"
}{
"error": "rate_limit",
"code": 429
}{
"error": "internal",
"code": 500
}Authorizations
Preferred form: your client_id as a URL query parameter on every request. Self-describing in logs and curl commands. See Headers and required parameters.
A user access_token, sent as Authorization: Bearer .... Required for endpoints that read or modify the user's library, scrobble session, ratings, settings, or playbacks. Every flow returns the same kind of token. See Set up authentication.
Headers
Descriptive identifier for your app, ideally name/version. Examples: PlexMediaServer/1.43.1.10540, kodi-simkl/0.9.2, MyApp/2.4.1 (https://myapp.com).
Query Parameters
Your client_id from your Simkl developer settings. Required on every request.
Short, lowercase identifier for your app (e.g. plex-scrobbler, kodi-bridge). Helps Simkl identify which apps are using the API.
Your app's current version (e.g. 1.0, 2.4.1). Helps Simkl debug issues you report.
Response
OK
Authenticated user's profile and account settings.
Hide child attributes
Hide child attributes
Type 4 null — data not on file in that field's slot. See Null and missing values.
Age in years, pre-formatted as a string like "30 years". Empty string if the user has not set their birthday or has disabled age display. Pre-formatted by the server — clients should display verbatim rather than parsing.
"30 years"
Hide child attributes
Hide child attributes
"Europe/Madrid"
Simkl account plan tier. free is the default; pro and vip are paid tiers that unlock higher rate limits and additional features. Some endpoints gate behavior on this value.
free, pro, vip How the user prefers anime titles to be shown. en is the English title, romaji the transliterated Japanese, native the original Japanese. Honour it when rendering anime titles so your app matches what the user sees on simkl.com.
en, romaji, native "en"
Was this page helpful?