curl --request GET \
--url https://api.logo.dev/v2/account \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.logo.dev/v2/account', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.logo.dev/v2/account"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.logo.dev/v2/account"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}require 'uri'
require 'net/http'
url = URI("https://api.logo.dev/v2/account")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.logo.dev/v2/account",
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>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}{
"data": {
"object": "account",
"plan": "pro",
"credits": {
"remaining": 12500,
"monthly_allowance": 10000,
"purchased": 2500,
"renews_at": "2026-11-01T00:00:00Z",
"can_buy_credits": true
}
},
"metadata": {
"request_id": "request_01k6z8m2a4b5c6d7e8f9g0h1j2"
}
}Get your account
Read your plan and API credit balances.
curl --request GET \
--url https://api.logo.dev/v2/account \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.logo.dev/v2/account', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.logo.dev/v2/account"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.logo.dev/v2/account"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}require 'uri'
require 'net/http'
url = URI("https://api.logo.dev/v2/account")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.logo.dev/v2/account",
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>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}{
"data": {
"object": "account",
"plan": "pro",
"credits": {
"remaining": 12500,
"monthly_allowance": 10000,
"purchased": 2500,
"renews_at": "2026-11-01T00:00:00Z",
"can_buy_credits": true
}
},
"metadata": {
"request_id": "request_01k6z8m2a4b5c6d7e8f9g0h1j2"
}
}Get your API keys
Authorizations
Your secret key (sk_), as Bearer sk_.... Call the Logo.dev API only from your server.
Response
Your plan and API credit balances.
Hide child attributes
Hide child attributes
"account"Your plan. community is the free plan.
community, startup, scale, pro, enterprise, custom Hide child attributes
Hide child attributes
Your total usable API credit balance: included plus purchased credits.
API credits your plan includes each month.
Purchased API credits you have not spent.
When your included credits next renew. null when your account is not yet set up for billing.
true when your plan can buy more API credits.
Hide child attributes
Hide child attributes
Unique id for this request. Also sent as the Request-Id header.
"request_01k6z8m2a4b5c6d7e8f9g0h1j2"
Brand and image lookups only.
Hide child attributes
Hide child attributes
Which identifier the request used.
domain, ticker, isin, crypto, name, brand_id The identifier after normalization: the registrable domain, an upper-cased ticker, and so on.
How the identifier reached the brand. direct is a brand id or a domain that is its own brand; domain went through an alias or redirect; security is a ticker or ISIN; crypto is a crypto token symbol; search is a name lookup. Empty on a cached miss.
direct, domain, security, crypto, search, Reserved for brands involved in a merchant lookup. Always {} today.
202 responses only.
Hide child attributes
Hide child attributes
indexing is a brand's first crawl; resolving means the identifier is still being matched to a brand.
indexing, resolving Wait this long before retrying. Matches the Retry-After header.
30
Stop polling after this long.
300
Whether a brand.indexed webhook event carrying this request's request_id will be sent when the lookup settles.
Present when a brand lookup (GET /v2/brands or GET /v2/brands/{id}) ran the automatic subscribe: webhooks are on for the account, and nosubscribe is not true. See automatic subscriptions.
Hide child attributes
Hide child attributes
subscribed: the account is subscribed to the brand. quota_exceeded: the account is at its plan's subscription limit, so the brand was not subscribed. The lookup is answered and billed either way.
subscribed, quota_exceeded Why the subscribe was refused. Only with quota_exceeded.
Was this page helpful?