Top cited domains for the latest or selected run
curl --request GET \
--url https://openlens.com/api/sources \
--header 'Authorization: Bearer <token>'import requests
url = "https://openlens.com/api/sources"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://openlens.com/api/sources', 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://openlens.com/api/sources",
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;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://openlens.com/api/sources"
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))
}HttpResponse<String> response = Unirest.get("https://openlens.com/api/sources")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://openlens.com/api/sources")
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[
{
"domain": "<string>",
"count": 123,
"platforms": [
"<string>"
],
"urls": [
{
"url": "<string>",
"count": 123,
"title": "<string>"
}
],
"domainCategory": "own_brand"
}
]{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}Citations
Top cited domains for the latest or selected run
GET
/
sources
Top cited domains for the latest or selected run
curl --request GET \
--url https://openlens.com/api/sources \
--header 'Authorization: Bearer <token>'import requests
url = "https://openlens.com/api/sources"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://openlens.com/api/sources', 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://openlens.com/api/sources",
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;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://openlens.com/api/sources"
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))
}HttpResponse<String> response = Unirest.get("https://openlens.com/api/sources")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://openlens.com/api/sources")
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[
{
"domain": "<string>",
"count": 123,
"platforms": [
"<string>"
],
"urls": [
{
"url": "<string>",
"count": 123,
"title": "<string>"
}
],
"domainCategory": "own_brand"
}
]{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}Authorizations
Clerk API key. Create one from your account settings under API Keys.
Query Parameters
Project id. Required on all data endpoints.
Completed prompt run ID. Omit to use the project's latest usable run; use GET /prompts/runs to list historical run IDs.
Set to 1 with runId to read trusted citations from an owned run in any status. Responses still awaiting or failing evidence extraction are excluded.
Available options:
1 LLM platform identifier. Newer scraper-backed ids end in _app; chatgpt, perplexity, and gemini are legacy and not returned by current runs.
Available options:
chatgpt, chatgpt_app, claude, gemini, gemini_app, grok_app, grok_api, perplexity, perplexity_app, google_app, deepseek Available options:
own_brand, competitor, news, ugc, review_site, third_party Required range:
1 <= x <= 500Required range:
1 <= x <= 200Comma-separated list of attribute filters. Accepts both built-in attributes (e.g. pricing, comparisons) and project-specific custom attributes.
Was this page helpful?