Skip to documentation
Weavers Docs

Pages and endpoints

Tab to navigate · Enter to openEsc to close

GET /api/articles/:id

Public access · HTTP API reference

All endpoints · Authentication and retries · Download OpenAPI

Request

ParameterLocationType and requirement
idpathstring · required

No request body.

Example

Examples use fictional data. Replace identifiers with resources you can access. For account requests, cookies.txt must contain your own session; set CSRF_TOKEN to the matching CSRF cookie value where required.

cURL (POSIX shell)
curl --include \
  --request GET \
  'https://api.weavers.app/api/articles/1'

Responses

200 · Successful response.

application/json

200 example · synthetic data
{
  "article": {
    "id": "1",
    "symbol": "AAPL",
    "strategy": null,
    "title": "Example research",
    "summary": "example",
    "url": "example",
    "sourceName": "Example research",
    "publishedAt": "2025-01-01T00:00:00.000Z",
    "readingTime": "example",
    "coverImage": "example",
    "tags": [],
    "reactions": 1,
    "kind": "signal",
    "outboxId": 1,
    "channelId": 1,
    "timeframe": "example",
    "windowSize": 1,
    "direction": null,
    "bodyKey": null,
    "bodyFormat": "example",
    "body": "example",
    "updatedAt": "2025-01-01T00:00:00.000Z",
    "accessTier": "free",
    "isUnlocked": false,
    "unlockCost": null,
    "lockedReason": null
  }
}
View response model
article required · object
View article model
id required · string
symbol required · string
strategy required · null | object
View strategy model
Variant 1: null

null

Variant 2: object
strategyRegistryId required · null | number
View strategyRegistryId model
Variant 1: null

null

Variant 2: number

number

strategyKey required · string
strategyVariant required · string
strategyId required · null | string
View strategyId model
Variant 1: null

null

Variant 2: string

string

alias required · null | string
View alias model
Variant 1: null

null

Variant 2: string

string

displayName required · null | string
View displayName model
Variant 1: null

null

Variant 2: string

string

Additional fields: JSON values.

title required · string
summary required · string
url required · string
sourceName required · string
publishedAt required · string
readingTime required · string
coverImage required · string
tags required · array of string
View tags model

Array items:

string

reactions required · number
kind required · "signal" | "report"
outboxId required · number
channelId required · number
timeframe required · string
windowSize required · number
direction required · null | string
View direction model
Variant 1: null

null

Variant 2: string

string

bodyKey required · null | string
View bodyKey model
Variant 1: null

null

Variant 2: string

string

bodyFormat required · string
body required · string
updatedAt required · string
accessTier required · "free" | "premium"
isUnlocked required · boolean
unlockCost required · null | number
View unlockCost model
Variant 1: null

null

Variant 2: number

number

lockedReason required · null | "auth_required" | "entitlement_required"
View lockedReason model
Variant 1: null

null

Variant 2: "auth_required"

"auth_required"

Variant 3: "entitlement_required"

"entitlement_required"

Additional fields: JSON values.

Additional fields: JSON values.

304 · Cached representation is still current; no body.

No JSON response body. Check the status and headers.

400 · Invalid request.

application/json

400 example · synthetic data
{
  "error": "example"
}
View response model
error required · string

Additional fields: JSON values.

401 · Authentication is missing or invalid.

application/json

401 example · synthetic data
{
  "isUnlocked": false,
  "unlockCost": null,
  "lockedReason": null,
  "error": "example",
  "accessTier": "premium"
}
View response model
Variant 1: object
isUnlocked required · boolean
unlockCost required · null | number
View unlockCost model
Variant 1: null

null

Variant 2: number

number

lockedReason required · null | "auth_required" | "entitlement_required"
View lockedReason model
Variant 1: null

null

Variant 2: "auth_required"

"auth_required"

Variant 3: "entitlement_required"

"entitlement_required"

error required · string
accessTier required · "premium"

Additional fields: JSON values.

Variant 2: object
error required · string

Additional fields: JSON values.

402 · Credits or entitlement required.

application/json

402 example · synthetic data
{
  "isUnlocked": false,
  "unlockCost": null,
  "lockedReason": null,
  "error": "example",
  "entitlementKey": "premium_article_card",
  "price": 15,
  "accessTier": "premium"
}
View response model
Variant 1: object
isUnlocked required · boolean
unlockCost required · null | number
View unlockCost model
Variant 1: null

null

Variant 2: number

number

lockedReason required · null | "auth_required" | "entitlement_required"
View lockedReason model
Variant 1: null

null

Variant 2: "auth_required"

"auth_required"

Variant 3: "entitlement_required"

"entitlement_required"

error required · string
entitlementKey required · "premium_article_card"
price required · 15
accessTier required · "premium"

Additional fields: JSON values.

Variant 2: object
error required · string
entitlementKey required · "premium_article_card"
price required · 15

Additional fields: JSON values.

404 · Resource or enabled capability not found.

application/json

404 example · synthetic data
{
  "error": "example"
}
View response model
error required · string

Additional fields: JSON values.

429 · Rate limit reached; honor Retry-After when supplied.

application/json

429 example · synthetic data
{}
View response model

Error envelopes can include resource-specific details. Check the status before reading these fields.

error optional · string
code optional · string
message optional · string

Additional fields: JSON values.

500 · Server failure.

application/json

500 example · synthetic data
{
  "error": "example"
}
View response model
Variant 1: object
error required · string

Additional fields: JSON values.