Skip to main content
All CollectionsAPI
Using parameters to interact with the NationBuilder API
Using parameters to interact with the NationBuilder API

Learn how to get the data you need from the NationBuilder API by appending URL parameters to your requests

Updated over a week ago

Filtering

Filtering allows you to narrow down the results returned by the API based on specific attributes. The filter parameter can be used with any attribute to return a subset of results.

Basic Filters:

  • Simple: /api/v2/signups?filter[note]=my note

  • Case Sensitive: /api/v2/signups?filter[note][eql]=My note

  • Prefix: /api/v2/signups?filter[note][prefix]=my

  • Suffix: /api/v2/signups?filter[note][suffix]=my

  • Contains: /api/v2/signups?filter[note][match]=ot

Numeric Filters:

  • Greater than: /api/v2/signups?filter[donations_amount_in_cents][gt]=500

  • Greater than or equal to: /api/v2/signups?filter[donations_amount_in_cents][gte]=500

  • Less than: /api/v2/signups?filter[donations_amount_in_cents][lt]=1000

  • Less than or equal to: /api/v2/signups?filter[donations_amount_in_cents][lte]=1000

Null Checks:

  • Exists (is not null): /api/v2/signups?filter[middle_name][not_eq]=null

  • Does not exist (is null): /api/v2/signups?filter[middle_name]=null

Nested Filtering: You can also filter sideloaded resources by nesting filter parameters.

  • /api/v2/signups?include=primary_address,work_address,registered_address&filter[addresses][state]=MT

Important Note: The filter does not remove unassociated Signups from the response. Signups that do not have addresses matching the criteria of the filter will still be included in the payload.

Examples

  1. Filter by Note:

    GET /api/v2/signups?filter[note]=meeting
  2. Filter by Donations Greater Than a Certain Amount:

    GET /api/v2/signups?filter[donations_amount_in_cents][gt]=1000
  3. Filter by Address State:

    GET /api/v2/signups?include=primary_address&filter[addresses][state]=CA


Pagination

By default, index endpoints return 20 results per response. The response includes self, prev, and next links for pagination.

Customizing Page Size and Number:

  • Specify size: /api/v2/signups?page[size]=10

  • Specify page: /api/v2/signups?page[number]=3


Sparse Fields

To optimize data transfer, you can use the fields parameter to specify only the attributes you need in the response.

Example:

GET /api/v2/signups?fields[signups]=first_name,last_name,email

Sorting

The sort parameter allows you to order the results.

Ascending Order:

GET /api/v2/signups?sort=first_name

Descending Order:

GET /api/v2/signups?sort=-first_name


Sideloading

Sideloading enables you to include related resources in the same response. This is done using the include parameter.

Example:

GET /api/v2/signups?include=primary_address,work_address


Sideposting

Sideposting allows you to create or update a resource alongside a connected resource within the same request.

Creating a Signup with a Recruiter and Tags:

{ "data": { "type": "signups", "attributes": { "first_name": "Kim", "last_name": "Possible", "email": "[email protected]" }, "relationships": { "recruiter": { "data": { "type": "signups", "temp-id": "unique-temp-id", "method": "create" } }, "signup_tags": { "data": [ { "type": "signup_tags", "temp-id": "new-signup-tag", "method": "create" }, { "type": "signup_tags", "temp-id": "another-new-signup-tag", "method": "create" }, { "type": "signup_tags", "id": "123", "method": "update" } ] } } }, "included": [ { "type": "signups", "temp-id": "unique-temp-id", "attributes": { "first_name": "Joy", "last_name": "Palmer", "email": "[email protected]" } }, { "type": "signup_tags", "temp-id": "new-signup-tag", "attributes": { "name": "create-from-api-call" } }, { "type": "signup_tags", "temp-id": "another-new-signup-tag", "attributes": { "name": "api-recruited" } } ] }
Did this answer your question?