Marblist API

Raw robotics and AI data, with engagement over time. Build your own feed.

Get your API keyJump to the endpoints

Introduction

The Marblist API gives you everything Marblist reads in robotics and AI, raw: posts, threads, papers, launches and company pages, each with its engagement over time. Build your own feeds, alerts and newsletters on the data ours are made from.

The API is REST over HTTPS. Requests take query parameters (and JSON bodies for POST), and every response is JSON. Times are ISO 8601 in UTC. IDs are the source and its own ID: x:2112630018195276229, reddit:t3_1x83d9r, arxiv:2610.30105.

Get your API key

Leave your email and we'll send you your key.

Privacy

Base URL
https://api.marblist.ai/v1
A response
{
  "object": "list",
  "data": [
    {
      "id": "x:2112630018195276229",
      "source": "x",
      "vertical": "robotics",
      "tags": [
        "launch",
        "yc:F26"
      ],
      "...": "..."
    }
  ],
  "has_more": true,
  "next_cursor": "eyJ0IjoiMjAyNi0xMC0yMFQxOTo0MDoyMVoifQ"
}

Authentication

Send your API key as a bearer token in the Authorization header of every request. Keys start with mbl_live_.

Keep your key secret: anyone who has it can use your quota. Don't put it in a browser or an app you ship; call the API from your server. If a key leaks, write to us and we'll replace it.

A missing or invalid key gets a 401.

GET /posts
curl -G https://api.marblist.ai/v1/posts \
  -H "Authorization: Bearer $MARBLIST_API_KEY" \
  -d limit=1
import os, requests

API_KEY = os.environ["MARBLIST_API_KEY"]

r = requests.get(
    "https://api.marblist.ai/v1/posts",
    headers={"Authorization": f"Bearer {API_KEY}"},
    params={"limit": "1"},
)
r.raise_for_status()
print(r.json())
const params = new URLSearchParams({ limit: "1" });
const res = await fetch(`https://api.marblist.ai/v1/posts?${params}`, {
  headers: {
    Authorization: `Bearer ${process.env.MARBLIST_API_KEY}`,
  },
});
console.log(await res.json());

Pagination

List endpoints return a page of results and a cursor to the next one. Pass limit (1 to 100, default 25) and, for the next page, the next_cursor you got as cursor. When has_more is false, you have everything.

objectstring
Always list.
dataarray
The page's objects, in the order you asked for.
has_moreboolean
Whether there's another page.
next_cursorstring or null
Pass it as cursor to get the next page.
GET /posts
curl -G https://api.marblist.ai/v1/posts \
  -H "Authorization: Bearer $MARBLIST_API_KEY" \
  -d vertical=robotics \
  -d limit=50 \
  -d cursor=eyJ0IjoiMjAyNi0xMC0yMFQxOTo0MDoyMVoifQ
import os, requests

API_KEY = os.environ["MARBLIST_API_KEY"]

r = requests.get(
    "https://api.marblist.ai/v1/posts",
    headers={"Authorization": f"Bearer {API_KEY}"},
    params={
        "vertical": "robotics",
        "limit": "50",
        "cursor": "eyJ0IjoiMjAyNi0xMC0yMFQxOTo0MDoyMVoifQ",
    },
)
r.raise_for_status()
print(r.json())
const params = new URLSearchParams({
  vertical: "robotics",
  limit: "50",
  cursor: "eyJ0IjoiMjAyNi0xMC0yMFQxOTo0MDoyMVoifQ",
});
const res = await fetch(`https://api.marblist.ai/v1/posts?${params}`, {
  headers: {
    Authorization: `Bearer ${process.env.MARBLIST_API_KEY}`,
  },
});
console.log(await res.json());

Errors

Errors use HTTP status codes and a JSON body that says what went wrong, and which parameter when there is one.

400invalid_request
A parameter is missing or wrong.
401authentication_error
No API key, or an invalid one.
403permission_error
Your plan doesn't include this.
404not_found
No such post, thread, account or feed.
429rate_limited
Too many requests: wait for Retry-After.
500api_error
Something broke on our side. Retry with backoff.
400 Bad Request
{
  "error": {
    "type": "invalid_request",
    "message": "since must be an ISO 8601 time, like 2026-10-20T00:00:00Z",
    "param": "since"
  }
}

Rate limits

Limits depend on your plan. Every response says where you stand, and a request over the limit gets a 429 with a Retry-After header in seconds.

