Don't invest unless you're prepared to lose all the money you invest. This is a high-risk investment and you should not expect to be protected if something goes wrong. Take 2 mins to learn more.

DecryptrDevelopers
People and posts

Search public posts

Person-level data (on since 23 Oct 2026): only public accounts that have not opted out (API visibility), never private, banned or suspended accounts, and only content created on or after Decryptr's content date. Authors carry a pseudonymous id (trd_). When content is deleted, hidden or its author leaves, /v1/tombstones lists it: delete your copy within 24 hours. Full-text search of public posts and replies (English, with quoted phrases, OR and -word as in a web search), best match first.

Cost: 5 calls per request plus 1 call per result. The request first reserves 5 + limit x 1 calls (and is refused with 429 if that many are not available), then pays for what came back; no results costs 5.

Needs scope social:read and the pro plan or above.

How calls are counted

Authorization

headerAuthorizationBearer <dcr_live_<8 hex>_<43 base64url> or dcr_test_...>

Your API key as a Bearer token: Authorization: Bearer dcr_live_....

Query Parameters

q*string

Search text, 2 to 200 characters.

Length2 <= length <= 200
since?string

Only items at or after this time (ISO 8601 with offset). Must be inside your plan's history (Developer 7 days, Starter 30, Pro 365, Business all). Defaults to the start of your history.

Formatdate-time
until?string

Only items at or before this time (ISO 8601 with offset). Defaults to now; on Developer it is capped 60 minutes before now.

Formatdate-time
limit?integer

Items to return, 1 to 100. Your plan allows max_page calls per request (Developer 10, Starter 25, Pro 50, Business 100), so at most max_page divided by this endpoint's calls per item. Default 20, or that maximum if lower. The request reserves limit x calls per item before it runs: ask only for what you need.

Range1 <= value <= 100

Response Body

OK.

application/json
  1. response
data*array<>
as_of*string

When the response was made.

Formatdate-time
disclaimer*string

Plain-language notice. Information only, not financial advice.

Example Request
curl -X GET 'https://data.decryptr.ai/v1/search/posts?q=sample&since=2026-10-20T00%3A00%3A00Z&until=2026-10-23T12%3A00%3A00Z&limit=10'
Example Response
{  "data": [    {      "rank": 1,      "id": "00000000-0000-4000-8005-0000000000c8",      "author": {        "id": "trd_000000000000000000000001",        "handle": "sample_user_1"      },      "text": "Sample post 200 about $BTC.",      "asset": "BTC",      "community": "sample-community",      "created_at": "2026-10-23T12:24:00.000Z",      "edited_at": null,      "counts": {        "likes": 0,        "replies": 0,        "reposts": 0,        "views": 100      },      "quote_of": null,      "reply_to": null,      "thread_root": null,      "kind": "poll",      "sensitive": false,      "has_media": true    },    {      "rank": 2,      "id": "00000000-0000-4000-8005-0000000000c7",      "author": {        "id": "trd_000000000000000000000002",        "handle": "sample_user_2"      },      "text": "Sample post 199 about $ETH.",      "asset": "ETH",      "community": null,      "created_at": "2026-10-23T12:17:00.000Z",      "edited_at": null,      "counts": {        "likes": 7,        "replies": 1,        "reposts": 1,        "views": 101      },      "quote_of": null,      "reply_to": null,      "thread_root": null,      "kind": null,      "sensitive": false,      "has_media": false    },    {      "rank": 3,      "id": "00000000-0000-4000-8005-0000000000c6",      "author": {        "id": "trd_000000000000000000000003",        "handle": "sample_user_3"      },      "text": "Sample post 198 about $SOL.",      "asset": "SOL",      "community": null,      "created_at": "2026-10-23T12:10:00.000Z",      "edited_at": null,      "counts": {        "likes": 14,        "replies": 2,        "reposts": 2,        "views": 102      },      "quote_of": null,      "reply_to": null,      "thread_root": null,      "kind": null,      "sensitive": false,      "has_media": false    }  ],  "as_of": "2026-10-23T12:24:30.000Z",  "disclaimer": "Public content of Decryptr users who have not opted out. Apply every /v1/tombstones entry within 24 hours. Do not resell it, republish it in bulk or use it to train AI models."}

Trending public posts GET

Person-level data (on since 23 Oct 2026): only public accounts that have not opted out (API visibility), never private, banned or suspended accounts, and only content created on or after Decryptr's content date. Authors carry a pseudonymous id (trd_). When content is deleted, hidden or its author leaves, /v1/tombstones lists it: delete your copy within 24 hours. Public posts of the last 24 hours or 7 days ranked by engagement (likes, plus replies and reposts counted twice). Cost: 1 call per item returned, at least one item's worth. The request first reserves limit x 1 calls (and is refused with 429 if that many are not available), then pays only for what came back. Needs scope `social:read` and the pro plan or above.

Live public post stream (SSE) GET

Person-level data (on since 23 Oct 2026): only public accounts that have not opted out (API visibility), never private, banned or suspended accounts, and only content created on or after Decryptr's content date. Authors carry a pseudonymous id (trd_). When content is deleted, hidden or its author leaves, /v1/tombstones lists it: delete your copy within 24 hours. Server-sent events of new public posts: id (`<created_at ms>.<post id>`), event: post, data (a Post as JSON). A new connection starts from now; send Last-Event-ID to resume where you left off. Closes after about 2 minutes with an end event; reconnect and nothing is missed. Business: 10 connections, shared with the signal stream. Cost: connecting is free; 1 call per event delivered, taken before it is sent. Needs scope `stream:read` and the business plan or above.