Source Items
This endpoint allows you to retrieve collected source items for football signals.
The current fresh signals ingestion pipeline stores X posts only, so source and publisher are currently x.
Filtering: This endpoint uses PostgREST filter syntax such as
eq.,gte.,lte., andorder=published_at.desc.
Pagination: Use
offsetandlimitto page through source items.
Update Period: The endpoint is refreshed whenever the football signals sync ingests new X posts.
Recommended Calls: Query it by match_id or league_id during pre-match monitoring windows.
Use Cases
Get the latest source items for a specific match_idhttps://signals.sportmicro.com/football_source_items?match_id=eq.{match_id}&source=eq.x&order=published_at.desc
Get source items from a specific league_idhttps://signals.sportmicro.com/football_source_items?league_id=eq.{league_id}&limit=20
Query Parameters
- match_id string
The string match id from the sport-specific matches table.
Example: eq.100001 - league_id string
The league id attached to the source item.
Example: eq.1818 - source string
The upstream source. The current fresh pipeline stores
xonly.Example: eq.x - external_id string
The upstream X post id.
Example: eq.1919012345678901234 - published_at string
A PostgREST timestamp filter, for example
gte.{timestamp}.Example: gte.2026-05-08T16:10:00+00:00 - dedupe_hash string
The dedupe hash used to avoid duplicate source items.
Example: eq.fd6d1d602b2090cf7bc62327f9041493 - order string
Sorting instruction such as
published_at.desc.Example: published_at.desc - offset string
Pagination offset.
Example: 0 - limit string
Pagination limit.
Example: 20
- 200
- application/json
- Schema
- Example (from schema)
Schema array
- id uuid
The UUID of the source item.
- match_id text
The string match id from the sport-specific matches table.
- league_id bigint
The league id attached to the source item.
- source text
The upstream content source. The current fresh pipeline stores
xonly. - external_id text
The upstream X post id.
- url text
The canonical URL of the source item.
- title text
A trimmed title derived from the source content.
- content_snippet text
The collected source text snippet.
- author_name text
The display name of the source author.
- author_handle text
The handle of the source author.
- publisher text
The publisher label stored by the pipeline. The current fresh pipeline stores
xonly. - published_at timestamp with time zone
The upstream publish timestamp.
- collected_at timestamp with time zone
The time when Sportmicro collected the source item.
- language text
The detected language. The current fresh X pipeline stores
null. - engagement jsonb
Engagement metrics from the upstream X payload.
- teams jsonb
Matched competitors with
id,name,side, andmatched. - players jsonb
Player enrichment payload. The current fresh pipeline returns an empty array.
- raw_payload jsonb
The sanitized raw upstream X payload.
- dedupe_hash text
The hash used to deduplicate repeated source items.
- created_at timestamp with time zone
The row creation timestamp.
- updated_at timestamp with time zone
The row update timestamp.
[
{
"id": "75820d65-b944-9270-ddac-3f0e3d392b70",
"match_id": "100001",
"league_id": 1818,
"source": "x",
"external_id": "1919012345678901234",
"url": "https://x.com/Arsenal/status/1919012345678901234",
"title": "Arsenal team news: Bukayo Saka ruled out for tonight's match against Chelsea.",
"content_snippet": "Arsenal team news: Bukayo Saka ruled out for tonight's match against Chelsea.",
"author_name": "Arsenal",
"author_handle": "Arsenal",
"publisher": "x",
"published_at": "2026-05-08T16:10:00+00:00",
"collected_at": "2026-05-08T16:10:32+00:00",
"language": null,
"engagement": {
"view_count": 24882,
"user_followers_count": 22100000,
"user_favourites_count": 1632,
"user_following_count": 97,
"is_quote_status": false
},
"teams": [
{
"id": "42",
"name": "Arsenal",
"side": "home",
"matched": true
},
{
"id": "43",
"name": "Chelsea",
"side": "away",
"matched": true
}
],
"players": [],
"raw_payload": {
"id": "1919012345678901234",
"text": "Arsenal team news: Bukayo Saka ruled out for tonight's match against Chelsea.",
"created_at": "2026-05-08T16:10:00+00:00",
"url": "https://x.com/Arsenal/status/1919012345678901234",
"user_name": "Arsenal",
"user_screen_name": "Arsenal",
"view_count": 24882,
"user_followers_count": 22100000,
"user_favourites_count": 1632,
"user_following_count": 97,
"is_quote_status": false
},
"dedupe_hash": "fd6d1d602b2090cf7bc62327f9041493",
"created_at": "2026-05-08T16:10:32+00:00",
"updated_at": "2026-05-08T16:10:32+00:00"
}
]
Common filters
match_id=eq.{match_id}league_id=eq.{league_id}source=eq.xpublished_at=gte.{timestamp}published_at=lte.{timestamp}order=published_at.desc
Notes
- The current fresh extractor stores X content only, so
sourceandpublisherare bothx. raw_payloadstores the sanitized upstream X payload for the source item.teamscontains matched competitors withid,name,side, andmatched.playersis currently an empty JSON array in the fresh pipeline output.