News
Get personalized news
Get personalized news stories based on your persona IDs. AI generates relevant keywords from your personas to filter news.
GET
/
news
/
stories
/
personalized
cURL
curl "https://app.mavera.io/api/v1/news/stories/personalized?persona_ids=persona-id-1,persona-id-2" \
-H "Authorization: Bearer YOUR_API_KEY"import requests
url = "https://app.mavera.io/api/v1/news/stories/personalized"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.mavera.io/api/v1/news/stories/personalized', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://app.mavera.io/api/v1/news/stories/personalized"
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))
}{
"object": "list",
"data": [
{
"id": "<string>",
"name": "<string>",
"summary": "<string>",
"short_summary": "<string>",
"image_url": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"article_count": 123,
"unique_sources": 123,
"sentiment": {
"positive": 123,
"negative": 123,
"neutral": 123
},
"categories": [
"<string>"
],
"topics": [
"<string>"
],
"key_points": [
"<string>"
]
}
],
"personalization": {
"personas": [
{
"id": "<string>",
"name": "<string>",
"category": "<string>"
}
],
"keywords": [
"<string>"
]
}
}{
"error": {
"message": "Invalid API key.",
"type": "authentication_error",
"code": "invalid_api_key",
"param": null
}
}{
"error": {
"message": "Invalid parameter value.",
"type": "invalid_request_error",
"code": "validation_error",
"param": "persona_ids"
}
}{
"error": {
"message": "Rate limit exceeded. Please retry after 30 seconds.",
"type": "rate_limit_error",
"code": "rate_limit_exceeded",
"param": null
}
}Authorizations
API key prefixed with mvra_live_. Create keys at Settings > Developer > API Keys.
Query Parameters
Comma-separated Mavera persona IDs
Number of stories (max 50)
Required range:
x <= 50⌘I
cURL
curl "https://app.mavera.io/api/v1/news/stories/personalized?persona_ids=persona-id-1,persona-id-2" \
-H "Authorization: Bearer YOUR_API_KEY"import requests
url = "https://app.mavera.io/api/v1/news/stories/personalized"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.mavera.io/api/v1/news/stories/personalized', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://app.mavera.io/api/v1/news/stories/personalized"
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))
}{
"object": "list",
"data": [
{
"id": "<string>",
"name": "<string>",
"summary": "<string>",
"short_summary": "<string>",
"image_url": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"article_count": 123,
"unique_sources": 123,
"sentiment": {
"positive": 123,
"negative": 123,
"neutral": 123
},
"categories": [
"<string>"
],
"topics": [
"<string>"
],
"key_points": [
"<string>"
]
}
],
"personalization": {
"personas": [
{
"id": "<string>",
"name": "<string>",
"category": "<string>"
}
],
"keywords": [
"<string>"
]
}
}{
"error": {
"message": "Invalid API key.",
"type": "authentication_error",
"code": "invalid_api_key",
"param": null
}
}{
"error": {
"message": "Invalid parameter value.",
"type": "invalid_request_error",
"code": "validation_error",
"param": "persona_ids"
}
}{
"error": {
"message": "Rate limit exceeded. Please retry after 30 seconds.",
"type": "rate_limit_error",
"code": "rate_limit_exceeded",
"param": null
}
}