X-RateLimit-Limitheader
Requests allowed in the current window.
X-RateLimit-Remainingheader
Requests left in it.
X-RateLimit-Resetheader
Seconds until it resets.

Sources

We track the top sources wherever robotics and AI news breaks, and keep everything we read with its engagement over time. Filter by source on any post endpoint.

9,000+posts scanned a day
5,000+new posts a day
14,000+engagement readings a day

All sources, averaged over the last 7 days.

xThe top robotics and AI accounts, and the conversations around them.
redditThe main robotics and AI communities, threads and comments.
youtubeRobotics and AI channels.
tiktokRobot builders and makers.
instagramRobot builders and makers.
arxivRobotics research papers.
hfHugging Face's daily papers.
webLabs' and robot companies' blogs and news, launch sites, and research data.
ycYC's company directory, with each company's founders.

The Post object

One item from any source: an X post, a Reddit post or comment, a paper, an article, a video, a launch or a company page. Fields a source doesn't have are null.

idstring
The source and its own ID.
sourcestring
x, reddit, youtube, arxiv, hf, web, tiktok, instagram or yc.
kindstring
post, comment, article, paper, video, launch or company.
urlstring
The item on its source.
authorobject
handle, name and followers when the source gives them.
posted_attime
When it was published.
first_seen_attime
When we first read it.
titlestring or null
Reddit posts, articles, papers, videos.
textstring
The full text.
linksarray
Every link in it.
mediaarray
Images and videos, each with its type and url.
verticalstring or null
robotics, ai, or null for both.
tagsarray
Ours: launch, funding, yc:<batch>, lab, paper, data-revision.
quoted_id, reply_to_idstring or null
The post it quotes, or replies to.
quoted_byarray
Posts by the accounts we follow that quoted it.
metricsobject
The latest reading: views, likes, reposts, replies on X; score and comments on Reddit.
rawobject
The source's own payload as we read it, untouched.
The Post object
{
  "id": "x:2112630018195276229",
  "object": "post",
  "source": "x",
  "kind": "post",
  "url": "https://x.com/namaangupta/status/2112630018195276229",
  "author": {
    "handle": "namaangupta",
    "name": "Naman Gupta",
    "followers": 580
  },
  "posted_at": "2026-10-20T19:40:21Z",
  "first_seen_at": "2026-10-21T11:40:42Z",
  "title": null,
  "text": "We're out of stealth! @antropirobotics builds fully autonomous factories for metal parts.\n\nOur goal: US quality, China prices, delivery under 24 hours.\n\nIn 6 months, we built our first factory, started shipping, and turned profitable. All bootstrapped.",
  "links": [
    "https://t.co/385KqrWWRd",
    "https://t.co/3u20hmS0rP"
  ],
  "media": [
    {
      "type": "video",
      "url": "https://video.twimg.com/amplify_video/2112619794449170432/vid/avc1/1920x1080/_t6Puh2-iR_36ij6.mp4",
      "width": 1920,
      "height": 1080
    }
  ],
  "vertical": "robotics",
  "tags": [
    "launch",
    "yc:F26"
  ],
  "quoted_id": null,
  "reply_to_id": null,
  "quoted_by": [
    "x:2112794272592228760"
  ],
  "metrics": {
    "views": 44689,
    "likes": 954,
    "reposts": 84,
    "replies": 57
  },
  "raw": {
    "...": "the source's own payload, as we read it"
  }
}

Engagement history

Every time we read a post, we keep its numbers, so you can see what took off, and when. A reading has the same metrics as the post's source.

seen_attime
When we read it.
views, likes, reposts, repliesinteger
On X.
score, commentsinteger
On Reddit.
Readings
[
  {
    "seen_at": "2026-10-21T11:40:42Z",
    "views": 26556,
    "likes": 517,
    "reposts": 51,
    "replies": 38
  },
  {
    "seen_at": "2026-10-21T15:36:30Z",
    "views": 36369,
    "likes": 773,
    "reposts": 71,
    "replies": 47
  },
  {
    "seen_at": "2026-10-21T22:13:53Z",
    "views": 44689,
    "likes": 954,
    "reposts": 84,
    "replies": 57
  }
]

The Account object

An account we follow. We review the roster every week.

