Public Twitter profiles, timelines, social graph, search, posts, and conversations through normalized Openhandle contracts.
Twitter is available with canonical profile identifiers, timelines, followers, following, search, post engagement, lists, and conversations. It uses the same envelopes, freshness, pagination, errors, Test data, and billing contracts as the other platforms.
Endpoint
| Operation | Endpoint |
|---|---|
| Get a profile | GET /v1/twitter/profiles/{identifier} |
| List user posts | GET /v1/twitter/profiles/{identifier}/posts |
| List user replies | GET /v1/twitter/profiles/{identifier}/replies |
| List user media | GET /v1/twitter/profiles/{identifier}/media |
| List followers | GET /v1/twitter/profiles/{identifier}/followers |
| List following | GET /v1/twitter/profiles/{identifier}/following |
| Get a post | GET /v1/twitter/posts/{identifier} |
| List post replies | GET /v1/twitter/posts/{identifier}/comments |
| List nested replies | GET /v1/twitter/posts/{identifier}/comments/{comment_id}/replies |
| List post reposters | GET /v1/twitter/posts/{identifier}/reposters |
| Get a list | GET /v1/twitter/lists/{identifier} |
| List list members | GET /v1/twitter/lists/{identifier}/members |
| List list posts | GET /v1/twitter/lists/{identifier}/posts |
| Search latest or top posts | GET /v1/twitter/search/posts?q=...&sort=latest |
| Search users | GET /v1/twitter/search/users?q=... |
| Search images or videos | GET /v1/twitter/search/media?q=...&type=image |
| Search suggestions | GET /v1/twitter/search/suggestions?q=... |
Use @username in {identifier} for a username, or place the stable platform
ID there directly. Both work on every profile path, including /posts and
/replies. SDKs parse supported URLs locally. Raw HTTP clients can fetch
a typed resource in one call with
POST /v1/urls/fetch.
Test example
curl "https://api.openhandle.dev/v1/twitter/profiles/@copperfield_lab_x_test?freshness=24h" \
-H "Authorization: Bearer $OPENHANDLE_TEST_KEY"Expected: HTTP 200, Openhandle-Environment: test, and
Openhandle-Cost: 0.000. Private, deleted, sparse, zero, and restricted cases
are published in the Test Data catalog.
Live example
curl "https://api.openhandle.dev/v1/twitter/profiles/@OpenAI?freshness=7d" \
-H "Authorization: Bearer $OPENHANDLE_LIVE_KEY"Scope
- Profile lookup maps public identity, bio, avatar, verification, protection, follower, following, and post-count fields. Its platform extension preserves account creation time, location, banner, likes, media count, pinned post IDs, and country withholding when available.
- Posts map text, photos, videos, all usable media renditions, metrics,
hashtags, mentions, and stable conversation and reply relationships.
Quoted and reposted posts are embedded as typed
TwitterPostnodes when the upstream response includes them; their IDs remain available independently. - Twitter metrics extend the shared post metrics with quote and bookmark counts when available.
- Twitter conversations use the shared Openhandle comment and nested-reply endpoints, including opaque cursor pagination. Comment metrics preserve views, reposts, quotes, and bookmarks in addition to likes and replies, and thread-root IDs make conversation grouping explicit.
- User replies, media, followers, following, user search, post search, and media search are published with the same opaque cursor contract. Search suggestions return typed suggestion nodes with text, kind, score, highlighting, and a referenced user when the provider supplies one.
- The upstream integration stays isolated behind the Openhandle adapter contract, so provider changes do not reach your code.
- Bookmarks and private list data are not exposed.
- Write actions, direct messages, and customer account login are not part of the public-data API.