Skip to content
Ordinal
Esc
↑↓navigate↵open⌘Jpreview

X post analytics

Retrieve post analytics for an X profile within a date range. When a post was published from Ordinal, the response includes an ordinalPost object with the linked post’s id, title, labels, and campaign.

GET/analytics/x/{profileId}/posts
Authorization
AuthorizationBearer token · headerrequired

API key authentication. Generate an API key from your workspace settings.

Path parameters
profileIdstring<uuid>required

X profile ID (UUID)

Query parameters
startDatestring<date>

Start date for analytics (defaults to 30 days ago)

endDatestring<date>

End date for analytics (defaults to today)

Responses
200

X post analytics

Array of TwitterPostAnalytics
idstring<uuid>required
urlstring<uri>required

Twitter post URL

textstring | null

Tweet text content

publishedAtstring<date-time> | null
likeCountinteger | null
replyCountinteger | null
retweetCountinteger | null
quoteCountinteger | null
bookmarkCountinteger | null
impressionCountinteger | null
engagementnumber | null

Engagement rate (total engagements / impressions), typically between 0 and 1

emvnumber | null

Earned Media Value calculated as (impressionCount / 1000) * CPM

ordinalPostOrdinalPostReference | null

Linked Ordinal post when this external post was published from Ordinal, null otherwise

Show properties
One of:
OrdinalPostReference
idstring<uuid>required

Ordinal post ID

titlestringrequired

Ordinal post title

labelsobject[]required
Show properties
Array of object
namestringrequired

Label name

labelIdstring<uuid>required

Label ID

campaignobject | null
Show properties
idstring<uuid>
namestring
null
null
401

Unauthorized - Missing or invalid API key

codestring
messagestring
403

Forbidden - Insufficient permissions

codestring
messagestring
404

Not Found - Resource does not exist

codestring
messagestring
Try it
Server
Authorization
Parameters
Request
curl -X GET 'https://app.tryordinal.com/api/v1/analytics/x/497f6eca-6276-4993-bfeb-53cbbbba6f08/posts' \
  -H 'Authorization: Bearer YOUR_TOKEN'
Response
[
  {
    "id": "550e8400-e29b-41d4-a716-446655440700",
    "url": "https://x.com/acme/status/1234567890123456789",
    "text": "Excited to share our latest product update! 🚀\n\nAfter months of development, we're launching three new features that will transform how you work.\n\nThread 🧵👇",
    "publishedAt": "2024-12-10T14:00:00.000Z",
    "likeCount": 342,
    "replyCount": 28,
    "retweetCount": 89,
    "quoteCount": 15,
    "bookmarkCount": 67,
    "impressionCount": 45200,
    "engagement": 0.01,
    "emv": 452,
    "ordinalPost": {
      "id": "11111111-1111-4111-a111-111111111111",
      "title": "My Ordinal Post",
      "labels": [
        {
          "name": "Marketing",
          "labelId": "22222222-2222-4222-a222-222222222222"
        }
      ],
      "campaign": {
        "id": "33333333-3333-4333-a333-333333333333",
        "name": "Q1 Campaign"
      }
    }
  },
  {
    "id": "550e8400-e29b-41d4-a716-446655440701",
    "url": "https://x.com/acme/status/1234567890123456790",
    "text": "5 lessons learned from scaling our startup from 0 to 10k users 📈\n\nA thread:",
    "publishedAt": "2024-12-05T09:30:00.000Z",
    "likeCount": 1256,
    "replyCount": 94,
    "retweetCount": 312,
    "quoteCount": 48,
    "bookmarkCount": 234,
    "impressionCount": 89300,
    "engagement": 0.019,
    "emv": 893,
    "ordinalPost": null
  }
]