platform, handlestring
Where it is, and who.
namestring or null
Its display name.
verticalsarray
robotics, ai, or both.
focusstring
dedicated (it's what they post about) or adjacent.
typestring
Researcher, Founder/exec, Company/DevRel, Paper curator, Investor/markets, Journalist/media, Leaks/scoops and more.
tierinteger
1: the core roster. 2 and 3: watched, and promoted when they matter.
statusstring
active, candidate or dormant (silent for 3 months).
added_attime
When it joined.
The Account object
{
  "object": "account",
  "platform": "x",
  "handle": "pabbeel",
  "name": "Pieter Abbeel",
  "verticals": [
    "robotics"
  ],
  "focus": "dedicated",
  "type": "Researcher",
  "tier": 1,
  "status": "active",
  "added_at": "2026-09-29T20:48:53Z"
}

List posts

GET /v1/posts

Posts from every source, newest first unless you sort them. Combine filters to build your own feed.

Query parameters

sourcestring or list
One or more sources, comma separated.
verticalstring
robotics or ai.
authorstring
An author's handle.
qstring
Words in the title or text. Quote a phrase: "out of stealth".
tagstring or list
One or more of our tags.
since, untiltime
Published in this window.
min_viewsinteger
At least this many views at the latest reading (X).
min_scoreinteger
At least this score (Reddit).
sortstring
latest (default), views, or velocity: views gained per hour between the last two readings.
limit, cursor
GET /posts
curl -G https://api.marblist.ai/v1/posts \
  -H "Authorization: Bearer $MARBLIST_API_KEY" \
  -d vertical=robotics \
  -d tag=launch \
  -d since=2026-10-20T00:00:00Z \
  -d sort=velocity
import os, requests

API_KEY = os.environ["MARBLIST_API_KEY"]

r = requests.get(
    "https://api.marblist.ai/v1/posts",
    headers={"Authorization": f"Bearer {API_KEY}"},
    params={
        "vertical": "robotics",
        "tag": "launch",
        "since": "2026-10-20T00:00:00Z",
        "sort": "velocity",
    },
)
r.raise_for_status()
print(r.json())
const params = new URLSearchParams({
  vertical: "robotics",
  tag: "launch",
  since: "2026-10-20T00:00:00Z",
  sort: "velocity",
});
const res = await fetch(`https://api.marblist.ai/v1/posts?${params}`, {
  headers: {
    Authorization: `Bearer ${process.env.MARBLIST_API_KEY}`,
  },
});
console.log(await res.json());
Response
{
  "object": "list",
  "data": [
    {
      "id": "x:2112998455383847332",
      "object": "post",
      "source": "x",
      "kind": "post",
      "url": "https://x.com/Tesla/status/2112998455383847332",
      "author": {
        "handle": "tesla",
        "name": "Tesla",
        "followers": 24925437
      },
      "posted_at": "2026-10-21T20:04:24Z",
      "first_seen_at": "2026-10-21T22:11:23Z",
      "text": "Q3 Shareholder Update → https://t.co/u0UcDOuMNa ...",
      "vertical": "robotics",
      "tags": [],
      "metrics": {
        "views": 1825474,
        "likes": 10683,
        "reposts": 1241,
        "replies": 407
      }
    },
    {
      "id": "x:2112630018195276229",
      "object": "post",
      "source": "x",
      "kind": "post",
      "url": "https://x.com/namaangupta/status/2112630018195276229",
      "author": {
        "handle": "namaangupta",
        "name": "Naman Gupta",
        "followers": 580
      },
      "posted_at": "2026-10-20T19:40:21Z",
      "first_seen_at": "2026-10-21T11:40:42Z",
      "title": null,
      "text": "We're out of stealth! @antropirobotics builds fully autonomous factories for metal parts.\n\nOur goal: US quality, China prices, delivery under 24 hours.\n\nIn 6 months, we built our first factory, started shipping, and turned profitable. All bootstrapped.",
      "links": [
        "https://t.co/385KqrWWRd",
        "https://t.co/3u20hmS0rP"
      ],
      "vertical": "robotics",
      "tags": [
        "launch",
        "yc:F26"
      ],
      "quoted_id": null,
      "reply_to_id": null,
      "quoted_by": [
        "x:2112794272592228760"
      ],
      "metrics": {
        "views": 44689,
        "likes": 954,
        "reposts": 84,
        "replies": 57
      }
    }
  ],
  "has_more": true,
  "next_cursor": "eyJ0IjoiMjAyNi0xMC0yMFQxOTo0MDoyMVoifQ"
}

Retrieve a post

GET /v1/posts/{id}

One post, with its engagement history when you ask for it.

Path parameters

id requiredstring
The post's ID.

Query parameters

includestring
history adds every reading as history.
GET /posts/x:2112630018195276229
curl -G https://api.marblist.ai/v1/posts/x:2112630018195276229 \
  -H "Authorization: Bearer $MARBLIST_API_KEY" \
  -d include=history
import os, requests

API_KEY = os.environ["MARBLIST_API_KEY"]

r = requests.get(
    "https://api.marblist.ai/v1/posts/x:2112630018195276229",
    headers={"Authorization": f"Bearer {API_KEY}"},
    params={"include": "history"},
)
r.raise_for_status()
print(r.json())
const params = new URLSearchParams({ include: "history" });
const res = await fetch(`https://api.marblist.ai/v1/posts/x:2112630018195276229?${params}`, {
  headers: {
    Authorization: `Bearer ${process.env.MARBLIST_API_KEY}`,
  },
});
console.log(await res.json());
Response
{
  "id": "x:2112630018195276229",
  "object": "post",
  "source": "x",
  "kind": "post",
  "url": "https://x.com/namaangupta/status/2112630018195276229",
  "author": {
    "handle": "namaangupta",
    "name": "Naman Gupta",
    "followers": 580
  },
  "posted_at": "2026-10-20T19:40:21Z",
  "first_seen_at": "2026-10-21T11:40:42Z",
  "title": null,
  "text": "We're out of stealth! @antropirobotics builds fully autonomous factories for metal parts.\n\nOur goal: US quality, China prices, delivery under 24 hours.\n\nIn 6 months, we built our first factory, started shipping, and turned profitable. All bootstrapped.",
  "links": [
    "https://t.co/385KqrWWRd",
    "https://t.co/3u20hmS0rP"
  ],
  "media": [
    {
      "type": "video",
      "url": "https://video.twimg.com/amplify_video/2112619794449170432/vid/avc1/1920x1080/_t6Puh2-iR_36ij6.mp4",
      "width": 1920,
      "height": 1080
    }
  ],
  "vertical": "robotics",
  "tags": [
    "launch",
    "yc:F26"
  ],
  "quoted_id": null,
  "reply_to_id": null,
  "quoted_by": [
    "x:2112794272592228760"
  ],
  "metrics": {
    "views": 44689,
    "likes": 954,
    "reposts": 84,
    "replies": 57
  },
  "history": [
    {
      "seen_at": "2026-10-21T11:40:42Z",
      "views": 26556,
      "likes": 517,
      "reposts": 51,
      "replies": 38
    },
    {
      "seen_at": "2026-10-21T15:36:30Z",
      "views": 36369,
      "likes": 773,
      "reposts": 71,
      "replies": 47
    },
    {
      "seen_at": "2026-10-21T22:13:53Z",
      "views": 44689,
      "likes": 954,
      "reposts": 84,
      "replies": 57
    }
  ]
}

Post history

GET /v1/posts/{id}/history

Every reading of a post, oldest first: how its views, likes and replies grew.

Path parameters

id requiredstring
The post's ID.
GET /posts/x:2112630018195276229/history
curl https://api.marblist.ai/v1/posts/x:2112630018195276229/history \
  -H "Authorization: Bearer $MARBLIST_API_KEY"
import os, requests

API_KEY = os.environ["MARBLIST_API_KEY"]

r = requests.get(
    "https://api.marblist.ai/v1/posts/x:2112630018195276229/history",
    headers={"Authorization": f"Bearer {API_KEY}"},
)
r.raise_for_status()
print(r.json())
const res = await fetch("https://api.marblist.ai/v1/posts/x:2112630018195276229/history", {
  headers: {
    Authorization: `Bearer ${process.env.MARBLIST_API_KEY}`,
  },
});
console.log(await res.json());
Response
{
  "object": "list",
  "data": [
    {
      "seen_at": "2026-10-21T11:40:42Z",
      "views": 26556,
      "likes": 517,
      "reposts": 51,
      "replies": 38
    },
    {
      "seen_at": "2026-10-21T15:36:30Z",
      "views": 36369,
      "likes": 773,
      "reposts": 71,
      "replies": 47
    },
    {
      "seen_at": "2026-10-21T22:13:53Z",
      "views": 44689,
      "likes": 954,
      "reposts": 84,
      "replies": 57
    }
  ],
  "has_more": false,
  "next_cursor": null
}

Retrieve a thread

GET /v1/threads/{id}

A Reddit post and its comments, best first, each with its parent so you can rebuild the tree.

Path parameters

id requiredstring
The thread's ID (its post's).

