Sources
A source is one publication: a show, a newsletter, a blog. One publication of one type, with one identity, however many technical feeds sit behind it.
curl -H "Authorization: Bearer $SPUTNIK_TOKEN" \
"https://sputnikintelligence.com/api/v1/sources?q=acquired"
What we say about a publication
Alongside the facts — name, type, homepage, post count — three fields are our judgment:
| Field | Means |
|---|---|
authority_score | How much weight it carries in its space. Useful for ranking a coverage report, so a mention on a show with real reach does not sit level with one on a blog nobody reads. |
liveness | active, dormant, dead, broken or pending. Whether it is still publishing. |
content_depth | How substantial its posts are — a link-roundup newsletter and a 4,000-word essay are different things to be mentioned in. |
These are our assessment, not the publication's. They are why a corpus this size stays usable: without them, every list is dominated by whoever publishes most often.
Reading liveness
- active — publishing on schedule.
- dormant — quiet lately, but not obviously finished. Plenty of good newsletters go quiet for a month.
- dead — stopped. Excluded from results unless you ask for it.
- broken — its feed stopped working. A technical problem, not an editorial one; we retry these.
- pending — just added, not yet assessed.
Type versus platform
These are independent, and confusing them is the most common filtering mistake:
source_type— what it is:podcast,newsletter,blog.publishing_platform— where it is hosted:substack,beehiiv,rss,bluesky,email.
A Substack-hosted podcast is source_type=podcast and
publishing_platform=substack. Filtering on the platform when you meant the format is
how you end up wondering where all the podcasts went.
What a source detail adds
GET /sources/{source} adds what the publication has been covering lately, and which
brands have advertised on it. Both come from its recent posts, so both are empty for a
publication we have only just started watching.
For its posts, use GET /posts?source=<slug> — that is paged, where embedding
them in the detail response would not be.