{"openapi":"3.1.0","info":{"title":"America's Political Pulse data API","version":"1.0.0","description":"Data from America's Political Pulse (Polarization Research Lab). Licence: CC BY 4.0. Caption text from broadcasters and video platforms in state_floor, and campaign-website text in websites, remain under their sources' terms, not CC BY 4.0. Cite as: Westwood, S. J., & Lelkes, Y. (2024). America's Political Pulse [Data set]. https://americaspoliticalpulse.com/data Sources: https://americaspoliticalpulse.com/data#sources","license":{"name":"CC BY 4.0","url":"https://creativecommons.org/licenses/by/4.0/"}},"externalDocs":{"description":"The guide","url":"https://americaspoliticalpulse.com/api"},"servers":[{"url":"https://api.americaspoliticalpulse.com"}],"security":[{"bearer":[]},{"apiKey":[]}],"tags":[{"name":"Statements","description":"What politicians say: posts on X, press releases, newsletters and floor speeches, each with the labels the classifier gave it."},{"name":"Officials","description":"Members of Congress, state legislators and governors, with full profiles and roll-call records."},{"name":"Bills","description":"Federal and state bills, and the same proposal in other states."},{"name":"Votes","description":"Roll-call votes with party splits."},{"name":"Surveys","description":"Aggregates from the America's Political Pulse survey. Never individual responses."},{"name":"Political violence","description":"Political violence events in the United States."},{"name":"Bulk files","description":"Whole datasets, zipped CSV and Parquet."},{"name":"Account","description":"Your own limits and use."}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer"},"apiKey":{"type":"apiKey","in":"header","name":"X-API-Key"}},"schemas":{"Meta":{"type":"object","properties":{"licence":{"type":"string","description":"The data licence (CC BY 4.0)."},"licence_url":{"type":"string","description":"The licence text."},"citation":{"type":"string","description":"How to cite the data."},"sources":{"type":"string","description":"The outside sources behind the data, with their terms and the credit each asks for."},"docs":{"type":"string","description":"This API's guide."},"as_of":{"type":"string","description":"When the data were built, where the resource records it."}},"description":"Licence, citation and sources, on every response."},"Error":{"type":"object","properties":{"error":{"type":"string","description":"What went wrong, in plain words."}},"description":"The body of every error response."},"Official":{"type":"object","properties":{"id":{"type":"string","description":"Official id: the bioguide id (Congress), the Open States id without ocd-person/ (state legislators) or gov-<slug> (governors). Use it with /v1/officials/{id}."},"level":{"type":"string","description":"Level of government.","enum":["federal","state","governor"]},"name":{"type":"string","description":"Name."},"party":{"type":"string","description":"Party; O is any other, or none.","enum":["D","R","I","O"]},"state":{"type":"string","description":"State, as a two-letter code."},"chamber":{"type":"string","description":"Chamber or office.","enum":["house","senate","lower","upper","legislature","governor"]},"district":{"type":["string","null"],"description":"District, where the seat has one."},"photo":{"type":["string","null"],"description":"Photo: a site-relative or full URL."},"csip":{"type":["number","null"],"description":"Ideology (CSIP) from the latest validated run. 0 is the centre of the scale; negative is more liberal, positive more conservative."},"statements":{"type":"integer","description":"Statements in the current window."},"extremeRate":{"type":["number","null"],"description":"Share of statements with an extreme label, current window (0 to 1)."}},"description":"An official, as lists show them."},"Statement":{"type":"object","properties":{"id":{"type":"string","description":"Statement id: <source>:<source id>."},"source":{"type":"string","description":"Where it comes from. tweets, tweets_state and tweets_governors are posts on X.","enum":["tweets","tweets_state","tweets_governors","statements","statements_governors","newsletters","floor","state_floor"]},"date":{"type":"string","description":"Date.","format":"date"},"text":{"type":"string","description":"The whole text. Empty for posts on X: use tweet_id."},"url":{"type":["string","null"],"description":"The original."},"categories":{"type":"array","items":{"type":"string","enum":["attack_personal","attack_policy","policy","bipartisanship","creditclaiming"]},"description":"Kinds of statement the classifier found; a statement can have several or none."},"policy_areas":{"type":"array","items":{"type":"string"},"description":"Policy areas it discusses (of 25)."},"extreme":{"type":["object","null"],"description":"Set when it uses an extreme label: the label and its target.","properties":{"label":{"type":"string","description":"The label(s) used."},"target":{"type":["string","null"],"description":"Who or what it describes."}}},"attack":{"type":["object","null"],"description":"Set when it is a personal attack: the trait attacked and the target.","properties":{"type":{"type":["string","null"],"description":"The trait(s) attacked."},"target":{"type":["string","null"],"description":"The person attacked."}}},"person":{"$ref":"#/components/schemas/Official","description":"Who said it."},"title":{"type":["string","null"],"description":"Press release or newsletter subject; null for posts and floor speeches."},"truncated":{"type":"boolean","description":"Always false here: the API returns whole texts."},"tweet_id":{"type":["string","null"],"description":"The post's id on X (posts on X only)."}},"description":"A classified statement."},"Bill":{"type":"object","properties":{"bill_id":{"type":"string","description":"Bill id."},"jurisdiction":{"type":"string","description":"US for Congress, or a state's two-letter code."},"session":{"type":"string","description":"Session."},"number":{"type":"string","description":"Bill number."},"title":{"type":"string","description":"Title."},"introduced":{"type":["string","null"],"description":"Date introduced.","format":"date"},"status":{"type":"string","description":"The furthest stage reached.","enum":["introduced","committee","passed_one","passed_both","law"]},"latest_action":{"type":["string","null"],"description":"The latest action."},"latest_action_date":{"type":["string","null"],"description":"Its date.","format":"date"},"policy_area":{"type":["string","null"],"description":"Policy area (of 25)."},"policy_area_source":{"type":["string","null"],"description":"crs when the Congressional Research Service assigned the area, llm when a language model did.","enum":["crs","llm",null]},"policy_area_crs":{"type":["string","null"],"description":"Federal only: the CRS policy area (of 33) before it is mapped to the 25."},"url":{"type":["string","null"],"description":"The bill at its source."},"sponsors":{"type":"array","items":{"$ref":"#/components/schemas/Official"},"description":"Sponsors."},"n_cosponsors":{"type":"integer","description":"Number of cosponsors."}},"description":"A bill."},"Vote":{"type":"object","properties":{"vote_id":{"type":"string","description":"Roll-call id; federal ids are us-<congress>-<h|s>-<roll>."},"date":{"type":"string","description":"Date of the vote.","format":"date"},"chamber":{"type":"string","description":"Chamber.","enum":["house","senate","lower","upper","legislature","governor"]},"bill":{"type":["string","null"],"description":"The bill voted on, if any."},"bill_title":{"type":["string","null"],"description":"Its title."},"question":{"type":"string","description":"The question put to the vote."},"result":{"type":"string","description":"The result, as recorded."},"margin":{"type":["number","null"],"description":"Margin of the result (smaller is closer)."},"party_split":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"yea":{"type":"integer","description":"Yeas."},"nay":{"type":"integer","description":"Nays."}}},"description":"Yeas and nays by party (D, R, I, O)."},"key_reasons":{"type":"array","items":{"type":"string","enum":["law","close","crossover","salient"]},"description":"Why it is a key vote: law (became law), close (decided by under 10%), crossover (at least 10% of a party voted against its majority), salient (one of the 25 bills officials mention most)."},"url":{"type":["string","null"],"description":"The roll call at its source."},"jurisdiction":{"type":"string","description":"US, or a state's two-letter code."},"yea":{"type":["integer","null"],"description":"Yeas."},"nay":{"type":["integer","null"],"description":"Nays."},"key":{"type":"boolean","description":"Whether it is a key vote."}},"description":"A roll-call vote."},"OfficialVote":{"type":"object","properties":{"vote_id":{"type":"string","description":"Roll-call id; federal ids are us-<congress>-<h|s>-<roll>."},"date":{"type":"string","description":"Date of the vote.","format":"date"},"chamber":{"type":"string","description":"Chamber.","enum":["house","senate","lower","upper","legislature","governor"]},"bill":{"type":["string","null"],"description":"The bill voted on, if any."},"bill_title":{"type":["string","null"],"description":"Its title."},"question":{"type":"string","description":"The question put to the vote."},"result":{"type":"string","description":"The result, as recorded."},"margin":{"type":["number","null"],"description":"Margin of the result (smaller is closer)."},"party_split":{"type":"object","properties":{},"additionalProperties":{"type":"object","properties":{"yea":{"type":"integer","description":"Yeas."},"nay":{"type":"integer","description":"Nays."}}},"description":"Yeas and nays by party (D, R, I, O)."},"key_reasons":{"type":"array","items":{"type":"string","enum":["law","close","crossover","salient"]},"description":"Why it is a key vote: law (became law), close (decided by under 10%), crossover (at least 10% of a party voted against its majority), salient (one of the 25 bills officials mention most)."},"url":{"type":["string","null"],"description":"The roll call at its source."},"position":{"type":"string","description":"How the official voted.","enum":["yea","nay","present","not_voting"]},"with_party":{"type":["boolean","null"],"description":"Whether the vote was with the majority of the official's party."}},"description":"A roll call, with how one official voted."},"SimilarBills":{"type":"object","properties":{"bill":{"type":"object","properties":{"bill_id":{"type":"string","description":"Bill id."},"jurisdiction":{"type":"string","description":"State, as a two-letter code."},"number":{"type":"string","description":"Bill number."},"year":{"type":["integer","null"],"description":"Year."},"title":{"type":"string","description":"Title."},"became_law":{"type":"boolean","description":"Whether it became law."}},"description":"The bill asked about."},"threshold":{"type":"number","description":"The similarity a bill needs to count as the same."},"similar":{"type":"array","items":{"type":"object","properties":{"bill_id":{"type":"string","description":"Bill id."},"jurisdiction":{"type":"string","description":"State, as a two-letter code."},"number":{"type":"string","description":"Bill number."},"year":{"type":["integer","null"],"description":"Year."},"title":{"type":"string","description":"Title."},"became_law":{"type":"boolean","description":"Whether it became law."},"similarity":{"type":"number","description":"Cosine similarity of the two texts."}}},"description":"The same proposal in other states."}}},"BulkFile":{"type":"object","properties":{"name":{"type":"string","description":"Name, for /v1/bulk/{name}."},"description":{"type":"string","description":"What the file holds."},"rows":{"type":"integer","description":"Rows."},"bytes":{"type":"integer","description":"Size of the zip."},"formats":{"type":"array","items":{"type":"string"},"description":"Formats in the zip."},"download":{"type":"string","description":"Where to download it."}},"description":"A bulk file (further fields come from the files' manifest)."},"Usage":{"type":"object","properties":{"limits":{"type":"object","properties":{"requests_per_minute":{"type":"integer","description":"Per minute."},"requests_per_day":{"type":"integer","description":"Per day (UTC)."},"downloads_per_day":{"type":"integer","description":"Bulk downloads per day (UTC)."}},"description":"Your account's limits."},"today":{"type":"object","properties":{"requests":{"type":"integer","description":"Requests today (UTC)."},"by_resource":{"type":"object","properties":{},"additionalProperties":{"type":"integer"},"description":"Requests today by resource (statements, officials, …)."}}},"days":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","description":"Day, as YYYYMMDD (UTC)."},"requests":{"type":"integer","description":"Requests that day."}}},"description":"The last 30 days with requests."}}}},"responses":{"BadRequest":{"description":"A parameter is wrong (the message says which), or the key was sent in the URL","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Unauthorized":{"description":"No key, or a key that is not valid (revoked or mistyped)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Forbidden":{"description":"The account is suspended, or the API is not open to it yet","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"TooManyRequests":{"description":"Over the per-minute or per-day limit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"$ref":"#/components/headers/Retry-After"}}},"Unavailable":{"description":"Not available right now (being built, or busy); try again later","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"headers":{"X-RateLimit-Limit-Minute":{"description":"Your limit this minute.","schema":{"type":"integer"}},"X-RateLimit-Remaining-Minute":{"description":"Requests left this minute.","schema":{"type":"integer"}},"X-RateLimit-Limit-Day":{"description":"Your limit this day.","schema":{"type":"integer"}},"X-RateLimit-Remaining-Day":{"description":"Requests left this day.","schema":{"type":"integer"}},"Retry-After":{"description":"Seconds until the limit resets.","schema":{"type":"integer"}}}},"paths":{"/v1/statements":{"get":{"tags":["Statements"],"operationId":"list_statements","summary":"Classified statements: tweets, press releases, newsletters, floor speeches (members of Congress, state legislators, governors). Tweets carry tweet_id and an empty text.","description":"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":"q","in":"query","schema":{"type":"string","maxLength":512},"description":"Words; \"a phrase\", -not, a | b, prefix*"},{"name":"sort","in":"query","schema":{"type":"string","enum":["relevance","date_desc","date_asc"]},"description":"Order. Default: relevance with q, otherwise date_desc."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":25},"description":"Items per page."},{"name":"cursor","in":"query","schema":{"type":"string"},"description":"next_cursor from the previous page"},{"name":"party","in":"query","schema":{"type":"array","items":{"type":"string","enum":["D","R","I","O"]}},"style":"form","explode":false,"description":"One or more values, comma-separated or repeated."},{"name":"state","in":"query","schema":{"type":"array","items":{"type":"string"}},"style":"form","explode":false,"description":"Two-letter state codes, e.g. PA. One or more values, comma-separated or repeated."},{"name":"chamber","in":"query","schema":{"type":"array","items":{"type":"string","enum":["house","senate","lower","upper","legislature","governor"]}},"style":"form","explode":false,"description":"One or more values, comma-separated or repeated."},{"name":"level","in":"query","schema":{"type":"array","items":{"type":"string","enum":["federal","state","governor"]}},"style":"form","explode":false,"description":"One or more values, comma-separated or repeated."},{"name":"source","in":"query","schema":{"type":"array","items":{"type":"string","enum":["tweets","tweets_state","tweets_governors","statements","statements_governors","newsletters","floor","state_floor"]}},"style":"form","explode":false,"description":"One or more values, comma-separated or repeated."},{"name":"category","in":"query","schema":{"type":"array","items":{"type":"string","enum":["attack_personal","attack_policy","policy","bipartisanship","creditclaiming"]}},"style":"form","explode":false,"description":"Kinds of statement. One or more values, comma-separated or repeated."},{"name":"policy_area","in":"query","schema":{"type":"array","items":{"type":"string"}},"style":"form","explode":true,"description":"Policy areas, written as the data write them. One or more values; repeat the parameter (values may contain commas)."},{"name":"extreme","in":"query","schema":{"type":"string","enum":["yes","no"]},"description":"yes: only statements with an extreme label; no: only those without. yes or no (true/false and 1/0 also work)."},{"name":"date_from","in":"query","schema":{"type":"string","format":"date"},"description":"From this date (YYYY-MM-DD)."},{"name":"date_to","in":"query","schema":{"type":"string","format":"date"},"description":"Up to this date (YYYY-MM-DD)."},{"name":"person","in":"query","schema":{"type":"array","items":{"type":"string"}},"style":"form","explode":false,"description":"Official ids: what they said. One or more values, comma-separated or repeated."},{"name":"current","in":"query","schema":{"type":"string","enum":["yes","no"]},"description":"yes or no (true/false and 1/0 also work)."},{"name":"year","in":"query","schema":{"type":"string"},"description":"Calendar year(s), e.g. 2025."}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit-Minute":{"$ref":"#/components/headers/X-RateLimit-Limit-Minute"},"X-RateLimit-Remaining-Minute":{"$ref":"#/components/headers/X-RateLimit-Remaining-Minute"},"X-RateLimit-Limit-Day":{"$ref":"#/components/headers/X-RateLimit-Limit-Day"},"X-RateLimit-Remaining-Day":{"$ref":"#/components/headers/X-RateLimit-Remaining-Day"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Statement"},"description":"This page."},"next_cursor":{"type":["string","null"],"description":"Send it back as cursor for the next page; null on the last page."},"total":{"type":["integer","null"],"description":"Number of matches."},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"503":{"$ref":"#/components/responses/Unavailable"}}}},"/v1/officials":{"get":{"tags":["Officials"],"operationId":"list_officials","summary":"Officials: members of Congress, state legislators, governors.","description":"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":"q","in":"query","schema":{"type":"string","maxLength":512},"description":"Words; \"a phrase\", -not, a | b, prefix*"},{"name":"sort","in":"query","schema":{"type":"string","enum":["relevance","name","csip_asc","csip_desc","statements_desc","extreme_desc"]},"description":"Order. Default: relevance with q, otherwise name."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":25},"description":"Items per page."},{"name":"cursor","in":"query","schema":{"type":"string"},"description":"next_cursor from the previous page"},{"name":"party","in":"query","schema":{"type":"array","items":{"type":"string","enum":["D","R","I","O"]}},"style":"form","explode":false,"description":"One or more values, comma-separated or repeated."},{"name":"state","in":"query","schema":{"type":"array","items":{"type":"string"}},"style":"form","explode":false,"description":"Two-letter state codes, e.g. PA. One or more values, comma-separated or repeated."},{"name":"chamber","in":"query","schema":{"type":"array","items":{"type":"string","enum":["house","senate","lower","upper","legislature","governor"]}},"style":"form","explode":false,"description":"One or more values, comma-separated or repeated."},{"name":"level","in":"query","schema":{"type":"array","items":{"type":"string","enum":["federal","state","governor"]}},"style":"form","explode":false,"description":"One or more values, comma-separated or repeated."},{"name":"csip_min","in":"query","schema":{"type":"number"},"description":"Ideology (CSIP) score. At least this number."},{"name":"csip_max","in":"query","schema":{"type":"number"},"description":"Ideology (CSIP) score. At most this number."}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit-Minute":{"$ref":"#/components/headers/X-RateLimit-Limit-Minute"},"X-RateLimit-Remaining-Minute":{"$ref":"#/components/headers/X-RateLimit-Remaining-Minute"},"X-RateLimit-Limit-Day":{"$ref":"#/components/headers/X-RateLimit-Limit-Day"},"X-RateLimit-Remaining-Day":{"$ref":"#/components/headers/X-RateLimit-Remaining-Day"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Official"},"description":"This page."},"next_cursor":{"type":["string","null"],"description":"Send it back as cursor for the next page; null on the last page."},"total":{"type":["integer","null"],"description":"Number of matches."},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"503":{"$ref":"#/components/responses/Unavailable"}}}},"/v1/bills":{"get":{"tags":["Bills"],"operationId":"list_bills","summary":"Federal and state bills with sponsors, stage and policy area.","description":"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":"q","in":"query","schema":{"type":"string","maxLength":512},"description":"Words; \"a phrase\", -not, a | b, prefix*"},{"name":"sort","in":"query","schema":{"type":"string","enum":["relevance","date_desc","date_asc","latest_desc"]},"description":"Order. Default: relevance with q, otherwise date_desc."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":25},"description":"Items per page."},{"name":"cursor","in":"query","schema":{"type":"string"},"description":"next_cursor from the previous page"},{"name":"jurisdiction","in":"query","schema":{"type":"array","items":{"type":"string"}},"style":"form","explode":false,"description":"US for Congress, or two-letter state codes. One or more values, comma-separated or repeated."},{"name":"session","in":"query","schema":{"type":"array","items":{"type":"string"}},"style":"form","explode":false,"description":"One or more values, comma-separated or repeated."},{"name":"policy_area","in":"query","schema":{"type":"array","items":{"type":"string"}},"style":"form","explode":true,"description":"Policy areas, written as the data write them. One or more values; repeat the parameter (values may contain commas)."},{"name":"status","in":"query","schema":{"type":"array","items":{"type":"string","enum":["introduced","committee","passed_one","passed_both","law"]}},"style":"form","explode":false,"description":"One or more values, comma-separated or repeated."},{"name":"sponsor","in":"query","schema":{"type":"array","items":{"type":"string"}},"style":"form","explode":false,"description":"Official id: bills they sponsored or cosponsored."},{"name":"date_from","in":"query","schema":{"type":"string","format":"date"},"description":"From this date (YYYY-MM-DD)."},{"name":"date_to","in":"query","schema":{"type":"string","format":"date"},"description":"Up to this date (YYYY-MM-DD)."}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit-Minute":{"$ref":"#/components/headers/X-RateLimit-Limit-Minute"},"X-RateLimit-Remaining-Minute":{"$ref":"#/components/headers/X-RateLimit-Remaining-Minute"},"X-RateLimit-Limit-Day":{"$ref":"#/components/headers/X-RateLimit-Limit-Day"},"X-RateLimit-Remaining-Day":{"$ref":"#/components/headers/X-RateLimit-Remaining-Day"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Bill"},"description":"This page."},"next_cursor":{"type":["string","null"],"description":"Send it back as cursor for the next page; null on the last page."},"total":{"type":["integer","null"],"description":"Number of matches."},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"503":{"$ref":"#/components/responses/Unavailable"}}}},"/v1/votes":{"get":{"tags":["Votes"],"operationId":"list_votes","summary":"Roll-call votes with party splits.","description":"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":"q","in":"query","schema":{"type":"string","maxLength":512},"description":"Words; \"a phrase\", -not, a | b, prefix*"},{"name":"sort","in":"query","schema":{"type":"string","enum":["relevance","date_desc","date_asc","margin_asc"]},"description":"Order. Default: relevance with q, otherwise date_desc."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":25},"description":"Items per page."},{"name":"cursor","in":"query","schema":{"type":"string"},"description":"next_cursor from the previous page"},{"name":"jurisdiction","in":"query","schema":{"type":"array","items":{"type":"string"}},"style":"form","explode":false,"description":"US for Congress, or two-letter state codes. One or more values, comma-separated or repeated."},{"name":"chamber","in":"query","schema":{"type":"array","items":{"type":"string","enum":["house","senate","lower","upper","legislature","governor"]}},"style":"form","explode":false,"description":"One or more values, comma-separated or repeated."},{"name":"date_from","in":"query","schema":{"type":"string","format":"date"},"description":"From this date (YYYY-MM-DD)."},{"name":"date_to","in":"query","schema":{"type":"string","format":"date"},"description":"Up to this date (YYYY-MM-DD)."},{"name":"key","in":"query","schema":{"type":"string","enum":["yes","no"]},"description":"yes: only key votes; no: only the others. yes or no (true/false and 1/0 also work)."},{"name":"bill","in":"query","schema":{"type":"array","items":{"type":"string"}},"style":"form","explode":false,"description":"One or more values, comma-separated or repeated."},{"name":"floor","in":"query","schema":{"type":"string","enum":["yes","no"]},"description":"yes or no (true/false and 1/0 also work)."},{"name":"result","in":"query","schema":{"type":"array","items":{"type":"string"}},"style":"form","explode":true,"description":"One or more values; repeat the parameter (values may contain commas)."},{"name":"year","in":"query","schema":{"type":"string"},"description":"Calendar year(s), e.g. 2025."}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit-Minute":{"$ref":"#/components/headers/X-RateLimit-Limit-Minute"},"X-RateLimit-Remaining-Minute":{"$ref":"#/components/headers/X-RateLimit-Remaining-Minute"},"X-RateLimit-Limit-Day":{"$ref":"#/components/headers/X-RateLimit-Limit-Day"},"X-RateLimit-Remaining-Day":{"$ref":"#/components/headers/X-RateLimit-Remaining-Day"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Vote"},"description":"This page."},"next_cursor":{"type":["string","null"],"description":"Send it back as cursor for the next page; null on the last page."},"total":{"type":["integer","null"],"description":"Number of matches."},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"503":{"$ref":"#/components/responses/Unavailable"}}}},"/v1/statements/{id}":{"get":{"tags":["Statements"],"operationId":"get_statement","summary":"One statement","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Statement id (the id field of a statement)."}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit-Minute":{"$ref":"#/components/headers/X-RateLimit-Limit-Minute"},"X-RateLimit-Remaining-Minute":{"$ref":"#/components/headers/X-RateLimit-Remaining-Minute"},"X-RateLimit-Limit-Day":{"$ref":"#/components/headers/X-RateLimit-Limit-Day"},"X-RateLimit-Remaining-Day":{"$ref":"#/components/headers/X-RateLimit-Remaining-Day"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Statement"},"next_cursor":{"type":["string","null"],"description":"Always null."},"total":{"type":["integer","null"],"description":"Always null."},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"503":{"$ref":"#/components/responses/Unavailable"}}}},"/v1/officials/{id}":{"get":{"tags":["Officials"],"operationId":"get_official","summary":"An official's full profile (rhetoric, policy, ideology, money, votes, legislation)","description":"Tweet text is removed everywhere in the profile, as in every response.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Official id (the id field of an official)."}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit-Minute":{"$ref":"#/components/headers/X-RateLimit-Limit-Minute"},"X-RateLimit-Remaining-Minute":{"$ref":"#/components/headers/X-RateLimit-Remaining-Minute"},"X-RateLimit-Limit-Day":{"$ref":"#/components/headers/X-RateLimit-Limit-Day"},"X-RateLimit-Remaining-Day":{"$ref":"#/components/headers/X-RateLimit-Remaining-Day"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{},"description":"The profile, as the site's profile page uses it."},"next_cursor":{"type":["string","null"],"description":"Always null."},"total":{"type":["integer","null"],"description":"Always null."},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"}}}},"/v1/officials/{id}/votes":{"get":{"tags":["Officials"],"operationId":"list_official_votes","summary":"An official's roll-call votes, newest first","description":"One page is one stored part of the record; follow next_cursor to the end. Records are written for term windows (current and term:<id>) only, so 12m and all find nothing (404).","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Official id."},{"name":"window","in":"query","schema":{"type":"string","default":"current"},"description":"current, 12m, all or term:<id>"},{"name":"cursor","in":"query","schema":{"type":"string"},"description":"next_cursor from the previous page"}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit-Minute":{"$ref":"#/components/headers/X-RateLimit-Limit-Minute"},"X-RateLimit-Remaining-Minute":{"$ref":"#/components/headers/X-RateLimit-Remaining-Minute"},"X-RateLimit-Limit-Day":{"$ref":"#/components/headers/X-RateLimit-Limit-Day"},"X-RateLimit-Remaining-Day":{"$ref":"#/components/headers/X-RateLimit-Remaining-Day"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/OfficialVote"},"description":"This page."},"next_cursor":{"type":["string","null"],"description":"Send it back as cursor for the next page; null on the last page."},"total":{"type":["integer","null"],"description":"Always null."},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"}}}},"/v1/bills/{bill_id}/similar":{"get":{"tags":["Bills"],"operationId":"similar_bills","summary":"The same proposal in other states (similarity 0.87 or more)","description":"Only state bills are compared; total is the number of similar bills.","parameters":[{"name":"bill_id","in":"path","required":true,"schema":{"type":"string"},"description":"A state bill's id (the bill_id field of a bill)."}],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit-Minute":{"$ref":"#/components/headers/X-RateLimit-Limit-Minute"},"X-RateLimit-Remaining-Minute":{"$ref":"#/components/headers/X-RateLimit-Remaining-Minute"},"X-RateLimit-Limit-Day":{"$ref":"#/components/headers/X-RateLimit-Limit-Day"},"X-RateLimit-Remaining-Day":{"$ref":"#/components/headers/X-RateLimit-Remaining-Day"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/SimilarBills"},"next_cursor":{"type":["string","null"],"description":"Always null."},"total":{"type":["integer","null"],"description":"Number of items."},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"503":{"$ref":"#/components/responses/Unavailable"}}}},"/v1/surveys/state-estimates":{"get":{"tags":["Surveys"],"operationId":"survey_state_estimates","summary":"State opinion estimates (MRP)","parameters":[],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit-Minute":{"$ref":"#/components/headers/X-RateLimit-Limit-Minute"},"X-RateLimit-Remaining-Minute":{"$ref":"#/components/headers/X-RateLimit-Remaining-Minute"},"X-RateLimit-Limit-Day":{"$ref":"#/components/headers/X-RateLimit-Limit-Day"},"X-RateLimit-Remaining-Day":{"$ref":"#/components/headers/X-RateLimit-Remaining-Day"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"description":"The published file, as the site uses it."},"next_cursor":{"type":["string","null"],"description":"Always null."},"total":{"type":["integer","null"],"description":"Always null."},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"503":{"$ref":"#/components/responses/Unavailable"}}}},"/v1/surveys/toplines":{"get":{"tags":["Surveys"],"operationId":"survey_toplines","summary":"Survey topline reports","parameters":[],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit-Minute":{"$ref":"#/components/headers/X-RateLimit-Limit-Minute"},"X-RateLimit-Remaining-Minute":{"$ref":"#/components/headers/X-RateLimit-Remaining-Minute"},"X-RateLimit-Limit-Day":{"$ref":"#/components/headers/X-RateLimit-Limit-Day"},"X-RateLimit-Remaining-Day":{"$ref":"#/components/headers/X-RateLimit-Remaining-Day"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"description":"The published file, as the site uses it."},"next_cursor":{"type":["string","null"],"description":"Always null."},"total":{"type":["integer","null"],"description":"Always null."},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"503":{"$ref":"#/components/responses/Unavailable"}}}},"/v1/violence/events":{"get":{"tags":["Political violence"],"operationId":"violence_events","summary":"Political violence events","parameters":[],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit-Minute":{"$ref":"#/components/headers/X-RateLimit-Limit-Minute"},"X-RateLimit-Remaining-Minute":{"$ref":"#/components/headers/X-RateLimit-Remaining-Minute"},"X-RateLimit-Limit-Day":{"$ref":"#/components/headers/X-RateLimit-Limit-Day"},"X-RateLimit-Remaining-Day":{"$ref":"#/components/headers/X-RateLimit-Remaining-Day"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"description":"The published file, as the site uses it."},"next_cursor":{"type":["string","null"],"description":"Always null."},"total":{"type":["integer","null"],"description":"Always null."},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"503":{"$ref":"#/components/responses/Unavailable"}}}},"/v1/bulk":{"get":{"tags":["Bulk files"],"operationId":"list_bulk","summary":"Bulk files (CSV and Parquet zips)","parameters":[],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit-Minute":{"$ref":"#/components/headers/X-RateLimit-Limit-Minute"},"X-RateLimit-Remaining-Minute":{"$ref":"#/components/headers/X-RateLimit-Remaining-Minute"},"X-RateLimit-Limit-Day":{"$ref":"#/components/headers/X-RateLimit-Limit-Day"},"X-RateLimit-Remaining-Day":{"$ref":"#/components/headers/X-RateLimit-Remaining-Day"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/BulkFile"},"description":"Every bulk file."},"next_cursor":{"type":["string","null"],"description":"Always null."},"total":{"type":["integer","null"],"description":"Number of items."},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"},"503":{"$ref":"#/components/responses/Unavailable"}}}},"/v1/bulk/{name}":{"get":{"tags":["Bulk files"],"operationId":"download_bulk","summary":"Download a bulk file (302 to a five-minute link; counts toward the daily downloads)","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string"},"description":"The file's name, from /v1/bulk."}],"responses":{"302":{"description":"Redirect to the file","headers":{"Location":{"description":"A download link, valid for five minutes.","schema":{"type":"string"}},"X-RateLimit-Limit-Minute":{"$ref":"#/components/headers/X-RateLimit-Limit-Minute"},"X-RateLimit-Remaining-Minute":{"$ref":"#/components/headers/X-RateLimit-Remaining-Minute"},"X-RateLimit-Limit-Day":{"$ref":"#/components/headers/X-RateLimit-Limit-Day"},"X-RateLimit-Remaining-Day":{"$ref":"#/components/headers/X-RateLimit-Remaining-Day"}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"description":"Over a rate limit (see Retry-After), or today's downloads are used up (they reset at midnight UTC)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/usage":{"get":{"tags":["Account"],"operationId":"usage","summary":"Your limits and use","parameters":[],"responses":{"200":{"description":"OK","headers":{"X-RateLimit-Limit-Minute":{"$ref":"#/components/headers/X-RateLimit-Limit-Minute"},"X-RateLimit-Remaining-Minute":{"$ref":"#/components/headers/X-RateLimit-Remaining-Minute"},"X-RateLimit-Limit-Day":{"$ref":"#/components/headers/X-RateLimit-Limit-Day"},"X-RateLimit-Remaining-Day":{"$ref":"#/components/headers/X-RateLimit-Remaining-Day"}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Usage"},"next_cursor":{"type":["string","null"],"description":"Always null."},"total":{"type":["integer","null"],"description":"Always null."},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"}}}}}}