Query parameters

limit, cursor
Comments per page. See Pagination.
GET /threads/reddit:t3_1x83d9r
curl -G https://api.marblist.ai/v1/threads/reddit:t3_1x83d9r \
  -H "Authorization: Bearer $MARBLIST_API_KEY" \
  -d limit=3
import os, requests

API_KEY = os.environ["MARBLIST_API_KEY"]

r = requests.get(
    "https://api.marblist.ai/v1/threads/reddit:t3_1x83d9r",
    headers={"Authorization": f"Bearer {API_KEY}"},
    params={"limit": "3"},
)
r.raise_for_status()
print(r.json())
const params = new URLSearchParams({ limit: "3" });
const res = await fetch(`https://api.marblist.ai/v1/threads/reddit:t3_1x83d9r?${params}`, {
  headers: {
    Authorization: `Bearer ${process.env.MARBLIST_API_KEY}`,
  },
});
console.log(await res.json());
Response
{
  "id": "reddit:t3_1x83d9r",
  "object": "thread",
  "source": "reddit",
  "subreddit": "accelerate",
  "url": "https://www.reddit.com/r/accelerate/comments/1x83d9r/why_is_this_sub_going_crazy_over_a_pr_stunt_with/",
  "author": {
    "handle": "dangerous-day-2943"
  },
  "posted_at": "2026-10-17T06:48:18Z",
  "title": "Why is this sub going crazy over a PR stunt with an empty shell?",
  "metrics": {
    "score": 2857,
    "comments": 1451
  },
  "comments": [
    {
      "id": "reddit:t1_ph9h659",
      "parent_id": "reddit:t3_1x83d9r",
      "author": {
        "handle": "demoevolved"
      },
      "posted_at": "2026-10-17T07:19:51Z",
      "score": 150,
      "rank": 1,
      "text": "The real issue is the prop they used is not remotely filled out with car parts that's needed to drive around on the road. ..."
    },
    {
      "id": "reddit:t1_pha0suq",
      "parent_id": "reddit:t3_1x83d9r",
      "author": {
        "handle": "hasra23"
      },
      "posted_at": "2026-10-17T10:07:45Z",
      "score": 138,
      "rank": 2,
      "text": "Imagine being the engineer who has to relay Elon's orders to the rest of the team. ..."
    },
    {
      "id": "reddit:t1_phabnce",
      "parent_id": "reddit:t1_pha0suq",
      "author": {
        "handle": "thinksharpe"
      },
      "posted_at": "2026-10-17T11:32:11Z",
      "score": 143,
      "rank": 3,
      "text": "...have you never met an engineer in your life?! ..."
    }
  ],
  "has_more": true
}

