---
title: "GET /v1/schedules/schedule_a/{sub_id}/"
method: GET
path: "/v1/schedules/schedule_a/{sub_id}/"
tags: ["receipts"]
---

# GET /v1/schedules/schedule_a/{sub_id}/

`GET /v1/schedules/schedule_a/{sub_id}/`

## Request

- Base URL: `https://api.open.fec.gov` (the document declares no server; this is the origin it was published from)
- URL: `https://api.open.fec.gov/v1/schedules/schedule_a/{sub_id}/`
- Auth: API key in header `X-Api-Key` and API key in query parameter `api_key` and API key in query parameter `api_key`
- TypeScript: <https://skmtc.dev/fec/apis/openfec/docs/v1/schedules/schedule_a/:sub_id/get.ts> (a function with typed inputs; its response is checked against the schema)

This description is for both ​`/schedules​/schedule_a​/` and ​ `/schedules​/schedule_a​/{sub_id}​/`.

This endpoint provides itemized receipts. Schedule A records describe itemized receipts, including contributions from individuals. If you are interested in contributions from an individual, use the `/schedules/schedule_a/` endpoint. For a more complete description of all Schedule A records visit [About receipts data](https://www.fec.gov/campaign-finance-data/about-campaign-finance-data/about-receipts-data/). If you are interested in our "is_individual" methodology visit our [methodology page](https://www.fec.gov/campaign-finance-data/about-campaign-finance-data/methodology/). 
​The `/schedules​/schedule_a​/` endpoint is not paginated by page number. This endpoint uses keyset pagination to improve query performance and these indices are required to properly page through this large dataset. To request the next page, you should append the values found in the `last_indexes` object from pagination to the URL of your last request as additional parameters. 
For example, when sorting by `contribution_receipt_date`, you might receive a page of results with the two scenarios of following pagination information:

case #1:
```
pagination: {
    pages: 2152643,
    per_page: 20,
    is_count_exact: False,
    count: 43052850,
    last_indexes: {
        last_index: "230880619",
        last_contribution_receipt_date: "2014-01-01"
    }
}
```
<br/>
case #2 (results which include contribution_receipt_date = NULL):

```
pagination: {
    pages: 2152644,
    per_page: 20,
    count: 43052850,
    is_count_exact: False,
    last_indexes: {
        last_index: "230880639",
        sort_null_only: True
    }
}
```
To fetch the next page of sorted results, append `last_index=230880619` and `last_contribution_receipt_date=2014-01-01` to the URL and when reaching `contribution_receipt_date=NULL`, append `last_index=230880639` and `sort_null_only=True`. We strongly advise paging through these results using sort indices. The default sort is acending by `contribution_receipt_date` (`deprecated`, will be descending). If you do not page using sort indices, some transactions may be unintentionally filtered out.

Calls to ​`/schedules​/schedule_a​/` may return many records. For large result sets, the record counts found in the pagination object are approximate; you will need to page through the records until no records are returned.

To avoid throwing the "out of range" exception on the last page, one recommandation is to use total count and `per_page` to control the traverse loop of results.

​The `/schedules​/schedule_a​/{sub_id}​/` endpoint returns a single transaction, but it does include a pagination object class. Please ignore the information in that object class.

## Path parameters

- `sub_id` string, required

## Query parameters

- `image_number` string[]
- `min_image_number` string
- `max_image_number` string
- `min_amount` number
- `max_amount` number
- `min_date` string
- `max_date` string
- `committee_id` string[]
- `contributor_id` string[]
- `contributor_name` string[]
- `contributor_city` string[]
- `contributor_state` string[]
- `contributor_zip` string[]
- `contributor_employer` string[]
- `contributor_occupation` string[]
- `last_contribution_receipt_date` string
- `last_contribution_receipt_amount` number
- `line_number` string
- `is_individual` boolean
- `contributor_type` string[]
- `two_year_transaction_period` integer[]
- `recipient_committee_type` string[]
- `recipient_committee_org_type` string[]
- `recipient_committee_designation` string[]
- `min_load_date` string
- `max_load_date` string
- `per_page` integer
- `last_index` integer
- `sort` string
- `sort_hide_null` boolean
- `sort_null_only` boolean
- `sort_nulls_last` boolean
- `api_key` string

## Response `default`

Default response

- ScheduleAPage
  - `pagination` SeekInfo
    - `count` integer
    - `is_count_exact` boolean
    - `last_indexes` unknown
    - `pages` integer
    - `per_page` integer
  - `results` ScheduleA[]
    - `amendment_indicator` string, nullable
    - `amendment_indicator_desc` string, nullable
    - `back_reference_schedule_name` string, nullable
    - `back_reference_transaction_id` string, nullable
    - `candidate_first_name` string, nullable
    - `candidate_id` string, nullable: A unique identifier assigned to each candidate registered with the FEC. If a person runs for several offices, that person will have separate candidate IDs for each office. First character indicates office - [P]residential, [H]ouse, [S]enate]. Second character is the last digit of the two-year period the ID was created. Third and fourth is the candidate state. Presidential IDs don't have state. Fifth and sixth is the district when the candidate first ran. This does not change if the candidate/member's district changes during re-districting. Presidential IDs don't have districts. The rest is sequence.
    - `candidate_last_name` string, nullable
    - `candidate_middle_name` string, nullable
    - `candidate_name` string, nullable: Name of candidate running for office
    - `candidate_office` string, nullable
    - `candidate_office_district` string, nullable: Two-digit US House distirict of the office the candidate is running for. Presidential, Senate and House at-large candidates will have District 00.
    - `candidate_office_full` string, nullable
    - `candidate_office_state` string, nullable
    - `candidate_office_state_full` string, nullable
    - `candidate_prefix` string, nullable
    - `candidate_suffix` string, nullable
    - `committee` CommitteeHistory
      - `affiliated_committee_name` string, nullable: Affiliated committee or connected organization
      - `candidate_ids` string[], nullable: A unique identifier assigned to each candidate registered with the FEC. If a person runs for several offices, that person will have separate candidate IDs for each office. First character indicates office - [P]residential, [H]ouse, [S]enate]. Second character is the last digit of the two-year period the ID was created. Third and fourth is the candidate state. Presidential IDs don't have state. Fifth and sixth is the district when the candidate first ran. This does not change if the candidate/member's district changes during re-districting. Presidential IDs don't have districts. The rest is sequence.
      - `city` string, nullable: City of committee as reported on the Form 1
      - `committee_id` string, required: A unique identifier assigned to each committee or filer registered with the FEC. In general a committee id begins with the letter C which is followed by eight digits.
      - `committee_type` string, nullable: The one-letter type code of the organization: - C communication cost - D delegate - E electioneering communication - H house - I independent expenditure filer (not a committee) - N PAC - nonqualified - O independent expenditure-only (super PACs) - P presidential - Q PAC - qualified - S senate - U single candidate independent expenditure - V PAC with non-contribution account, nonqualified - W PAC with non-contribution account, qualified - X party, nonqualified - Y party, qualified - Z national party non-federal account
      - `committee_type_full` string, nullable: The one-letter type code of the organization: - C communication cost - D delegate - E electioneering communication - H house - I independent expenditure filer (not a committee) - N PAC - nonqualified - O independent expenditure-only (super PACs) - P presidential - Q PAC - qualified - S senate - U single candidate independent expenditure - V PAC with non-contribution account, nonqualified - W PAC with non-contribution account, qualified - X party, nonqualified - Y party, qualified - Z national party non-federal account
      - `cycle` integer, required: A two year election cycle that the committee was active- (after original registration date but before expiration date in Form 1s) The cycle begins with an odd year and is named for its ending, even year.
      - `cycles` integer[], nullable: A two year election cycle that the committee was active- (after original registration date but before expiration date in Form 1s) The cycle begins with an odd year and is named for its ending, even year.
      - `cycles_has_activity` integer[], nullable: A two year election cycle that the committee was active- (after original registration date but before expiration date in Form 1), and the committee has filling activity during the cycle
      - `cycles_has_financial` integer[], nullable: A two year election cycle that the committee was active- (after original registration date but before expiration date in Form 1s), and the committee files the financial reports ('F3', 'F3X', 'F3P', 'F3L', 'F4', 'F5', 'F7', 'F13') during this cycle.
      - `designated_agent_city` string, nullable: Designated agent city
      - `designated_agent_first_name` string, nullable: Designated agent first name
      - `designated_agent_last_name` string, nullable: Designated agent last name
      - `designated_agent_middle_name` string, nullable: Designated agent middle name
      - `designated_agent_name` string, nullable: Designated agent name
      - `designated_agent_phone_number` string, nullable: Designated agent phone number
      - `designated_agent_prefix` string, nullable: Designated agent prefix
      - `designated_agent_state` string, nullable: Designated agent state
      - `designated_agent_street1` string, nullable: Designated agent street1
      - `designated_agent_street2` string, nullable: Designated agent street2
      - `designated_agent_suffix` string, nullable: Designated agent suffix
      - `designated_agent_title` string, nullable: Designated agent title
      - `designated_agent_zip` string, nullable: Designated agent zip
      - `designation` string, nullable: The one-letter designation code of the organization: - A authorized by a candidate - J joint fundraising committee - P principal campaign committee of a candidate - U unauthorized - B lobbyist/registrant PAC - D leadership PAC
      - `designation_full` string, nullable: The one-letter designation code of the organization: - A authorized by a candidate - J joint fundraising committee - P principal campaign committee of a candidate - U unauthorized - B lobbyist/registrant PAC - D leadership PAC
      - `filing_frequency` string, nullable: The one-letter code of the filing frequency: - A Administratively terminated - D Debt - M Monthly filer - Q Quarterly filer - T Terminated - W Waived
      - `first_f1_date` string, date, nullable: The day the FEC received the committee's first Form 1
      - `first_file_date` string, date, nullable: The day the FEC received the committee's first filing. This is usually a Form 1 committee registration.
      - `is_active` boolean, nullable: True indicates that a committee is active.
      - `jfc_committee` JFCCommittee[]
        - `joint_committee_id` string, nullable: A unique identifier assigned to each committee or filer registered with the FEC. In general a committee id begins with the letter C which is followed by eight digits.
        - `joint_committee_name` string, nullable: The name of the committee. If a committee changes its name, the most recent name will be shown. Committee names are not unique. Use committee_id for looking up records.
      - `last_cycle_has_activity` integer, nullable: The latest two year election cycle that the committee has filings
      - `last_cycle_has_financial` integer, nullable: The latest two year election cycle that the committee files the financial reports ('F3', 'F3X', 'F3P', 'F3L', 'F4', 'F5', 'F7', 'F13').
      - `last_f1_date` string, date, nullable: The day the FEC received the committee's most recent Form 1
      - `last_file_date` string, date, nullable: The day the FEC received the committee's most recent filing
      - `name` string, nullable: The name of the committee. If a committee changes its name, the most recent name will be shown. Committee names are not unique. Use committee_id for looking up records.
      - `organization_type` string, nullable: The one-letter code for the kind for organization: - C corporation - L labor organization - M membership organization - T trade association - V cooperative - W corporation without capital stock - H host committee - I inaugural committee
      - `organization_type_full` string, nullable: The one-letter code for the kind for organization: - C corporation - L labor organization - M membership organization - T trade association - V cooperative - W corporation without capital stock - H host committee - I inaugural committee
      - `party` string, nullable: Three-letter code for the party affiliated with a candidate or committee. For example, DEM for Democratic Party and REP for Republican Party.
      - `party_full` string, nullable: Three-letter code for the party affiliated with a candidate or committee. For example, DEM for Democratic Party and REP for Republican Party.
      - `state` string, nullable: State of the committee's address as filed on the Form 1
      - `state_full` string, nullable: State of committee as reported on the Form 1
      - `street_1` string, nullable: Street address of committee as reported on the Form 1
      - `street_2` string, nullable: Second line of street address of committee as reported on the Form 1
      - `treasurer_name` string, nullable: Name of the Committee's treasurer. If multiple treasurers for the committee, the most recent treasurer will be shown.
      - `zip` string, nullable: Zip code of committee as reported on the Form 1
    - `committee_id` string, nullable: A unique identifier assigned to each committee or filer registered with the FEC. In general a committee id begins with the letter C which is followed by eight digits.
    - `committee_name` string, nullable: The name of the committee. If a committee changes its name, the most recent name will be shown. Committee names are not unique. Use committee_id for looking up records.
    - `conduit_committee_city` string, nullable
    - `conduit_committee_id` string, nullable
    - `conduit_committee_name` string, nullable
    - `conduit_committee_state` string, nullable
    - `conduit_committee_street1` string, nullable
    - `conduit_committee_street2` string, nullable
    - `conduit_committee_zip` string, nullable
    - `contribution_receipt_amount` number
    - `contribution_receipt_date` string, date, nullable
    - `contributor` CommitteeHistory
      - `affiliated_committee_name` string, nullable: Affiliated committee or connected organization
      - `candidate_ids` string[], nullable: A unique identifier assigned to each candidate registered with the FEC. If a person runs for several offices, that person will have separate candidate IDs for each office. First character indicates office - [P]residential, [H]ouse, [S]enate]. Second character is the last digit of the two-year period the ID was created. Third and fourth is the candidate state. Presidential IDs don't have state. Fifth and sixth is the district when the candidate first ran. This does not change if the candidate/member's district changes during re-districting. Presidential IDs don't have districts. The rest is sequence.
      - `city` string, nullable: City of committee as reported on the Form 1
      - `committee_id` string, required: A unique identifier assigned to each committee or filer registered with the FEC. In general a committee id begins with the letter C which is followed by eight digits.
      - `committee_type` string, nullable: The one-letter type code of the organization: - C communication cost - D delegate - E electioneering communication - H house - I independent expenditure filer (not a committee) - N PAC - nonqualified - O independent expenditure-only (super PACs) - P presidential - Q PAC - qualified - S senate - U single candidate independent expenditure - V PAC with non-contribution account, nonqualified - W PAC with non-contribution account, qualified - X party, nonqualified - Y party, qualified - Z national party non-federal account
      - `committee_type_full` string, nullable: The one-letter type code of the organization: - C communication cost - D delegate - E electioneering communication - H house - I independent expenditure filer (not a committee) - N PAC - nonqualified - O independent expenditure-only (super PACs) - P presidential - Q PAC - qualified - S senate - U single candidate independent expenditure - V PAC with non-contribution account, nonqualified - W PAC with non-contribution account, qualified - X party, nonqualified - Y party, qualified - Z national party non-federal account
      - `cycle` integer, required: A two year election cycle that the committee was active- (after original registration date but before expiration date in Form 1s) The cycle begins with an odd year and is named for its ending, even year.
      - `cycles` integer[], nullable: A two year election cycle that the committee was active- (after original registration date but before expiration date in Form 1s) The cycle begins with an odd year and is named for its ending, even year.
      - `cycles_has_activity` integer[], nullable: A two year election cycle that the committee was active- (after original registration date but before expiration date in Form 1), and the committee has filling activity during the cycle
      - `cycles_has_financial` integer[], nullable: A two year election cycle that the committee was active- (after original registration date but before expiration date in Form 1s), and the committee files the financial reports ('F3', 'F3X', 'F3P', 'F3L', 'F4', 'F5', 'F7', 'F13') during this cycle.
      - `designated_agent_city` string, nullable: Designated agent city
      - `designated_agent_first_name` string, nullable: Designated agent first name
      - `designated_agent_last_name` string, nullable: Designated agent last name
      - `designated_agent_middle_name` string, nullable: Designated agent middle name
      - `designated_agent_name` string, nullable: Designated agent name
      - `designated_agent_phone_number` string, nullable: Designated agent phone number
      - `designated_agent_prefix` string, nullable: Designated agent prefix
      - `designated_agent_state` string, nullable: Designated agent state
      - `designated_agent_street1` string, nullable: Designated agent street1
      - `designated_agent_street2` string, nullable: Designated agent street2
      - `designated_agent_suffix` string, nullable: Designated agent suffix
      - `designated_agent_title` string, nullable: Designated agent title
      - `designated_agent_zip` string, nullable: Designated agent zip
      - `designation` string, nullable: The one-letter designation code of the organization: - A authorized by a candidate - J joint fundraising committee - P principal campaign committee of a candidate - U unauthorized - B lobbyist/registrant PAC - D leadership PAC
      - `designation_full` string, nullable: The one-letter designation code of the organization: - A authorized by a candidate - J joint fundraising committee - P principal campaign committee of a candidate - U unauthorized - B lobbyist/registrant PAC - D leadership PAC
      - `filing_frequency` string, nullable: The one-letter code of the filing frequency: - A Administratively terminated - D Debt - M Monthly filer - Q Quarterly filer - T Terminated - W Waived
      - `first_f1_date` string, date, nullable: The day the FEC received the committee's first Form 1
      - `first_file_date` string, date, nullable: The day the FEC received the committee's first filing. This is usually a Form 1 committee registration.
      - `is_active` boolean, nullable: True indicates that a committee is active.
      - `jfc_committee` JFCCommittee[]
        - `joint_committee_id` string, nullable: A unique identifier assigned to each committee or filer registered with the FEC. In general a committee id begins with the letter C which is followed by eight digits.
        - `joint_committee_name` string, nullable: The name of the committee. If a committee changes its name, the most recent name will be shown. Committee names are not unique. Use committee_id for looking up records.
      - `last_cycle_has_activity` integer, nullable: The latest two year election cycle that the committee has filings
      - `last_cycle_has_financial` integer, nullable: The latest two year election cycle that the committee files the financial reports ('F3', 'F3X', 'F3P', 'F3L', 'F4', 'F5', 'F7', 'F13').
      - `last_f1_date` string, date, nullable: The day the FEC received the committee's most recent Form 1
      - `last_file_date` string, date, nullable: The day the FEC received the committee's most recent filing
      - `name` string, nullable: The name of the committee. If a committee changes its name, the most recent name will be shown. Committee names are not unique. Use committee_id for looking up records.
      - `organization_type` string, nullable: The one-letter code for the kind for organization: - C corporation - L labor organization - M membership organization - T trade association - V cooperative - W corporation without capital stock - H host committee - I inaugural committee
      - `organization_type_full` string, nullable: The one-letter code for the kind for organization: - C corporation - L labor organization - M membership organization - T trade association - V cooperative - W corporation without capital stock - H host committee - I inaugural committee
      - `party` string, nullable: Three-letter code for the party affiliated with a candidate or committee. For example, DEM for Democratic Party and REP for Republican Party.
      - `party_full` string, nullable: Three-letter code for the party affiliated with a candidate or committee. For example, DEM for Democratic Party and REP for Republican Party.
      - `state` string, nullable: State of the committee's address as filed on the Form 1
      - `state_full` string, nullable: State of committee as reported on the Form 1
      - `street_1` string, nullable: Street address of committee as reported on the Form 1
      - `street_2` string, nullable: Second line of street address of committee as reported on the Form 1
      - `treasurer_name` string, nullable: Name of the Committee's treasurer. If multiple treasurers for the committee, the most recent treasurer will be shown.
      - `zip` string, nullable: Zip code of committee as reported on the Form 1
    - `contributor_aggregate_ytd` number: Total amount received from this source for the year to date. Starting 2000, it is aggregated on an election-cycle basis in F3 and F3P, and calendar year in F3X.
    - `contributor_city` string, nullable: City of contributor
    - `contributor_employer` string, nullable: Employer of contributor, filers need to make an effort to gather this information
    - `contributor_first_name` string, nullable
    - `contributor_id` string, nullable: The FEC identifier should be represented here if the contributor is registered with the FEC.
    - `contributor_last_name` string, nullable
    - `contributor_middle_name` string, nullable
    - `contributor_name` string, nullable: Name of contributor
    - `contributor_occupation` string, nullable: Occupation of contributor, filers need to make an effort to gather this information
    - `contributor_prefix` string, nullable
    - `contributor_state` string, nullable: State of contributor
    - `contributor_street_1` string, nullable
    - `contributor_street_2` string, nullable
    - `contributor_suffix` string, nullable
    - `contributor_zip` string, nullable: Zip code of contributor
    - `donor_committee_name` string, nullable
    - `election_type` string, nullable
    - `election_type_full` string, nullable
    - `entity_type` string, nullable
    - `entity_type_desc` string, nullable
    - `fec_election_type_desc` string, nullable
    - `fec_election_year` string, nullable
    - `file_number` integer, nullable
    - `filing_form` string, nullable
    - `image_number` string
    - `increased_limit` string, nullable
    - `is_individual` boolean, nullable
    - `line_number` string, nullable
    - `line_number_label` string, nullable
    - `link_id` integer, nullable
    - `load_date` string, date-time, nullable
    - `memo_code` string, nullable
    - `memo_code_full` string, nullable
    - `memo_text` string, nullable
    - `memoed_subtotal` boolean
    - `national_committee_nonfederal_account` string, nullable
    - `original_sub_id` string
    - `pdf_url` string, nullable
    - `receipt_type` string, nullable
    - `receipt_type_desc` string, nullable
    - `receipt_type_full` string, nullable
    - `recipient_committee_designation` string, nullable
    - `recipient_committee_org_type` string, nullable
    - `recipient_committee_type` string, nullable
    - `report_type` string, nullable: Name of report where the underlying data comes from: - 10D Pre-Election - 10G Pre-General - 10P Pre-Primary - 10R Pre-Run-Off - 10S Pre-Special - 12C Pre-Convention - 12G Pre-General - 12P Pre-Primary - 12R Pre-Run-Off - 12S Pre-Special - 30D Post-Election - 30G Post-General - 30P Post-Primary - 30R Post-Run-Off - 30S Post-Special - 60D Post-Convention - M1 January Monthly - M10 October Monthly - M11 November Monthly - M12 December Monthly - M2 February Monthly - M3 March Monthly - M4 April Monthly - M5 May Monthly - M6 June Monthly - M7 July Monthly - M8 August Monthly - M9 September Monthly - MY Mid-Year Report - Q1 April Quarterly - Q2 July Quarterly - Q3 October Quarterly - TER Termination Report - YE Year-End - ADJ COMP ADJUST AMEND - CA COMPREHENSIVE AMEND - 90S Post Inaugural Supplement - 90D Post Inaugural - 24 24 Hour Notification (F6, F9) - 24 24 Hour Report of Independent Expenditures (F5, F24/F3X) - 48 48 Hour Report of Independent Expenditures (F5, F24/F3X) - M7S July Monthly/Semi-Annual - MSA Monthly Semi-Annual (MY) - MYS Monthly Year End/Semi-Annual - Q2S July Quarterly/Semi-Annual - QSA Quarterly Semi-Annual (MY) - QYS Quarterly Year End/Semi-Annual - QYE Quarterly Semi-Annual (YE) - QMS Quarterly Mid-Year/ Semi-Annual - MSY Monthly Semi-Annual (YE)
    - `report_year` integer
    - `schedule_type` string, nullable
    - `schedule_type_full` string, nullable
    - `sub_id` string
    - `transaction_id` string, nullable
    - `two_year_transaction_period` integer, nullable: This is a two-year period that is derived from the year a transaction took place in the Itemized Schedule A and Schedule B tables. In cases where we have the date of the transaction (contribution_receipt_date in schedules/schedule_a, disbursement_date in schedules/schedule_b) the two_year_transaction_period is named after the ending, even-numbered year. If we do not have the date of the transaction, we fall back to using the report year (report_year in both tables) instead, making the same cycle adjustment as necessary. If no transaction year is specified, the results default to the most current cycle.
    - `unused_contbr_id` string, nullable

## Changes

- **2026-05-25** `8324de07a97d`: 1 info
  - added the new optional `query` request parameter `sort_nulls_last`

[Operation history](https://skmtc.dev/fec/apis/openfec/changes/v1/schedules/schedule_a/:sub_id/get.md)

---

[API](https://skmtc.dev/fec/apis/openfec.md) - [All operations](https://skmtc.dev/fec/apis/openfec/llms.txt) - [OpenAPI document](https://skmtc.dev/fec/apis/openfec/revisions/d2eb3171e225?raw)
