Public JSON endpoints for distributing exhibitions, biennials, radar live, and city feeds to my.biennale.com and external integrations.
Base URL: https://biennaleradar.base44.app/api/functions
https://biennaleradar.base44.app/api-docsCORS Enabled: All endpoints support cross-origin requests. Safe to call directly from my.biennale.com — no proxy needed.
Method: All endpoints accept POST with a JSON body. Parameters are sent in the request body, not as query strings.
May 27 Update: All 2026 biennials fully enriched with curators, artists & countries. New /subscribeToNewsletter endpoint live. /apiBiennials now returns full roster data.
/apiExhibitionsCurated exhibition records with dates, venues, coordinates. Filtered to verified/official_source quality only.
fetch("https://biennaleradar.base44.app/api/functions/apiExhibitions", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ city: "Venice" })
}){
"count": 10,
"venues": [
{
"id": "...",
"title": "...",
...
}
]
}/apiExhibitionDetailFull exhibition record including editorial summary, why_it_matters, artists, tags, lat/lng, ticket URL.
fetch("https://biennaleradar.base44.app/api/functions/apiExhibitionDetail", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ slug: "arthur-jafa-fondazione-prada-2026" })
}){
"count": 10,
"venues": [
{
"id": "...",
"title": "...",
...
}
]
}/apiBiennialsUpdated May 27All biennial records — 2026 calendar fully verified and enriched as of May 27, 2026. Includes curators, artists, participating countries.
fetch("https://biennaleradar.base44.app/api/functions/apiBiennials", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({})
}){
"count": 10,
"venues": [
{
"id": "...",
"title": "...",
...
}
]
}/apiArtFairsGlobal art fair calendar with dates, venues, VIP/public opening dates.
fetch("https://biennaleradar.base44.app/api/functions/apiArtFairs", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({})
}){
"count": 10,
"venues": [
{
"id": "...",
"title": "...",
...
}
]
}/apiCitiesAll city profiles with slugs for routing on my.biennale.com city pages.
fetch("https://biennaleradar.base44.app/api/functions/apiCities", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({})
}){
"count": 10,
"venues": [
{
"id": "...",
"title": "...",
...
}
]
}/apiCityFeedCombined per-city feed of exhibitions + articles + fairs. Use for city detail pages.
fetch("https://biennaleradar.base44.app/api/functions/apiCityFeed", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ slug: "venice" })
}){
"count": 10,
"venues": [
{
"id": "...",
"title": "...",
...
}
]
}/apiVenuesVenue records with addresses, coordinates, type, and opening hours.
fetch("https://biennaleradar.base44.app/api/functions/apiVenues", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ city: "Paris" })
}){
"count": 10,
"venues": [
{
"id": "...",
"title": "...",
...
}
]
}/apiPulseNewThe Radar's editorial read on what's moving across the ecosystem — trending artists (with pulse tiers), momentum topics, and watch-list signals. Requires X-API-Key. Use ?format=checker for the homepage pulse-checker widget, or ?section=artists|topics|signals for a single feed.
fetch("https://biennaleradar.base44.app/api/functions/apiPulse", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ format: "full" })
}){
"count": 10,
"venues": [
{
"id": "...",
"title": "...",
...
}
]
}/generateRadarLiveJSONCurated real-time art world intelligence — approved news items from ARTnews, Artnet, Kunstkritikk, etc. Updated every 12 hours.
fetch("https://biennaleradar.base44.app/api/functions/generateRadarLiveJSON", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({})
}){
"count": 10,
"venues": [
{
"id": "...",
"title": "...",
...
}
]
}/publicFeedMerged chronological feed of exhibitions + articles. Supports ?format=rss for RSS 2.0 output.
fetch("https://biennaleradar.base44.app/api/functions/publicFeed", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ type: "exhibition" })
}){
"count": 10,
"venues": [
{
"id": "...",
"title": "...",
...
}
]
}/getCollectionFeedCurated collection as JSON. Use slug from Admin → Collections.
fetch("https://biennaleradar.base44.app/api/functions/getCollectionFeed", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ slug: "venice-2026-must-see" })
}){
"count": 10,
"venues": [
{
"id": "...",
"title": "...",
...
}
]
}const res = await fetch('https://biennaleradar.base44.app/api/functions/apiBiennials', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({})
});
const { biennials } = await res.json();
// biennials now include curators[], featured_artists[], participating_countries[]
biennials.forEach(b => {
console.log(b.name, b.status, b.curators);
});const res = await fetch('https://biennaleradar.base44.app/api/functions/apiExhibitions', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ city: 'Venice', status: 'current', limit: 20 })
});
const { exhibitions } = await res.json();const res = await fetch('https://biennaleradar.base44.app/api/functions/subscribeToNewsletter', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
email: 'user@example.com',
full_name: 'Jane Smith',
source: 'my_biennale_com'
})
});
const { success, message } = await res.json();// Compact payload for the pulse-checker widget on the homepage
const res = await fetch('https://biennaleradar.base44.app/api/functions/apiPulse?format=checker', {
headers: { 'X-API-Key': 'YOUR_BIENNALE_RADAR_API_KEY' }
});
const pulse = await res.json();
// pulse.headline -> { recurring_artists, live_signals, topics_tracked }
// pulse.top_movers -> [{ name, pulse_tier, appearances, trending, profile_path }]
// pulse.hot_topics -> [{ topic, count, trending }]
// pulse.headline_signal -> { title, signal_type, summary, source_url }
// pulse.cta -> { label: 'See the full Pulse', path: '/pulse' }// For /cities/venice on my.biennale.com
const res = await fetch('https://biennaleradar.base44.app/api/functions/apiCityFeed', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ slug: 'venice', limit: 30 })
});
const { city, feed } = await res.json();
// feed contains mixed type: "exhibition" | "article" | "fair"Integration Support
For API questions or integration help with my.biennale.com: corcoran.nyc@gmail.com
Full integration guide: MY_BIENNALE_API_INTEGRATION_GUIDE.md in the project root — send this to your dev team.