List accounts

GET /v1/accounts

The accounts we follow, to see who's in the roster or to build your own list from it.

Query parameters

platformstring
x, youtube, tiktok, instagram and more.
verticalstring
robotics or ai.
tierinteger
1, 2 or 3.
statusstring
active (default), candidate or dormant.
qstring
Words in the handle or name.
limit, cursor
GET /accounts
curl -G https://api.marblist.ai/v1/accounts \
  -H "Authorization: Bearer $MARBLIST_API_KEY" \
  -d platform=x \
  -d vertical=robotics \
  -d tier=1
import os, requests

API_KEY = os.environ["MARBLIST_API_KEY"]

r = requests.get(
    "https://api.marblist.ai/v1/accounts",
    headers={"Authorization": f"Bearer {API_KEY}"},
    params={
        "platform": "x",
        "vertical": "robotics",
        "tier": "1",
    },
)
r.raise_for_status()
print(r.json())
const params = new URLSearchParams({
  platform: "x",
  vertical: "robotics",
  tier: "1",
});
const res = await fetch(`https://api.marblist.ai/v1/accounts?${params}`, {
  headers: {
    Authorization: `Bearer ${process.env.MARBLIST_API_KEY}`,
  },
});
console.log(await res.json());
Response
{
  "object": "list",
  "data": [
    {
      "object": "account",
      "platform": "x",
      "handle": "pabbeel",
      "name": "Pieter Abbeel",
      "verticals": [
        "robotics"
      ],
      "focus": "dedicated",
      "type": "Researcher",
      "tier": 1,
      "status": "active",
      "added_at": "2026-09-29T20:48:53Z"
    }
  ],
  "has_more": true,
  "next_cursor": "eyJoIjoicGFiYmVlbCJ9"
}

