Feed
The feed command reads the connected account's LinkedIn home feed as agent-actionable posts. It is account-scoped and requires --account (or a default set via curviate config set-account).
Before you start. You need an API key and a connected LinkedIn account. Run curviate account list to read your acc_... ids; if it returns an empty list, connect an account first (Authentication & Accounts). Without one, this command exits 4 with ACCOUNT_NOT_FOUND.
feed home is a read: it does not accept --preview (passing it is a usage error, exit code 2). It supports --json (automatic when stdout is not a TTY), --fields, and the pagination flags --limit, --cursor, --all, and --max-pages.
Commands
# Read your connected account's home feed (paginated read)
# --sort recent (default) is reverse-chronological and always available.
# --sort relevant is LinkedIn's ranked "top" feed (a throttled budget that can
# rate-limit).
curviate feed home [--sort recent|relevant] [--limit <n>] [--cursor <token>] [--all] [--max-pages <n>]Each post carries the numeric activity id you pass to the post group to react, comment, or fetch full detail.
The feed is an index (hydrate the body)
On the default recent sort the feed is an index: each item's text is null by design, because the post body is not resolved there. Hydrate the full body with a follow-up call using the item's activity id:
curviate post get <activity_urn_id> --account acc_YOUR_ACCOUNT_ID--sort relevant resolves text inline, so no hydration call is needed on that sort.
The --json shape is the page envelope { "object", "items", "cursor" }; each item is a compact, agent-actionable post index carrying its activity_urn_id:
{
"object": "feed_post_list",
"items": [
{
"object": "feed_post",
"activity_urn_id": "7290000000000000000",
"author": {
"name": "Jane Smith",
"type": "member",
"headline": null,
"member_id": null,
"numeric_id": null,
"company_id": null,
"vanity": null,
"profile_url": null,
"posted_ago": null
},
"text": null,
"post_url": "https://www.linkedin.com/feed/update/urn:li:activity:7290000000000000000/",
"kind": "ugcPost",
"is_promoted": false,
"is_reshare": false,
"reshared_from": null,
"engagement": { "likes": 0, "comments": 0, "shares": 0 }
}
],
"cursor": "eyJ..."
}There is no author_name field: the author is a nested author object. On
sort=recent only author.name resolves; every other author field is null, and
engagement counts are all 0. Both are properties of the index, not of the post.
sort=relevant populates text, engagement, is_promoted, is_reshare, and
reshared_from, but leaves post_url null.
Pagination
The feed is an unbounded, reordering stream with no total count, so walk it with the returned cursor (pass it back with --cursor <token>) until cursor is null. When a --cursor is supplied its carrier sets the sort, and --sort is ignored. Use --all to stream every page as NDJSON (bounded by --max-pages, default 100).
Examples
Read the most recent posts
curviate feed home --account acc_YOUR_ACCOUNT_IDRead the ranked "top" feed
curviate feed home --sort relevant --account acc_YOUR_ACCOUNT_IDRead the feed, then hydrate one post's full body
# 1. Read the index (recent sort, text is null)
curviate feed home --limit 10 --account acc_YOUR_ACCOUNT_ID
# 2. Hydrate the full body of a post you care about
curviate post get 7290000000000000000 --account acc_YOUR_ACCOUNT_IDStream the first few pages
curviate feed home --all --max-pages 3 --account acc_YOUR_ACCOUNT_IDErrors you may hit
| Code | Exit | Cause | Fix |
|---|---|---|---|
ACCOUNT_NOT_FOUND | 4 | --account names an id this API key does not own. | Run curviate account list. |
RATE_LIMIT_ACCOUNT | 6 | --sort relevant has a throttled budget and you exceeded it. | Back off, or use --sort recent. |
UNAUTHORIZED | 3 | Missing or invalid API key. | Set CURVIATE_API_KEY, or run curviate login. |
Full envelope shapes are in the error reference.
Next steps
- Post: hydrate a post body, react, or comment using
activity_urn_id. - Comment: read and write comments on a post.
- Notifications: the account's own activity centre.
- Errors: the full error-code list and what to retry.