GET /v1/statements
Classified statements: tweets, press releases, newsletters, floor speeches (members of Congress, state legislators, governors). Tweets carry tweet_id and an empty text.
Returns up to limit items and a next_cursor; send it back as cursor, with the same other parameters, until it is null. A page that comes back full can be followed by an empty last page. Unknown parameters are refused (400).
Parameters
| Name | In | Type | Required | Default | Description |
|---|---|---|---|---|---|
| q | query | string, up to 512 characters | no | Words; "a phrase", -not, a | b, prefix* | |
| sort | query | stringOne of: relevance, date_desc, date_asc | no | Order. Default: relevance with q, otherwise date_desc. | |
| limit | query | integer, 1–100 | no | 25 | Items per page. |
| cursor | query | string | no | next_cursor from the previous page | |
| party | query | array of stringOne of: D, R, I, O | no | One or more values, comma-separated or repeated. | |
| state | query | array of string | no | Two-letter state codes, e.g. PA. One or more values, comma-separated or repeated. | |
| chamber | query | array of stringOne of: house, senate, lower, upper, legislature, governor | no | One or more values, comma-separated or repeated. | |
| level | query | array of stringOne of: federal, state, governor | no | One or more values, comma-separated or repeated. | |
| source | query | array of stringOne of: tweets, tweets_state, tweets_governors, statements, statements_governors, newsletters, floor, state_floor | no | One or more values, comma-separated or repeated. | |
| category | query | array of stringOne of: attack_personal, attack_policy, policy, bipartisanship, creditclaiming | no | Kinds of statement. One or more values, comma-separated or repeated. | |
| policy_area | query | array of string | no | Policy areas, written as the data write them. One or more values; repeat the parameter (values may contain commas). | |
| extreme | query | stringOne of: yes, no | no | yes: only statements with an extreme label; no: only those without. yes or no (true/false and 1/0 also work). | |
| date_from | query | string (date) | no | From this date (YYYY-MM-DD). | |
| date_to | query | string (date) | no | Up to this date (YYYY-MM-DD). | |
| person | query | array of string | no | Official ids: what they said. One or more values, comma-separated or repeated. | |
| current | query | stringOne of: yes, no | no | yes or no (true/false and 1/0 also work). | |
| year | query | string | no | Calendar year(s), e.g. 2025. |
Example request
curl -H "Authorization: Bearer $PULSE_KEY" \
"https://api.americaspoliticalpulse.com/v1/statements"Response 200OK
| Field | Type | Description |
|---|---|---|
| data | array of Statement | This page. |
| data[]. | string | Statement id: <source>:<source id>. |
| data[]. | stringOne of: tweets, tweets_state, tweets_governors, statements, statements_governors, newsletters, floor, state_floor | Where it comes from. tweets, tweets_state and tweets_governors are posts on X. |
| data[]. | string (date) | Date. |
| data[]. | string | The whole text. Empty for posts on X: use tweet_id. |
| data[]. | string or null | The original. |
| data[]. | array of stringOne of: attack_personal, attack_policy, policy, bipartisanship, creditclaiming | Kinds of statement the classifier found; a statement can have several or none. |
| data[]. | array of string | Policy areas it discusses (of 25). |
| data[]. | object or null | Set when it uses an extreme label: the label and its target. |
| data[]. | string | The label(s) used. |
| data[]. | string or null | Who or what it describes. |
| data[]. | object or null | Set when it is a personal attack: the trait attacked and the target. |
| data[]. | string or null | The trait(s) attacked. |
| data[]. | string or null | The person attacked. |
| data[]. | Official | Who said it. |
| data[]. | string or null | Press release or newsletter subject; null for posts and floor speeches. |
| data[]. | boolean | Always false here: the API returns whole texts. |
| data[]. | string or null | The post's id on X (posts on X only). |
| next_cursor | string or null | Send it back as cursor for the next page; null on the last page. |
| total | integer or null | Number of matches. |
| meta | Meta | Licence, citation and sources, on every response. |
HeadersX-RateLimit-Limit-Minute Your limit this minute. · X-RateLimit-Remaining-Minute Requests left this minute. · X-RateLimit-Limit-Day Your limit this day. · X-RateLimit-Remaining-Day Requests left this day.
Errors
Each comes as Error: {"error": "…"}.
| Status | When |
|---|---|
| 400 | A parameter is wrong (the message says which), or the key was sent in the URL |
| 401 | No key, or a key that is not valid (revoked or mistyped) |
| 403 | The account is suspended, or the API is not open to it yet |
| 429 | Over the per-minute or per-day limit (with Retry-After) |
| 503 | Not available right now (being built, or busy); try again later |