Create a feed

POST /v1/feeds

Save a set of filters and a sort as a feed, then read it like a list. Your feed, curated your way.

Body

name requiredstring
What you call it.
filters requiredobject
Any of List posts' filters.
sortstring
latest, views or velocity.
POST /feeds
curl -X POST https://api.marblist.ai/v1/feeds \
  -H "Authorization: Bearer $MARBLIST_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Humanoid launches",
    "filters": {
      "vertical": "robotics",
      "tag": [
        "launch"
      ],
      "q": "humanoid",
      "min_views": 10000
    },
    "sort": "velocity"
  }'
import os, requests

API_KEY = os.environ["MARBLIST_API_KEY"]

r = requests.post(
    "https://api.marblist.ai/v1/feeds",
    headers={"Authorization": f"Bearer {API_KEY}"},
    json={
        "name": "Humanoid launches",
        "filters": {
            "vertical": "robotics",
            "tag": ["launch"],
            "q": "humanoid",
            "min_views": 10000,
        },
        "sort": "velocity",
    },
)
r.raise_for_status()
print(r.json())
const res = await fetch("https://api.marblist.ai/v1/feeds", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.MARBLIST_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    name: "Humanoid launches",
    filters: {
      vertical: "robotics",
      tag: ["launch"],
      q: "humanoid",
      min_views: 10000,
    },
    sort: "velocity",
  }),
});
console.log(await res.json());
Response
{
  "id": "feed_7Hq2xV",
  "object": "feed",
  "name": "Humanoid launches",
  "filters": {
    "vertical": "robotics",
    "tag": [
      "launch"
    ],
    "q": "humanoid",
    "min_views": 10000
  },
  "sort": "velocity",
  "created_at": "2026-10-22T23:10:00Z"
}

List feeds

GET /v1/feeds

Your saved feeds, newest first.

GET /feeds
curl https://api.marblist.ai/v1/feeds \
  -H "Authorization: Bearer $MARBLIST_API_KEY"
import os, requests

API_KEY = os.environ["MARBLIST_API_KEY"]

r = requests.get(
    "https://api.marblist.ai/v1/feeds",
    headers={"Authorization": f"Bearer {API_KEY}"},
)
r.raise_for_status()
print(r.json())
const res = await fetch("https://api.marblist.ai/v1/feeds", {
  headers: {
    Authorization: `Bearer ${process.env.MARBLIST_API_KEY}`,
  },
});
console.log(await res.json());
Response
{
  "object": "list",
  "data": [
    {
      "id": "feed_7Hq2xV",
      "object": "feed",
      "name": "Humanoid launches",
      "sort": "velocity",
      "created_at": "2026-10-22T23:10:00Z"
    }
  ],
  "has_more": false,
  "next_cursor": null
}

Read a feed

GET /v1/feeds/{id}/posts

The posts that match a feed, in its sort. Same response as List posts.

Path parameters

id requiredstring
The feed's ID.
GET /feeds/feed_7Hq2xV/posts
curl -G https://api.marblist.ai/v1/feeds/feed_7Hq2xV/posts \
  -H "Authorization: Bearer $MARBLIST_API_KEY" \
  -d limit=20
import os, requests

API_KEY = os.environ["MARBLIST_API_KEY"]

r = requests.get(
    "https://api.marblist.ai/v1/feeds/feed_7Hq2xV/posts",
    headers={"Authorization": f"Bearer {API_KEY}"},
    params={"limit": "20"},
)
r.raise_for_status()
print(r.json())
const params = new URLSearchParams({ limit: "20" });
const res = await fetch(`https://api.marblist.ai/v1/feeds/feed_7Hq2xV/posts?${params}`, {
  headers: {
    Authorization: `Bearer ${process.env.MARBLIST_API_KEY}`,
  },
});
console.log(await res.json());

Changelog

  • The API reference is published.

Questions, or something you need that isn't here: [email protected]