NAV
shell

Introduction

The Planning Center Online API can be used to interact with all of your organization’s data inside Planning Center. In this first iteration of the API the data inside PCO People is available; we are now working towards adding endpoints for some of our other apps (including an all new API for Services).

Rate limiting

Requests that are rate limited will return an error like this:

{
  "errors": [
    {
      "code": "429",
      "detail": "Rate limit exceeded: 118 of 100 requests per 20 seconds"
    }
  ]
}

Usually the API is rate limited to 100 requests per 20 seconds per user, but that limit and time period are subject to change either up or down as necessary. If you think your app may be affected by rate limits, it should be developed to adjust dynamically inspecting the values of X-PCO-API-Request-Rate-Limit and X-PCO-API-Request-Rate-Period in the HTTP headers. Your current count is discoverable in the X-PCO-API-Request-Rate-Count key. Requests that exceed the current limit will return an HTTP status 429. The number of seconds to wait until you can retry those requests is in the key Retry-After.

Authentication

There are several ways to authenticate with the API.

Session Authentication

You (the developer) can browse the API via a browser using your session cookie:

  1. Visit accounts.planningcenteronline.com and sign in.
  2. Visit api.planningcenteronline.com/people/v2/people (for example) or other API endpoints.

Browsing the API with your web browser is best experienced with an extension like JSONView, which formats JSON output in the browser for easier reading.

Note: session auth won’t work for building an application for users because of the same-origin policy.

Personal Access Token

You can pass your personal access token with curl like this:

curl -u app_id:secret https://api.planningcenteronline.com/people/v2/people

Create a Personal Access Token and use HTTP Basic Auth if you just need access to your own account:

  1. Visit api.planningcenteronline.com/oauth/applications.
  2. Create a new “HTTP Basic Application”
  3. Pass your token and secret in every request using HTTP Basic Auth.

OAuth 2.0

If you are distributing your app to multiple churches, you should use OAuth version 2.0.

Visit api.planningcenteronline.com/oauth/applications to create an OAuth application token.

Example of sending the POST request (step 3) using curl:

curl -X POST https://api.planningcenteronline.com/oauth/token \
     -F grant_type=authorization_code \
     -F code=1234567890 \
     -F client_id=2345678901 \
     -F client_secret=3456789012 \
     -F redirect_uri=https://example.com/auth/complete

Sample response containing the access token:

{
  "access_token": "1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
  "token_type": "bearer",
  "expires_in": 7200,
  "refresh_token": "1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
  "scope": "people",
  "created_at": 1469553476
}

Pass the access token in all subsequent API requests:

curl -H 'Authorization: Bearer 1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef' https://api.planningcenteronline.com/people/v2/people

Make sure your app conforms to the OAuth 2.0 specification. Generally, to authenticate a user, follow these steps:

  1. Redirect the user’s browser to https://api.planningcenteronline.com/oauth/authorize?client_id=CLIENT_ID&redirect_uri=https://example.com/auth/complete&response_type=code&scope=people (replace CLIENT_ID and https://example.com/auth/complete with your actual redirect URI).

    If you need different scope, replace scope=people appropriately (see “Scopes” section below).

  2. Planning Center will redirect the user’s browser back to the given redirect URI with a code param.

  3. Send a POST request in the background to https://api.planningcenteronline.com/oauth/token with the following params: {"grant_type": "authorization_code", "code": "CODE_FROM_STEP_2", "client_id": "CLIENT_ID", "client_secret": "CLIENT_SECRET", "redirect_uri": "https://example.com/auth/complete"} (replace CLIENT_ID, CLIENT_SECRET, CODE_FROM_STEP_2, and the redirect URI appropriately).

  4. The response you get back will contain the access token and other information.

  5. Use the access token for all API requests by passing it in the Authorization header, using the Bearer authentication scheme.

OAuth access tokens expire after 2 hours from the time they are issued, but we also provide a refresh token you can use to get a new access token at any time, even after the access token expires, without forcing the user to re-authorize.

We will honor refresh tokens for up to 1 year after the date its associated access token was issued. This means that, if your app does not issue a refresh for 1 year, then your user will need to re-authorize.

We have an example Ruby/Sinatra app showing how to obtain and use access tokens and refresh tokens at github.com/planningcenter/pco_api_oauth_example.

Scopes

Each PCO app is a distinct OAuth scope.

App Scope
Check-ins check_ins
Giving giving
People people
Services services

Authorization URL is https://api.planningcenteronline.com/oauth/authorize Token URL is https://api.planningcenteronline.com/oauth/token When authorizing, you can request scopes using the scope parameter. The value should be a space-separated list of scopes. The value for response_type should be code

Current User

curl -H 'Authorization: Bearer ...' https://api.planningcenteronline.com/people/v2/me

To get information about the current user, you can use the /me endpoint.

JSON API

This API is built to conform to the JSON API 1.0 specification.

Some benefits:

Gotchas:

Dates & Times

All dates and times conform to the ISO 8601 standard and look like this:

value format example
date YYYY-MM-DD 2015-05-05
date and time YYYY-MM-DDTHH:MM:SSZ 2015-05-05T22:40:07Z

File Uploads

Here’s how to upload a file with curl:

curl -u app_id:secret -X POST -F 'file=@/path/to/file.png' https://upload.planningcenteronline.com/v2/files

The response you receive will look like this:

{
   "data": [
      {
         "type": "File",
         "attributes": {
            "source_ip":    "70.128.100.145",
            "md5":          "e178604e5083cc23782f34650a49b025",
            "content_type": "image\/png",
            "file_size":    48341,
            "name":         "file.png",
            "expires_at":   "2016-05-23T23:13:32Z"
         },
         "id": "us1-16207df7-b6cc-4abe-ca1a-306c6f7e423d"
      }
   ]
}

To assign the file to an attribute, pass the UUID as a string. For example, here is how to update the Person avatar:

curl -u app_id:secret -X PATCH https://api.planningcenteronline.com/people/v2/people/1 -d '{"data":{"attributes":{"avatar":"us1-16207df7-b6cc-4abe-ca1a-306c6f7e423d"}}}'

Some endpoints accept file uploads. This is a two-step process:

  1. Upload a file by making a POST request to https://upload.planningcenteronline.com/v2/files.

    Your request should use multipart/form-data encoding and contain a file attribute with the file data. (See the sidebar for a curl example.)

    The response you get will contain an id which is the file UUID.

  2. Pass the UUID as the attribute value to an endpoint that accepts a file.

    The UUID is a string that tells the endpoint which file to associate.

Libraries

Since our API talks HTTP and JSON, you get to use off-the-shelf components for your language of choice.

Since we love Ruby so much, we went ahead and built a very simple API wrapper library called pco_api. gem install it, and you’ll be building cool stuff in no time!

PCO Check-Ins

Check kids & volunteers in to events and track attendance.

AttendanceTypes

A kind of attendee which is tracked by headcount, not by check-in.

List Attendance Types

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/check_ins/v2/events/1/attendance_types"

HTTP Request

GET https://api.planningcenteronline.com/check_ins/v2/events/1/attendance_types

URL Parameters

Parameter Value Description
include event include associated event
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Attendance Type

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/check_ins/v2/events/1/attendance_types/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "AttendanceType",
    "id": "primary_key",
    "attributes": {
      "color": "string",
      "created_at": "2000-01-01T12:00:00Z",
      "name": "string",
      "updated_at": "2000-01-01T12:00:00Z"
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/check_ins/v2/events/1/attendance_types/1

URL Parameters

Parameter Value Description
include event include associated event

Associations for an Attendance Type

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
event https://api.planningcenteronline.com/check_ins/v2/events/1/attendance_types/1/event Event
headcounts https://api.planningcenteronline.com/check_ins/v2/events/1/attendance_types/1/headcounts Headcount

CheckIns

An attendance record for an event.

If someone was checked out, checked_out_at will be present.

You can scope check-ins in a few ways:

List Check Ins

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/check_ins/v2/check_ins"

HTTP Request

GET https://api.planningcenteronline.com/check_ins/v2/check_ins

URL Parameters

Parameter Value Description
filter regular filter using the named scope “regular”
filter guest filter using the named scope “guest”
filter volunteer filter using the named scope “volunteer”
filter attendee filter using the named scope “attendee”
filter first_time filter using the named scope “first_time”
filter one_time_guest filter using the named scope “one_time_guest”
filter not_one_time_guest filter using the named scope “not_one_time_guest”
filter checked_out filter using the named scope “checked_out”
include location include associated location
include event include associated event
include event_period include associated event_period
include event_times include associated event_times
include person include associated person
include checked_in_at include associated checked_in_at
include checked_in_by include associated checked_in_by
include checked_out_by include associated checked_out_by
include options include associated options
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)
order first_name prefix with a hyphen (-first_name) to reverse the order
order last_name prefix with a hyphen (-last_name) to reverse the order
order number prefix with a hyphen (-number) to reverse the order
order created_at prefix with a hyphen (-created_at) to reverse the order
order updated_at prefix with a hyphen (-updated_at) to reverse the order
order checked_out_at prefix with a hyphen (-checked_out_at) to reverse the order

Get a single Check In

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/check_ins/v2/check_ins/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "CheckIn",
    "id": "primary_key",
    "attributes": {
      "checked_out_at": "2000-01-01T12:00:00Z",
      "created_at": "2000-01-01T12:00:00Z",
      "emergency_contact_name": "string",
      "emergency_contact_phone_number": "string",
      "first_name": "string",
      "kind": "string",
      "last_name": "string",
      "medical_notes": "string",
      "number": 1,
      "security_code": "string",
      "updated_at": "2000-01-01T12:00:00Z"
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/check_ins/v2/check_ins/1

URL Parameters

Parameter Value Description
include location include associated location
include event include associated event
include event_period include associated event_period
include event_times include associated event_times
include person include associated person
include checked_in_at include associated checked_in_at
include checked_in_by include associated checked_in_by
include checked_out_by include associated checked_out_by
include options include associated options

Associations for a Check In

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
check_in_group https://api.planningcenteronline.com/check_ins/v2/check_ins/1/check_in_group CheckInGroup
checked_in_at https://api.planningcenteronline.com/check_ins/v2/check_ins/1/checked_in_at Station
checked_in_by https://api.planningcenteronline.com/check_ins/v2/check_ins/1/checked_in_by Person
checked_out_by https://api.planningcenteronline.com/check_ins/v2/check_ins/1/checked_out_by Person
event https://api.planningcenteronline.com/check_ins/v2/check_ins/1/event Event
event_period https://api.planningcenteronline.com/check_ins/v2/check_ins/1/event_period EventPeriod
event_times https://api.planningcenteronline.com/check_ins/v2/check_ins/1/event_times EventTime
location https://api.planningcenteronline.com/check_ins/v2/check_ins/1/location Location
options https://api.planningcenteronline.com/check_ins/v2/check_ins/1/options Option
person https://api.planningcenteronline.com/check_ins/v2/check_ins/1/person Person

CheckInGroups

When one or more people check in, they’re grouped in a CheckInGroup. These check-ins all have the same “checked-in by” person. CheckInGroup is also the basis for label printing.

print_status may be:

List Check In Groups

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/check_ins/v2/check_ins/1/check_in_group"

HTTP Request

GET https://api.planningcenteronline.com/check_ins/v2/check_ins/1/check_in_group

URL Parameters

Parameter Value Description
include check_ins include associated check_ins
include event_period include associated event_period
include print_station include associated print_station
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Check In Group

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/check_ins/v2/check_ins/1/check_in_group/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "CheckInGroup",
    "id": "primary_key",
    "attributes": {
      "check_ins_count": 1,
      "created_at": "2000-01-01T12:00:00Z",
      "name_labels_count": 1,
      "print_status": 1,
      "security_labels_count": 1,
      "updated_at": "2000-01-01T12:00:00Z"
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/check_ins/v2/check_ins/1/check_in_group/1

URL Parameters

Parameter Value Description
include check_ins include associated check_ins
include event_period include associated event_period
include print_station include associated print_station

Associations for a Check In Group

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
check_ins https://api.planningcenteronline.com/check_ins/v2/check_ins/1/check_in_group/1/check_ins CheckIn
event_period https://api.planningcenteronline.com/check_ins/v2/check_ins/1/check_in_group/1/event_period EventPeriod
print_station https://api.planningcenteronline.com/check_ins/v2/check_ins/1/check_in_group/1/print_station Station

Events

A recurring event which people may attend.

Each recurrence is an event period (which often corresponds to a week).

Event periods have event times where people may actually check in.

List Events

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/check_ins/v2/events"

HTTP Request

GET https://api.planningcenteronline.com/check_ins/v2/events

URL Parameters

Parameter Value Description
filter archived filter using the named scope “archived”
filter not_archived filter using the named scope “not_archived”
include event_periods include associated event_periods
include attendance_types include associated attendance_types
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)
order name prefix with a hyphen (-name) to reverse the order
order created_at prefix with a hyphen (-created_at) to reverse the order

Get a single Event

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/check_ins/v2/events/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "Event",
    "id": "primary_key",
    "attributes": {
      "archived_at": "2000-01-01T12:00:00Z",
      "created_at": "2000-01-01T12:00:00Z",
      "enable_services_integration": true,
      "frequency": "string",
      "integration_key": "string",
      "name": "string",
      "updated_at": "2000-01-01T12:00:00Z"
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/check_ins/v2/events/1

URL Parameters

Parameter Value Description
include event_periods include associated event_periods
include attendance_types include associated attendance_types

Associations for an Event

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
attendance_types https://api.planningcenteronline.com/check_ins/v2/events/1/attendance_types AttendanceType
check_ins https://api.planningcenteronline.com/check_ins/v2/events/1/check_ins CheckIn
event_labels https://api.planningcenteronline.com/check_ins/v2/events/1/event_labels EventLabel
event_periods https://api.planningcenteronline.com/check_ins/v2/events/1/event_periods EventPeriod
locations https://api.planningcenteronline.com/check_ins/v2/events/1/locations Location
person_events https://api.planningcenteronline.com/check_ins/v2/events/1/person_events PersonEvent

EventLabels

Says how many of a given label to print for this event and whether to print it for regulars, guests, and/or volunteers.

List Event Labels

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/check_ins/v2/events/1/event_labels"

HTTP Request

GET https://api.planningcenteronline.com/check_ins/v2/events/1/event_labels

URL Parameters

Parameter Value Description
include event include associated event
include label include associated label
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Event Label

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/check_ins/v2/events/1/event_labels/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "EventLabel",
    "id": "primary_key",
    "attributes": {
      "created_at": "2000-01-01T12:00:00Z",
      "for_guest": true,
      "for_regular": true,
      "for_volunteer": true,
      "quantity": 1,
      "updated_at": "2000-01-01T12:00:00Z"
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/check_ins/v2/events/1/event_labels/1

URL Parameters

Parameter Value Description
include event include associated event
include label include associated label

Associations for an Event Label

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
event https://api.planningcenteronline.com/check_ins/v2/events/1/event_labels/1/event Event
label https://api.planningcenteronline.com/check_ins/v2/events/1/event_labels/1/label Label

EventPeriods

A recurrence of an event, sometimes called a “session”. For weekly events, an event period is a week. For daily events, an event period is a day. An event period has event times, which is what people select when they actually check in. When new sessions are created, times are copied from one session to the next.

List Event Periods

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/check_ins/v2/event_times/1/event_period"

HTTP Request

GET https://api.planningcenteronline.com/check_ins/v2/event_times/1/event_period

URL Parameters

Parameter Value Description
include event include associated event
include event_times include associated event_times
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)
order starts_at prefix with a hyphen (-starts_at) to reverse the order

Get a single Event Period

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/check_ins/v2/event_times/1/event_period/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "EventPeriod",
    "id": "primary_key",
    "attributes": {
      "created_at": "2000-01-01T12:00:00Z",
      "ends_at": "2000-01-01T12:00:00Z",
      "guest_count": 1,
      "regular_count": 1,
      "starts_at": "2000-01-01T12:00:00Z",
      "updated_at": "2000-01-01T12:00:00Z",
      "volunteer_count": 1
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/check_ins/v2/event_times/1/event_period/1

URL Parameters

Parameter Value Description
include event include associated event
include event_times include associated event_times

Associations for an Event Period

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
check_ins https://api.planningcenteronline.com/check_ins/v2/event_times/1/event_period/1/check_ins CheckIn
event https://api.planningcenteronline.com/check_ins/v2/event_times/1/event_period/1/event Event
event_times https://api.planningcenteronline.com/check_ins/v2/event_times/1/event_period/1/event_times EventTime
location_event_periods https://api.planningcenteronline.com/check_ins/v2/event_times/1/event_period/1/location_event_periods LocationEventPeriod

EventTimes

A time that someone may check in. Times are copied from session to session.

List Event Times

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/check_ins/v2/event_times"

HTTP Request

GET https://api.planningcenteronline.com/check_ins/v2/event_times

URL Parameters

Parameter Value Description
include event_period include associated event_period
include event include associated event
include headcounts include associated headcounts
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)
order starts_at prefix with a hyphen (-starts_at) to reverse the order
order shows_at prefix with a hyphen (-shows_at) to reverse the order

Get a single Event Time

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/check_ins/v2/event_times/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "EventTime",
    "id": "primary_key",
    "attributes": {
      "created_at": "2000-01-01T12:00:00Z",
      "guest_count": 1,
      "hides_at": "2000-01-01T12:00:00Z",
      "regular_count": 1,
      "shows_at": "2000-01-01T12:00:00Z",
      "starts_at": "2000-01-01T12:00:00Z",
      "total_count": "unknown",
      "updated_at": "2000-01-01T12:00:00Z",
      "volunteer_count": 1
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/check_ins/v2/event_times/1

URL Parameters

Parameter Value Description
include event_period include associated event_period
include event include associated event
include headcounts include associated headcounts

Associations for an Event Time

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
check_ins https://api.planningcenteronline.com/check_ins/v2/event_times/1/check_ins CheckIn
event https://api.planningcenteronline.com/check_ins/v2/event_times/1/event Event
event_period https://api.planningcenteronline.com/check_ins/v2/event_times/1/event_period EventPeriod
headcounts https://api.planningcenteronline.com/check_ins/v2/event_times/1/headcounts Headcount
location_event_times https://api.planningcenteronline.com/check_ins/v2/event_times/1/location_event_times LocationEventTime

Headcounts

A tally of attendees for a given event time and attendance type. If one does not exist, the count may have been zero.

List Headcounts

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/check_ins/v2/headcounts"

HTTP Request

GET https://api.planningcenteronline.com/check_ins/v2/headcounts

URL Parameters

Parameter Value Description
include event_time include associated event_time
include attendance_type include associated attendance_type
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Headcount

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/check_ins/v2/headcounts/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "Headcount",
    "id": "primary_key",
    "attributes": {
      "created_at": "2000-01-01T12:00:00Z",
      "total": 1,
      "updated_at": "2000-01-01T12:00:00Z"
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/check_ins/v2/headcounts/1

URL Parameters

Parameter Value Description
include event_time include associated event_time
include attendance_type include associated attendance_type

Associations for a Headcount

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
attendance_type https://api.planningcenteronline.com/check_ins/v2/headcounts/1/attendance_type AttendanceType
event_time https://api.planningcenteronline.com/check_ins/v2/headcounts/1/event_time EventTime

Actions for a Headcount

You can perform the following actions on a Headcount by POSTing to the specified URL.

Action URL Description

Labels

Labels can be set to print for events (through EventLabels), locations (through LocationLabels) or options. Label type (security label / name label) is expressed with the prints_for attribute. prints_for="Person" is a name label, prints_for="Group" is a security label.

List Labels

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/check_ins/v2/labels"

HTTP Request

GET https://api.planningcenteronline.com/check_ins/v2/labels

URL Parameters

Parameter Value Description
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Label

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/check_ins/v2/labels/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "Label",
    "id": "primary_key",
    "attributes": {
      "created_at": "2000-01-01T12:00:00Z",
      "name": "string",
      "prints_for": "string",
      "roll": "string",
      "updated_at": "2000-01-01T12:00:00Z",
      "xml": "string"
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/check_ins/v2/labels/1

URL Parameters

none

Associations for a Label

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
event_labels https://api.planningcenteronline.com/check_ins/v2/labels/1/event_labels EventLabel
location_labels https://api.planningcenteronline.com/check_ins/v2/labels/1/location_labels LocationLabel

Locations

A place where people may check in to for a given event. Some locations have kind="Folder", which means that people can’t check-in here, but this location contains other locations. You can get its contents from the locations attribute. You can get a location’s parent folder from the parent attribute. (If it’s not in a folder, parent will be empty.)

List Locations

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/check_ins/v2/events/1/locations"

HTTP Request

GET https://api.planningcenteronline.com/check_ins/v2/events/1/locations

URL Parameters

Parameter Value Description
include parent include associated parent
include event include associated event
include locations include associated locations
include options include associated options
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)
order kind prefix with a hyphen (-kind) to reverse the order
order name prefix with a hyphen (-name) to reverse the order

Get a single Location

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/check_ins/v2/events/1/locations/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "Location",
    "id": "primary_key",
    "attributes": {
      "age_max_in_months": 1,
      "age_min_in_months": 1,
      "age_on": "2000-01-01",
      "age_range_by": "string",
      "child_or_adult": "string",
      "created_at": "2000-01-01T12:00:00Z",
      "effective_date": "2000-01-01",
      "gender": "string",
      "grade_max": 1,
      "grade_min": 1,
      "kind": "string",
      "max_occupancy": 1,
      "name": "string",
      "opened": true,
      "position": 1,
      "questions": "string",
      "updated_at": "2000-01-01T12:00:00Z"
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/check_ins/v2/events/1/locations/1

URL Parameters

Parameter Value Description
include parent include associated parent
include event include associated event
include locations include associated locations
include options include associated options

Associations for a Location

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
check_ins https://api.planningcenteronline.com/check_ins/v2/events/1/locations/1/check_ins CheckIn
event https://api.planningcenteronline.com/check_ins/v2/events/1/locations/1/event Event
location_event_periods https://api.planningcenteronline.com/check_ins/v2/events/1/locations/1/location_event_periods LocationEventPeriod
location_event_times https://api.planningcenteronline.com/check_ins/v2/events/1/locations/1/location_event_times LocationEventTime
location_labels https://api.planningcenteronline.com/check_ins/v2/events/1/locations/1/location_labels LocationLabel
locations https://api.planningcenteronline.com/check_ins/v2/events/1/locations/1/locations Location
options https://api.planningcenteronline.com/check_ins/v2/events/1/locations/1/options Option
parent https://api.planningcenteronline.com/check_ins/v2/events/1/locations/1/parent Location

LocationEventPeriods

Counts check-ins for a location during a certain event period.

List Location Event Periods

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/check_ins/v2/events/1/locations/1/location_event_periods"

HTTP Request

GET https://api.planningcenteronline.com/check_ins/v2/events/1/locations/1/location_event_periods

URL Parameters

Parameter Value Description
include location include associated location
include event_period include associated event_period
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Location Event Period

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/check_ins/v2/events/1/locations/1/location_event_periods/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "LocationEventPeriod",
    "id": "primary_key",
    "attributes": {
      "created_at": "2000-01-01T12:00:00Z",
      "guest_count": 1,
      "regular_count": 1,
      "updated_at": "2000-01-01T12:00:00Z",
      "volunteer_count": 1
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/check_ins/v2/events/1/locations/1/location_event_periods/1

URL Parameters

Parameter Value Description
include location include associated location
include event_period include associated event_period

Associations for a Location Event Period

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
check_ins https://api.planningcenteronline.com/check_ins/v2/events/1/locations/1/location_event_periods/1/check_ins CheckIn
event_period https://api.planningcenteronline.com/check_ins/v2/events/1/locations/1/location_event_periods/1/event_period EventPeriod
location https://api.planningcenteronline.com/check_ins/v2/events/1/locations/1/location_event_periods/1/location Location

LocationEventTimes

Counts check-ins for a location for a given event time. This is useful for checking occupancy.

List Location Event Times

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/check_ins/v2/event_times/1/location_event_times"

HTTP Request

GET https://api.planningcenteronline.com/check_ins/v2/event_times/1/location_event_times

URL Parameters

Parameter Value Description
include location include associated location
include event_time include associated event_time
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Location Event Time

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/check_ins/v2/event_times/1/location_event_times/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "LocationEventTime",
    "id": "primary_key",
    "attributes": {
      "created_at": "2000-01-01T12:00:00Z",
      "guest_count": 1,
      "regular_count": 1,
      "updated_at": "2000-01-01T12:00:00Z",
      "volunteer_count": 1
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/check_ins/v2/event_times/1/location_event_times/1

URL Parameters

Parameter Value Description
include location include associated location
include event_time include associated event_time

Associations for a Location Event Time

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
check_ins https://api.planningcenteronline.com/check_ins/v2/event_times/1/location_event_times/1/check_ins CheckIn
event_time https://api.planningcenteronline.com/check_ins/v2/event_times/1/location_event_times/1/event_time EventTime
location https://api.planningcenteronline.com/check_ins/v2/event_times/1/location_event_times/1/location Location

LocationLabels

Says how many of a given label to print for this location and whether to print it for regulars, guests, and/or volunteers.

List Location Labels

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/check_ins/v2/labels/1/location_labels"

HTTP Request

GET https://api.planningcenteronline.com/check_ins/v2/labels/1/location_labels

URL Parameters

Parameter Value Description
include location include associated location
include label include associated label
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Location Label

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/check_ins/v2/labels/1/location_labels/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "LocationLabel",
    "id": "primary_key",
    "attributes": {
      "created_at": "2000-01-01T12:00:00Z",
      "for_guest": true,
      "for_regular": true,
      "for_volunteer": true,
      "quantity": 1,
      "updated_at": "2000-01-01T12:00:00Z"
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/check_ins/v2/labels/1/location_labels/1

URL Parameters

Parameter Value Description
include location include associated location
include label include associated label

Associations for a Location Label

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
label https://api.planningcenteronline.com/check_ins/v2/labels/1/location_labels/1/label Label
location https://api.planningcenteronline.com/check_ins/v2/labels/1/location_labels/1/location Location

Options

An option which an attendee may select when checking in.

Options may have extra labels associated with them, denoted by label and quantity.

List Options

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/check_ins/v2/check_ins/1/options"

HTTP Request

GET https://api.planningcenteronline.com/check_ins/v2/check_ins/1/options

URL Parameters

Parameter Value Description
include location include associated location
include check_ins include associated check_ins
include label include associated label
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Option

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/check_ins/v2/check_ins/1/options/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "Option",
    "id": "primary_key",
    "attributes": {
      "body": "string",
      "created_at": "2000-01-01T12:00:00Z",
      "quantity": 1,
      "updated_at": "2000-01-01T12:00:00Z"
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/check_ins/v2/check_ins/1/options/1

URL Parameters

Parameter Value Description
include location include associated location
include check_ins include associated check_ins
include label include associated label

Associations for an Option

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
label https://api.planningcenteronline.com/check_ins/v2/check_ins/1/options/1/label Label

Organizations

An organization which has people and events. This contains its date format & time zone preferences.

Get a single Organization

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/check_ins/v2"

The above command returns JSON structured like this:

{
  "data": {
    "type": "Organization",
    "id": "primary_key",
    "attributes": {
      "avatar_url": "string",
      "created_at": "2000-01-01T12:00:00Z",
      "daily_check_ins": 1,
      "date_format_pattern": "unknown",
      "name": "string",
      "time_zone": "string",
      "time_zone_olson": "unknown",
      "updated_at": "2000-01-01T12:00:00Z"
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/check_ins/v2

URL Parameters

none

Associations for an Organization

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
check_ins https://api.planningcenteronline.com/check_ins/v2/check_ins CheckIn
event_times https://api.planningcenteronline.com/check_ins/v2/event_times EventTime
events https://api.planningcenteronline.com/check_ins/v2/events Event
headcounts https://api.planningcenteronline.com/check_ins/v2/headcounts Headcount
labels https://api.planningcenteronline.com/check_ins/v2/labels Label
passes https://api.planningcenteronline.com/check_ins/v2/passes Pass
people https://api.planningcenteronline.com/check_ins/v2/people Person
stations https://api.planningcenteronline.com/check_ins/v2/stations Station
themes https://api.planningcenteronline.com/check_ins/v2/themes Theme

Passes

Enables quick lookup of a person via barcode reader.

Attribute Info

kind

Possible values: barcode or pkpass.

Using the pkpass value creates a mobile pass and sends an email to the associated person.

List Passes

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/check_ins/v2/passes"

HTTP Request

GET https://api.planningcenteronline.com/check_ins/v2/passes

URL Parameters

Parameter Value Description
where[code] string query on a specific code
include person include associated person
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Pass

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/check_ins/v2/passes/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "Pass",
    "id": "primary_key",
    "attributes": {
      "code": "string",
      "created_at": "2000-01-01T12:00:00Z",
      "kind": "string",
      "updated_at": "2000-01-01T12:00:00Z"
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/check_ins/v2/passes/1

URL Parameters

Parameter Value Description
include person include associated person

Associations for a Pass

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
person https://api.planningcenteronline.com/check_ins/v2/passes/1/person Person

Create a new Pass

# to create a record...
curl -v -u token:secret -X POST -d '{"data":{"type":"Pass","attributes":{...}}}' "https://api.planningcenteronline.com/check_ins/v2/people/1/passes"

HTTP Request

POST https://api.planningcenteronline.com/check_ins/v2/people/1/passes

Resource Attributes

Attribute Type
code string
kind string

Delete a Pass

# to delete a record...
curl -v -u token:secret -X DELETE "https://api.planningcenteronline.com/check_ins/v2/passes/1"

HTTP Request

DELETE https://api.planningcenteronline.com/check_ins/v2/passes/1

People

An attendee, volunteer or administrator.

Usually, a person who checked in will be present as a Person. In some cases, they may not be present: - The person was manually deleted from the admin interface - The check-in was created as a “One-time guest” (which doesn’t create a corresponding person record)

List People

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/check_ins/v2/people"

HTTP Request

GET https://api.planningcenteronline.com/check_ins/v2/people

URL Parameters

Parameter Value Description
include organization include associated organization
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Person

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/check_ins/v2/people/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "Person",
    "id": "primary_key",
    "attributes": {
      "addresses": "unknown",
      "avatar_url": "string",
      "birthdate": "2000-01-01",
      "check_in_count": 1,
      "child": true,
      "created_at": "2000-01-01T12:00:00Z",
      "email_addresses": "unknown",
      "first_name": "string",
      "gender": "string",
      "grade": 1,
      "headcounter": true,
      "last_name": "string",
      "medical_notes": "string",
      "middle_name": "string",
      "name_prefix": "string",
      "name_suffix": "string",
      "permission": "string",
      "phone_numbers": "unknown",
      "updated_at": "2000-01-01T12:00:00Z"
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/check_ins/v2/people/1

URL Parameters

Parameter Value Description
include organization include associated organization

Associations for a Person

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
check_ins https://api.planningcenteronline.com/check_ins/v2/people/1/check_ins CheckIn
organization https://api.planningcenteronline.com/check_ins/v2/people/1/organization Organization
passes https://api.planningcenteronline.com/check_ins/v2/people/1/passes Pass
person_events https://api.planningcenteronline.com/check_ins/v2/people/1/person_events PersonEvent

PersonEvents

Counts a person’s attendence for a given event.

List Person Events

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/check_ins/v2/events/1/person_events"

HTTP Request

GET https://api.planningcenteronline.com/check_ins/v2/events/1/person_events

URL Parameters

Parameter Value Description
include person include associated person
include event include associated event
include first_check_in include associated first_check_in
include last_check_in include associated last_check_in
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Person Event

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/check_ins/v2/events/1/person_events/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "PersonEvent",
    "id": "primary_key",
    "attributes": {
      "check_in_count": 1,
      "created_at": "2000-01-01T12:00:00Z",
      "updated_at": "2000-01-01T12:00:00Z"
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/check_ins/v2/events/1/person_events/1

URL Parameters

Parameter Value Description
include person include associated person
include event include associated event
include first_check_in include associated first_check_in
include last_check_in include associated last_check_in

Associations for a Person Event

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
event https://api.planningcenteronline.com/check_ins/v2/events/1/person_events/1/event Event
first_check_in https://api.planningcenteronline.com/check_ins/v2/events/1/person_events/1/first_check_in CheckIn
last_check_in https://api.planningcenteronline.com/check_ins/v2/events/1/person_events/1/last_check_in CheckIn
person https://api.planningcenteronline.com/check_ins/v2/events/1/person_events/1/person Person

Stations

A device where people can be checked in. A device may also be connected to a printer and print labels for itself or other stations.

List Stations

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/check_ins/v2/stations"

HTTP Request

GET https://api.planningcenteronline.com/check_ins/v2/stations

URL Parameters

Parameter Value Description
include theme include associated theme
include event include associated event
include location include associated location
include print_station include associated print_station
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Station

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/check_ins/v2/stations/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "Station",
    "id": "primary_key",
    "attributes": {
      "created_at": "2000-01-01T12:00:00Z",
      "input_type": 1,
      "input_type_options": 1,
      "mode": 1,
      "name": "string",
      "online": "unknown",
      "timeout_seconds": 1,
      "updated_at": "2000-01-01T12:00:00Z"
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/check_ins/v2/stations/1

URL Parameters

Parameter Value Description
include theme include associated theme
include event include associated event
include location include associated location
include print_station include associated print_station

Associations for a Station

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
check_in_groups https://api.planningcenteronline.com/check_ins/v2/stations/1/check_in_groups CheckInGroup
checked_in_at_check_ins https://api.planningcenteronline.com/check_ins/v2/stations/1/checked_in_at_check_ins CheckIn
event https://api.planningcenteronline.com/check_ins/v2/stations/1/event Event
location https://api.planningcenteronline.com/check_ins/v2/stations/1/location Location
print_station https://api.planningcenteronline.com/check_ins/v2/stations/1/print_station Station
theme https://api.planningcenteronline.com/check_ins/v2/stations/1/theme Theme

Themes

A custom style which may be applied to stations.

List Themes

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/check_ins/v2/themes"

HTTP Request

GET https://api.planningcenteronline.com/check_ins/v2/themes

URL Parameters

Parameter Value Description
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Theme

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/check_ins/v2/themes/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "Theme",
    "id": "primary_key",
    "attributes": {
      "color": "string",
      "created_at": "2000-01-01T12:00:00Z",
      "image": "string",
      "image_thumbnail": "unknown",
      "name": "string",
      "text_color": "string",
      "updated_at": "2000-01-01T12:00:00Z"
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/check_ins/v2/themes/1

URL Parameters

none

PCO Giving (BETA)

PCO Giving tracks all donations for your church, allowing people to give a one-time gift or set up recurring donations.

Batches

Attribute Info

status

One of in_progress or committed.

List Batches

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/giving/v2/batches"

HTTP Request

GET https://api.planningcenteronline.com/giving/v2/batches

URL Parameters

Parameter Value Description
include owner include associated owner
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Batch

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/giving/v2/batches/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "Batch",
    "id": "1",
    "attributes": {
      "created_at": "2017-09-14T16:21:20Z",
      "status": "in_progress",
      "total_cents": 150000,
      "total_currency": "USD",
      "updated_at": "2017-09-14T16:21:20Z"
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/giving/v2/batches/1

URL Parameters

Parameter Value Description
include owner include associated owner

Associations for a Batch

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
batch_group https://api.planningcenteronline.com/giving/v2/batches/1/batch_group BatchGroup
owner https://api.planningcenteronline.com/giving/v2/batches/1/owner Person

BatchGroups

List Batch Groups

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/giving/v2/batch_groups"

HTTP Request

GET https://api.planningcenteronline.com/giving/v2/batch_groups

URL Parameters

Parameter Value Description
include owner include associated owner
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Batch Group

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/giving/v2/batch_groups/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "BatchGroup",
    "id": "1",
    "attributes": {
      "committed": true,
      "created_at": "2017-09-14T16:21:20Z",
      "total_cents": 350000,
      "total_currency": "USD",
      "updated_at": "2017-09-14T16:21:20Z"
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/giving/v2/batch_groups/1

URL Parameters

Parameter Value Description
include owner include associated owner

Associations for a Batch Group

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
batches https://api.planningcenteronline.com/giving/v2/batch_groups/1/batches Batch
owner https://api.planningcenteronline.com/giving/v2/batch_groups/1/owner Person

Designations

List Designations

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/giving/v2/donations/1/designations"

HTTP Request

GET https://api.planningcenteronline.com/giving/v2/donations/1/designations

URL Parameters

Parameter Value Description
include fund include associated fund
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Designation

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/giving/v2/donations/1/designations/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "Designation",
    "id": "2345",
    "attributes": {
      "amount_cents": 1000,
      "amount_currency": "USD"
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/giving/v2/donations/1/designations/1

URL Parameters

Parameter Value Description
include fund include associated fund

Associations for a Designation

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
fund https://api.planningcenteronline.com/giving/v2/donations/1/designations/1/fund Fund

Donations

Attribute Info

payment_status

One of pending, succeeded, or failed.

payment_method

One of ach, cash, check, or card.

payment_method_sub

For cards only. One of credit, debit, prepaid, or unknown. Will be null for other payment method types.

Relationships

Name Type To Many Description
person Person false

List Donations

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/giving/v2/donations"

HTTP Request

GET https://api.planningcenteronline.com/giving/v2/donations

URL Parameters

Parameter Value Description
include designations include associated designations
include labels include associated labels
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Donation

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/giving/v2/donations/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "Donation",
    "id": "1",
    "attributes": {
      "amount_cents": 2000,
      "amount_currency": "USD",
      "created_at": "2017-09-14T16:21:20Z",
      "fee_cents": -88,
      "fee_currency": "USD",
      "payment_brand": "Visa",
      "payment_last4": "4242",
      "payment_method": "card",
      "payment_method_sub": "debit",
      "payment_status": "succeeded",
      "updated_at": "2017-09-14T16:21:20Z"
    },
    "relationships": {
      "person": {
        "data": {
          "type": "Person",
          "id": "123"
        }
      }
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/giving/v2/donations/1

URL Parameters

Parameter Value Description
include designations include associated designations
include labels include associated labels

Associations for a Donation

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
designations https://api.planningcenteronline.com/giving/v2/donations/1/designations Designation
labels https://api.planningcenteronline.com/giving/v2/donations/1/labels Label

Funds

Attribute Info

color

Hex color code.

visibility

One of everywhere, admin_only, or nowhere.

List Funds

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/giving/v2/funds"

HTTP Request

GET https://api.planningcenteronline.com/giving/v2/funds

URL Parameters

Parameter Value Description
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Fund

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/giving/v2/funds/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "Fund",
    "id": "1",
    "attributes": {
      "color": "#9ccc79",
      "created_at": "2017-09-14T16:21:20Z",
      "description": "These funds are used to support our missionary efforts here in the US.",
      "ledger_code": "dm-22314",
      "name": "Domestic Missions",
      "updated_at": "2017-09-14T16:21:20Z",
      "visibility": "everywhere"
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/giving/v2/funds/1

URL Parameters

none

Labels

List Labels

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/giving/v2/labels"

HTTP Request

GET https://api.planningcenteronline.com/giving/v2/labels

URL Parameters

Parameter Value Description
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Organizations

Get a single Organization

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/giving/v2"

The above command returns JSON structured like this:

{
  "data": {
    "type": "Organization",
    "id": "33445",
    "attributes": {
      "name": "First Ballard Church"
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/giving/v2

URL Parameters

none

Associations for an Organization

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
batch_groups https://api.planningcenteronline.com/giving/v2/batch_groups BatchGroup
batches https://api.planningcenteronline.com/giving/v2/batches Batch
donations https://api.planningcenteronline.com/giving/v2/donations Donation
funds https://api.planningcenteronline.com/giving/v2/funds Fund
labels https://api.planningcenteronline.com/giving/v2/labels Label
people https://api.planningcenteronline.com/giving/v2/people Person
recurring_donations https://api.planningcenteronline.com/giving/v2/recurring_donations RecurringDonation

PaymentMethods

Attribute Info

verified

For bank accounts only. Will be null for cards.

method_type

Either card or bank_account.

method_subtype

For cards, either credit or debit. For bank accounts, either checking or savings.

expiration

For cards only. String representation of the expiration date in the MM/YYYY form (without leading zeros). Will be null for bank accounts.

List Payment Methods

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/giving/v2/people/1/payment_methods"

HTTP Request

GET https://api.planningcenteronline.com/giving/v2/people/1/payment_methods

URL Parameters

Parameter Value Description
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Payment Method

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/giving/v2/people/1/payment_methods/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "PaymentMethod",
    "id": "1",
    "attributes": {
      "brand": "Visa",
      "created_at": "2017-09-14T16:21:20Z",
      "expiration": "8/2018",
      "last4": "4242",
      "method_subtype": "credit",
      "method_type": "card",
      "updated_at": "2017-09-14T16:21:20Z",
      "verified": null
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/giving/v2/people/1/payment_methods/1

URL Parameters

none

Associations for a Payment Method

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
recurring_donations https://api.planningcenteronline.com/giving/v2/people/1/payment_methods/1/recurring_donations RecurringDonation

People

Attribute Info

permissions

Either administrator or null.

List People

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/giving/v2/people"

HTTP Request

GET https://api.planningcenteronline.com/giving/v2/people

URL Parameters

Parameter Value Description
where[first_name] string query on a specific first_name
where[last_name] string query on a specific last_name
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Person

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/giving/v2/people/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "Person",
    "id": "1",
    "attributes": {
      "addresses": [
        {
          "street": "123 Fake Street",
          "city": "Springfield",
          "state": "CA",
          "zip": "40069",
          "location": "Home"
        }
      ],
      "email_addresses": [
        {
          "address": "pico@pco.bz",
          "location": "Home"
        }
      ],
      "first_name": "PiCO",
      "last_name": "Das Robot",
      "permissions": "administrator",
      "phone_numbers": [
        {
          "number": "(859) 555-4444",
          "carrier": null,
          "location": "Home"
        }
      ]
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/giving/v2/people/1

URL Parameters

none

Associations for a Person

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
batch_groups https://api.planningcenteronline.com/giving/v2/people/1/batch_groups BatchGroup
batches https://api.planningcenteronline.com/giving/v2/people/1/batches Batch
donations https://api.planningcenteronline.com/giving/v2/people/1/donations Donation
payment_methods https://api.planningcenteronline.com/giving/v2/people/1/payment_methods PaymentMethod
recurring_donations https://api.planningcenteronline.com/giving/v2/people/1/recurring_donations RecurringDonation

RecurringDonations

Attribute Info

status

One of active, on hold indefinitely or on hold until {date}.

schedule

JSON representation of the billing schedule. See the repeatable Ruby gem for more details on the structure and meaning.

List Recurring Donations

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/giving/v2/recurring_donations"

HTTP Request

GET https://api.planningcenteronline.com/giving/v2/recurring_donations

URL Parameters

Parameter Value Description
include designations include associated designations
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Recurring Donation

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/giving/v2/recurring_donations/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "RecurringDonation",
    "id": "1",
    "attributes": {
      "amount_cents": 15000,
      "amount_currency": "USD",
      "created_at": "2017-09-14T16:21:20Z",
      "last_donation_received_at": "2017-09-13T00:00:00Z",
      "next_occurrence": "2017-10-13T00:00:00Z",
      "schedule": {
        "day_in_month": {
          "day": 13
        }
      },
      "status": "active",
      "updated_at": "2017-09-14T16:21:20Z"
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/giving/v2/recurring_donations/1

URL Parameters

Parameter Value Description
include designations include associated designations

Associations for a Recurring Donation

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
designations https://api.planningcenteronline.com/giving/v2/recurring_donations/1/designations RecurringDonationDesignation
payment_method https://api.planningcenteronline.com/giving/v2/recurring_donations/1/payment_method PaymentMethod

RecurringDonationDesignations

List Recurring Donation Designations

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/giving/v2/recurring_donations/1/designations"

HTTP Request

GET https://api.planningcenteronline.com/giving/v2/recurring_donations/1/designations

URL Parameters

Parameter Value Description
include fund include associated fund
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Recurring Donation Designation

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/giving/v2/recurring_donations/1/designations/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "RecurringDonationDesignation",
    "id": "1",
    "attributes": {
      "amount_cents": 500,
      "amount_currency": "USD"
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/giving/v2/recurring_donations/1/designations/1

URL Parameters

Parameter Value Description
include fund include associated fund

Associations for a Recurring Donation Designation

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
fund https://api.planningcenteronline.com/giving/v2/recurring_donations/1/designations/1/fund Fund

PCO People

PCO People helps you manage contact data, membership info, and everything you need to know about your people with confidence.

Addresses

An address represents a physical and/or mailing address for a person.

Relationships

Name Type To Many Description
person Person false

List Addresses

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/addresses"

HTTP Request

GET https://api.planningcenteronline.com/people/v2/addresses

URL Parameters

Parameter Value Description
where[city] string query on a specific city
where[state] string query on a specific state
where[zip] string query on a specific zip
where[street] string query on a specific street
where[location] string query on a specific location
where[primary] boolean query on a specific primary
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)
order city prefix with a hyphen (-city) to reverse the order
order state prefix with a hyphen (-state) to reverse the order
order zip prefix with a hyphen (-zip) to reverse the order
order street prefix with a hyphen (-street) to reverse the order
order location prefix with a hyphen (-location) to reverse the order
order primary prefix with a hyphen (-primary) to reverse the order

Get a single Address

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/addresses/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "Address",
    "id": "primary_key",
    "attributes": {
      "city": "string",
      "location": "string",
      "primary": true,
      "state": "string",
      "street": "string",
      "zip": "string"
    },
    "relationships": {
      "person": {
        "data": {
          "type": "Person",
          "id": "123"
        }
      }
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/people/v2/addresses/1

URL Parameters

none

Create a new Address

# to create a record...
curl -v -u token:secret -X POST -d '{"data":{"type":"Address","attributes":{...}}}' "https://api.planningcenteronline.com/people/v2/people/1/addresses"

HTTP Request

POST https://api.planningcenteronline.com/people/v2/people/1/addresses

Resource Attributes

Attribute Type
city string
state string
zip string
street string
location string
primary boolean

Update an existing Address

# to update a record...
curl -v -u token:secret -X PATCH -d '{"data":{"type":"Address","id":"1","attributes":{...}}}' "https://api.planningcenteronline.com/people/v2/addresses/1"

HTTP Request

PATCH https://api.planningcenteronline.com/people/v2/addresses/1

Resource Attributes

Attribute Type
city string
state string
zip string
street string
location string
primary boolean

Delete an Address

# to delete a record...
curl -v -u token:secret -X DELETE "https://api.planningcenteronline.com/people/v2/addresses/1"

HTTP Request

DELETE https://api.planningcenteronline.com/people/v2/addresses/1

Apps

An app is one of the handful of apps that PCO offers that organizations can subscribe to, e.g. Services, Registrations, etc.

List Apps

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/apps"

HTTP Request

GET https://api.planningcenteronline.com/people/v2/apps

URL Parameters

Parameter Value Description
where[name] string query on a specific name
where[url] string query on a specific url
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)
order name prefix with a hyphen (-name) to reverse the order
order url prefix with a hyphen (-url) to reverse the order

Get a single App

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/apps/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "App",
    "id": "primary_key",
    "attributes": {
      "name": "string",
      "url": "string"
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/people/v2/apps/1

URL Parameters

none

Campuses

A Campus is a location belonging to an Organization

List Campuses

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/campuses"

HTTP Request

GET https://api.planningcenteronline.com/people/v2/campuses

URL Parameters

Parameter Value Description
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Campus

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/campuses/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "Campus",
    "id": "primary_key",
    "attributes": {
      "latitude": "unknown",
      "longitude": "unknown",
      "name": "string"
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/people/v2/campuses/1

URL Parameters

none

Carriers

List Carriers

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/carriers"

HTTP Request

GET https://api.planningcenteronline.com/people/v2/carriers

URL Parameters

Parameter Value Description
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)
order name prefix with a hyphen (-name) to reverse the order
order international prefix with a hyphen (-international) to reverse the order

Conditions

A condition is an individual criterion used by a List Rule.

List Conditions

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/lists/1/rules/1/conditions"

HTTP Request

GET https://api.planningcenteronline.com/people/v2/lists/1/rules/1/conditions

URL Parameters

Parameter Value Description
where[application] string query on a specific application
where[definition_class] string query on a specific definition_class
where[comparison] string query on a specific comparison
where[settings] string query on a specific settings
where[definition_identifier] string query on a specific definition_identifier
where[description] string query on a specific description
where[created_at] date_time query on a specific created_at
where[updated_at] date_time query on a specific updated_at
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)
order application prefix with a hyphen (-application) to reverse the order
order definition_class prefix with a hyphen (-definition_class) to reverse the order
order comparison prefix with a hyphen (-comparison) to reverse the order
order settings prefix with a hyphen (-settings) to reverse the order
order definition_identifier prefix with a hyphen (-definition_identifier) to reverse the order
order description prefix with a hyphen (-description) to reverse the order
order created_at prefix with a hyphen (-created_at) to reverse the order
order updated_at prefix with a hyphen (-updated_at) to reverse the order

Get a single Condition

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/lists/1/rules/1/conditions/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "Condition",
    "id": "primary_key",
    "attributes": {
      "application": "string",
      "comparison": "string",
      "created_at": "2000-01-01T12:00:00Z",
      "definition_class": "string",
      "definition_identifier": "string",
      "description": "string",
      "settings": "string",
      "updated_at": "2000-01-01T12:00:00Z"
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/people/v2/lists/1/rules/1/conditions/1

URL Parameters

none

Associations for a Condition

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint

ConnectedPeople

A Connected Person is an account from a different organization linked to an account in this organization.

List Connected People

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/people/1/connected_people"

HTTP Request

GET https://api.planningcenteronline.com/people/v2/people/1/connected_people

URL Parameters

Parameter Value Description
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Connected Person

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/people/1/connected_people/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "ConnectedPerson",
    "id": "1",
    "attributes": {
      "first_name": "PiCO",
      "gender": "M",
      "given_name": "Picardo",
      "last_name": "Das Robot",
      "middle_name": "Ross",
      "nickname": "P Riddy",
      "organization_id": 1,
      "organization_name": "Ministry Centered Technologies",
      "type": "ConnectedPerson"
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/people/v2/people/1/connected_people/1

URL Parameters

none

Emails

An email represents an email address and location.

Relationships

Name Type To Many Description
person Person false

List Emails

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/emails"

HTTP Request

GET https://api.planningcenteronline.com/people/v2/emails

URL Parameters

Parameter Value Description
where[address] string query on a specific address
where[location] string query on a specific location
where[primary] boolean query on a specific primary
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)
order address prefix with a hyphen (-address) to reverse the order
order location prefix with a hyphen (-location) to reverse the order
order primary prefix with a hyphen (-primary) to reverse the order

Get a single Email

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/emails/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "Email",
    "id": "primary_key",
    "attributes": {
      "address": "string",
      "location": "string",
      "primary": true
    },
    "relationships": {
      "person": {
        "data": {
          "type": "Person",
          "id": "123"
        }
      }
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/people/v2/emails/1

URL Parameters

none

Associations for an Email

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
person https://api.planningcenteronline.com/people/v2/emails/1/person Person

Create a new Email

# to create a record...
curl -v -u token:secret -X POST -d '{"data":{"type":"Email","attributes":{...}}}' "https://api.planningcenteronline.com/people/v2/people/1/emails"

HTTP Request

POST https://api.planningcenteronline.com/people/v2/people/1/emails

Resource Attributes

Attribute Type
address string
location string
primary boolean

Update an existing Email

# to update a record...
curl -v -u token:secret -X PATCH -d '{"data":{"type":"Email","id":"1","attributes":{...}}}' "https://api.planningcenteronline.com/people/v2/emails/1"

HTTP Request

PATCH https://api.planningcenteronline.com/people/v2/emails/1

Resource Attributes

Attribute Type
address string
location string
primary boolean

Delete an Email

# to delete a record...
curl -v -u token:secret -X DELETE "https://api.planningcenteronline.com/people/v2/emails/1"

HTTP Request

DELETE https://api.planningcenteronline.com/people/v2/emails/1

FieldData

A field datum is an individual piece of data for a custom field.

Relationships

Name Type To Many Description
field_definition FieldDefinition false

List Field Data

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/people/1/field_data"

HTTP Request

GET https://api.planningcenteronline.com/people/v2/people/1/field_data

URL Parameters

Parameter Value Description
where[value] string query on a specific value
where[file] string query on a specific file
where[file_size] integer query on a specific file_size
where[file_content_type] string query on a specific file_content_type
where[file_name] graph/type_annotation/unknowntype_annotation_ query on a specific file_name
where[field_definition_id] integer query on a specific field_definition_id
include field_definition include associated field_definition
include field_option include associated field_option
include tab include associated tab
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)
order value prefix with a hyphen (-value) to reverse the order
order file prefix with a hyphen (-file) to reverse the order
order file_size prefix with a hyphen (-file_size) to reverse the order
order file_content_type prefix with a hyphen (-file_content_type) to reverse the order
order file_name prefix with a hyphen (-file_name) to reverse the order

Get a single Field Datum

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/people/1/field_data/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "FieldDatum",
    "id": "primary_key",
    "attributes": {
      "file": "string",
      "file_content_type": "string",
      "file_name": "unknown",
      "file_size": 1,
      "value": "string"
    },
    "relationships": {
      "field_definition": {
        "data": {
          "type": "FieldDefinition",
          "id": "123"
        }
      }
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/people/v2/people/1/field_data/1

URL Parameters

Parameter Value Description
include field_definition include associated field_definition
include field_option include associated field_option
include tab include associated tab

Associations for a Field Datum

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
field_definition https://api.planningcenteronline.com/people/v2/people/1/field_data/1/field_definition FieldDefinition
field_option https://api.planningcenteronline.com/people/v2/people/1/field_data/1/field_option FieldOption
tab https://api.planningcenteronline.com/people/v2/people/1/field_data/1/tab Tab

Create a new Field Datum

# to create a record...
curl -v -u token:secret -X POST -d '{"data":{"type":"FieldDatum","attributes":{...}}}' "https://api.planningcenteronline.com/people/v2/people/1/field_data"

HTTP Request

POST https://api.planningcenteronline.com/people/v2/people/1/field_data

Resource Attributes

Attribute Type
value string
field_definition_id integer

Update an existing Field Datum

# to update a record...
curl -v -u token:secret -X PATCH -d '{"data":{"type":"FieldDatum","id":"1","attributes":{...}}}' "https://api.planningcenteronline.com/people/v2/people/1/field_data/1"

HTTP Request

PATCH https://api.planningcenteronline.com/people/v2/people/1/field_data/1

Resource Attributes

Attribute Type
value string
field_definition_id integer

Delete a Field Datum

# to delete a record...
curl -v -u token:secret -X DELETE "https://api.planningcenteronline.com/people/v2/people/1/field_data/1"

HTTP Request

DELETE https://api.planningcenteronline.com/people/v2/people/1/field_data/1

FieldDefinitions

A field definition represents a custom field – its name, data type, etc.

List Field Definitions

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/field_definitions"

HTTP Request

GET https://api.planningcenteronline.com/people/v2/field_definitions

URL Parameters

Parameter Value Description
where[data_type] string query on a specific data_type
where[name] string query on a specific name
where[sequence] integer query on a specific sequence
where[slug] string query on a specific slug
where[config] string query on a specific config
where[deleted_at] date_time query on a specific deleted_at
filter include_deleted By default, deleted fields are not included. Pass filter=include_deleted to include them.
include field_options include associated field_options
include tab include associated tab
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)
order data_type prefix with a hyphen (-data_type) to reverse the order
order name prefix with a hyphen (-name) to reverse the order
order sequence prefix with a hyphen (-sequence) to reverse the order
order slug prefix with a hyphen (-slug) to reverse the order
order config prefix with a hyphen (-config) to reverse the order
order deleted_at prefix with a hyphen (-deleted_at) to reverse the order

To exclude deleted field definitions, query with where[deleted_at]= (blank value).

Get a single Field Definition

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/field_definitions/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "FieldDefinition",
    "id": "primary_key",
    "attributes": {
      "config": "string",
      "data_type": "string",
      "deleted_at": "2000-01-01T12:00:00Z",
      "name": "string",
      "sequence": 1,
      "slug": "string"
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/people/v2/field_definitions/1

URL Parameters

Parameter Value Description
include field_options include associated field_options
include tab include associated tab

Associations for a Field Definition

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
field_options https://api.planningcenteronline.com/people/v2/field_definitions/1/field_options FieldOption
tab https://api.planningcenteronline.com/people/v2/field_definitions/1/tab Tab

Create a new Field Definition

# to create a record...
curl -v -u token:secret -X POST -d '{"data":{"type":"FieldDefinition","attributes":{...}}}' "https://api.planningcenteronline.com/people/v2/tabs/1/field_definitions"

HTTP Request

POST https://api.planningcenteronline.com/people/v2/tabs/1/field_definitions

Resource Attributes

Attribute Type
data_type string
name string
sequence integer
slug string
config string
deleted_at date_time

Update an existing Field Definition

# to update a record...
curl -v -u token:secret -X PATCH -d '{"data":{"type":"FieldDefinition","id":"1","attributes":{...}}}' "https://api.planningcenteronline.com/people/v2/field_definitions/1"

HTTP Request

PATCH https://api.planningcenteronline.com/people/v2/field_definitions/1

Resource Attributes

Attribute Type
data_type string
name string
sequence integer
slug string
config string
deleted_at date_time

Delete a Field Definition

# to delete a record...
curl -v -u token:secret -X DELETE "https://api.planningcenteronline.com/people/v2/field_definitions/1"

HTTP Request

DELETE https://api.planningcenteronline.com/people/v2/field_definitions/1

Deleting a field definition internally sets its deleted_at attribute to the current time.

FieldOptions

A field option represents an individual option for a custom field of type “select” or “checkboxes”.

List Field Options

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/field_definitions/1/field_options"

HTTP Request

GET https://api.planningcenteronline.com/people/v2/field_definitions/1/field_options

URL Parameters

Parameter Value Description
where[value] string query on a specific value
where[sequence] integer query on a specific sequence
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)
order value prefix with a hyphen (-value) to reverse the order
order sequence prefix with a hyphen (-sequence) to reverse the order

Get a single Field Option

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/field_definitions/1/field_options/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "FieldOption",
    "id": "primary_key",
    "attributes": {
      "sequence": 1,
      "value": "string"
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/people/v2/field_definitions/1/field_options/1

URL Parameters

none

Create a new Field Option

# to create a record...
curl -v -u token:secret -X POST -d '{"data":{"type":"FieldOption","attributes":{...}}}' "https://api.planningcenteronline.com/people/v2/field_definitions/1/field_options"

HTTP Request

POST https://api.planningcenteronline.com/people/v2/field_definitions/1/field_options

Resource Attributes

Attribute Type
value string
sequence integer

Update an existing Field Option

# to update a record...
curl -v -u token:secret -X PATCH -d '{"data":{"type":"FieldOption","id":"1","attributes":{...}}}' "https://api.planningcenteronline.com/people/v2/field_definitions/1/field_options/1"

HTTP Request

PATCH https://api.planningcenteronline.com/people/v2/field_definitions/1/field_options/1

Resource Attributes

Attribute Type
value string
sequence integer

Delete a Field Option

# to delete a record...
curl -v -u token:secret -X DELETE "https://api.planningcenteronline.com/people/v2/field_definitions/1/field_options/1"

HTTP Request

DELETE https://api.planningcenteronline.com/people/v2/field_definitions/1/field_options/1

Households

A household links people together and can have a primary contact. To add a person to an existing household, use the HouseholdMemberships endpoint.

List Households

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/households"

HTTP Request

GET https://api.planningcenteronline.com/people/v2/households

URL Parameters

Parameter Value Description
where[name] string query on a specific name
where[member_count] integer query on a specific member_count
where[primary_contact_name] string query on a specific primary_contact_name
where[created_at] date_time query on a specific created_at
where[updated_at] date_time query on a specific updated_at
include people include associated people
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)
order name prefix with a hyphen (-name) to reverse the order
order member_count prefix with a hyphen (-member_count) to reverse the order
order primary_contact_name prefix with a hyphen (-primary_contact_name) to reverse the order
order created_at prefix with a hyphen (-created_at) to reverse the order
order updated_at prefix with a hyphen (-updated_at) to reverse the order

Get a single Household

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/households/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "Household",
    "id": "primary_key",
    "attributes": {
      "created_at": "2000-01-01T12:00:00Z",
      "member_count": 1,
      "name": "string",
      "primary_contact_id": 1,
      "primary_contact_name": "string",
      "updated_at": "2000-01-01T12:00:00Z"
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/people/v2/households/1

URL Parameters

Parameter Value Description
include people include associated people

Associations for a Household

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
household_memberships https://api.planningcenteronline.com/people/v2/households/1/household_memberships HouseholdMembership
people https://api.planningcenteronline.com/people/v2/households/1/people Person

Create a new Household

# to create a record...
curl -v -u token:secret -X POST -d '{"data":{"type":"Household","attributes":{...}}}' "https://api.planningcenteronline.com/people/v2/households"

HTTP Request

POST https://api.planningcenteronline.com/people/v2/households

Resource Attributes

Attribute Type
name string
member_count integer
primary_contact_id integer

To create a new household, you must specify the primary contact and the people as relationships:
{"data":{"attributes":{"name":"Smith"},"relationships":{"people":{"data":[{"type":"Person","id":"1"},{"type":"Person","id":"2"}]},"primary_contact":{"data":{"type":"Person","id":"1"}}}}}

Update an existing Household

# to update a record...
curl -v -u token:secret -X PATCH -d '{"data":{"type":"Household","id":"1","attributes":{...}}}' "https://api.planningcenteronline.com/people/v2/households/1"

HTTP Request

PATCH https://api.planningcenteronline.com/people/v2/households/1

Resource Attributes

Attribute Type
name string
member_count integer
primary_contact_id integer

Delete a Household

# to delete a record...
curl -v -u token:secret -X DELETE "https://api.planningcenteronline.com/people/v2/households/1"

HTTP Request

DELETE https://api.planningcenteronline.com/people/v2/households/1

HouseholdMemberships

A household membership is the linking record between a household and a person.

Relationships

Name Type To Many Description
person Person false

List Household Memberships

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/people/1/household_memberships"

HTTP Request

GET https://api.planningcenteronline.com/people/v2/people/1/household_memberships

URL Parameters

Parameter Value Description
where[person_name] string query on a specific person_name
where[pending] boolean query on a specific pending
include person include associated person
include household include associated household
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)
order person_name prefix with a hyphen (-person_name) to reverse the order
order pending prefix with a hyphen (-pending) to reverse the order

Get a single Household Membership

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/people/1/household_memberships/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "HouseholdMembership",
    "id": "primary_key",
    "attributes": {
      "pending": true,
      "person_name": "string"
    },
    "relationships": {
      "person": {
        "data": {
          "type": "Person",
          "id": "123"
        }
      }
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/people/v2/people/1/household_memberships/1

URL Parameters

Parameter Value Description
include person include associated person
include household include associated household

Associations for a Household Membership

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
household https://api.planningcenteronline.com/people/v2/people/1/household_memberships/1/household Household
person https://api.planningcenteronline.com/people/v2/people/1/household_memberships/1/person Person

Create a new Household Membership

# to create a record...
curl -v -u token:secret -X POST -d '{"data":{"type":"HouseholdMembership","attributes":{...}}}' "https://api.planningcenteronline.com/people/v2/households/1/household_memberships"

HTTP Request

POST https://api.planningcenteronline.com/people/v2/households/1/household_memberships

Resource Attributes

Attribute Type
pending boolean

To add someone to a household, you must specify the person as a relationship:
{"data":{"attributes":{},"relationships":{"person":{"data":{"type":"Person","id":"1"}}}}}

Update an existing Household Membership

# to update a record...
curl -v -u token:secret -X PATCH -d '{"data":{"type":"HouseholdMembership","id":"1","attributes":{...}}}' "https://api.planningcenteronline.com/people/v2/people/1/household_memberships/1"

HTTP Request

PATCH https://api.planningcenteronline.com/people/v2/people/1/household_memberships/1

Resource Attributes

Attribute Type
pending boolean

Delete a Household Membership

# to delete a record...
curl -v -u token:secret -X DELETE "https://api.planningcenteronline.com/people/v2/people/1/household_memberships/1"

HTTP Request

DELETE https://api.planningcenteronline.com/people/v2/people/1/household_memberships/1

InactiveReasons

An inactive reason is a small bit of text indicating why a member is no longer active.

List Inactive Reasons

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/inactive_reasons"

HTTP Request

GET https://api.planningcenteronline.com/people/v2/inactive_reasons

URL Parameters

Parameter Value Description
where[value] string query on a specific value
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)
order value prefix with a hyphen (-value) to reverse the order

Get a single Inactive Reason

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/inactive_reasons/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "InactiveReason",
    "id": "primary_key",
    "attributes": {
      "value": "string"
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/people/v2/inactive_reasons/1

URL Parameters

none

Create a new Inactive Reason

# to create a record...
curl -v -u token:secret -X POST -d '{"data":{"type":"InactiveReason","attributes":{...}}}' "https://api.planningcenteronline.com/people/v2/inactive_reasons"

HTTP Request

POST https://api.planningcenteronline.com/people/v2/inactive_reasons

Resource Attributes

Attribute Type
value string

Update an existing Inactive Reason

# to update a record...
curl -v -u token:secret -X PATCH -d '{"data":{"type":"InactiveReason","id":"1","attributes":{...}}}' "https://api.planningcenteronline.com/people/v2/inactive_reasons/1"

HTTP Request

PATCH https://api.planningcenteronline.com/people/v2/inactive_reasons/1

Resource Attributes

Attribute Type
value string

Delete an Inactive Reason

# to delete a record...
curl -v -u token:secret -X DELETE "https://api.planningcenteronline.com/people/v2/inactive_reasons/1"

HTTP Request

DELETE https://api.planningcenteronline.com/people/v2/inactive_reasons/1

Lists

A list is a powerful tool for finding and grouping people together using any criteria imaginable.

List Lists

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/lists"

HTTP Request

GET https://api.planningcenteronline.com/people/v2/lists

URL Parameters

Parameter Value Description
where[name] string query on a specific name
where[batch_completed_at] date_time query on a specific batch_completed_at
where[created_at] date_time query on a specific created_at
where[updated_at] date_time query on a specific updated_at
include created_by include associated created_by
include updated_by include associated updated_by
include owner include associated owner
include people include associated people
include rules include associated rules
include shares include associated shares
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)
order name prefix with a hyphen (-name) to reverse the order
order batch_completed_at prefix with a hyphen (-batch_completed_at) to reverse the order
order created_at prefix with a hyphen (-created_at) to reverse the order
order updated_at prefix with a hyphen (-updated_at) to reverse the order

Get a single List

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/lists/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "List",
    "id": "primary_key",
    "attributes": {
      "batch_completed_at": "2000-01-01T12:00:00Z",
      "created_at": "2000-01-01T12:00:00Z",
      "description": "unknown",
      "has_inactive_results": true,
      "include_inactive": true,
      "name": "string",
      "return_original_if_none": true,
      "returns": "string",
      "status": "string",
      "subset": "string",
      "total_people": "unknown",
      "updated_at": "2000-01-01T12:00:00Z"
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/people/v2/lists/1

URL Parameters

Parameter Value Description
include created_by include associated created_by
include updated_by include associated updated_by
include owner include associated owner
include people include associated people
include rules include associated rules
include shares include associated shares

Associations for a List

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
created_by https://api.planningcenteronline.com/people/v2/lists/1/created_by Person
owner https://api.planningcenteronline.com/people/v2/lists/1/owner Person
people https://api.planningcenteronline.com/people/v2/lists/1/people Person
rules https://api.planningcenteronline.com/people/v2/lists/1/rules Rule
shares https://api.planningcenteronline.com/people/v2/lists/1/shares ListShare
updated_by https://api.planningcenteronline.com/people/v2/lists/1/updated_by Person

Actions for a List

You can perform the following actions on a List by POSTing to the specified URL.

Action URL Description
run https://api.planningcenteronline.com/people/v2/lists/1/run Run a List to update its results.

ListShares

A list share indicates who has access to edit a list.

List List Shares

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/lists/1/shares"

HTTP Request

GET https://api.planningcenteronline.com/people/v2/lists/1/shares

URL Parameters

Parameter Value Description
where[name] graph/type_annotation/unknowntype_annotation_ query on a specific name
where[group] integer query on a specific group
where[created_at] date_time query on a specific created_at
include person include associated person
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)
order name prefix with a hyphen (-name) to reverse the order
order group prefix with a hyphen (-group) to reverse the order
order created_at prefix with a hyphen (-created_at) to reverse the order

Get a single List Share

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/lists/1/shares/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "ListShare",
    "id": "primary_key",
    "attributes": {
      "created_at": "2000-01-01T12:00:00Z",
      "group": 1,
      "name": "unknown"
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/people/v2/lists/1/shares/1

URL Parameters

Parameter Value Description
include person include associated person

Associations for a List Share

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
person https://api.planningcenteronline.com/people/v2/lists/1/shares/1/person Person

MaritalStatuses

A martial status represents a member’s current status, e.g. married, single, etc.

List Marital Statuses

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/marital_statuses"

HTTP Request

GET https://api.planningcenteronline.com/people/v2/marital_statuses

URL Parameters

Parameter Value Description
where[value] string query on a specific value
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)
order value prefix with a hyphen (-value) to reverse the order

Get a single Marital Status

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/marital_statuses/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "MaritalStatus",
    "id": "primary_key",
    "attributes": {
      "value": "string"
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/people/v2/marital_statuses/1

URL Parameters

none

Create a new Marital Status

# to create a record...
curl -v -u token:secret -X POST -d '{"data":{"type":"MaritalStatus","attributes":{...}}}' "https://api.planningcenteronline.com/people/v2/marital_statuses"

HTTP Request

POST https://api.planningcenteronline.com/people/v2/marital_statuses

Resource Attributes

Attribute Type
value string

Update an existing Marital Status

# to update a record...
curl -v -u token:secret -X PATCH -d '{"data":{"type":"MaritalStatus","id":"1","attributes":{...}}}' "https://api.planningcenteronline.com/people/v2/marital_statuses/1"

HTTP Request

PATCH https://api.planningcenteronline.com/people/v2/marital_statuses/1

Resource Attributes

Attribute Type
value string

Delete a Marital Status

# to delete a record...
curl -v -u token:secret -X DELETE "https://api.planningcenteronline.com/people/v2/marital_statuses/1"

HTTP Request

DELETE https://api.planningcenteronline.com/people/v2/marital_statuses/1

Messages

A message is an individual email or sms text sent to a member. Every message has a parent message group.

List Messages

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/messages"

HTTP Request

GET https://api.planningcenteronline.com/people/v2/messages

URL Parameters

Parameter Value Description
where[kind] integer query on a specific kind
where[to_addresses] string query on a specific to_addresses
where[subject] string query on a specific subject
where[file] string query on a specific file
where[app_name] graph/type_annotation/unknowntype_annotation_ query on a specific app_name
where[delivery_status] string query on a specific delivery_status
where[reject_reason] string query on a specific reject_reason
where[from_name] graph/type_annotation/unknowntype_annotation_ query on a specific from_name
where[from_address] graph/type_annotation/unknowntype_annotation_ query on a specific from_address
where[created_at] date_time query on a specific created_at
where[sent_at] date_time query on a specific sent_at
where[bounced_at] date_time query on a specific bounced_at
where[rejection_notification_sent_at] date_time query on a specific rejection_notification_sent_at
where[app_name] graph/type_annotation/unknowntype_annotation_ query on a specific app_name
include message_group include associated message_group
include to include associated to
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)
order kind prefix with a hyphen (-kind) to reverse the order
order to_addresses prefix with a hyphen (-to_addresses) to reverse the order
order subject prefix with a hyphen (-subject) to reverse the order
order file prefix with a hyphen (-file) to reverse the order
order app_name prefix with a hyphen (-app_name) to reverse the order
order delivery_status prefix with a hyphen (-delivery_status) to reverse the order
order reject_reason prefix with a hyphen (-reject_reason) to reverse the order
order from_name prefix with a hyphen (-from_name) to reverse the order
order from_address prefix with a hyphen (-from_address) to reverse the order
order created_at prefix with a hyphen (-created_at) to reverse the order
order sent_at prefix with a hyphen (-sent_at) to reverse the order
order bounced_at prefix with a hyphen (-bounced_at) to reverse the order
order rejection_notification_sent_at prefix with a hyphen (-rejection_notification_sent_at) to reverse the order

Get a single Message

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/messages/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "Message",
    "id": "primary_key",
    "attributes": {
      "app_name": "unknown",
      "bounced_at": "2000-01-01T12:00:00Z",
      "created_at": "2000-01-01T12:00:00Z",
      "delivery_status": "string",
      "file": "string",
      "from_address": "unknown",
      "from_name": "unknown",
      "kind": 1,
      "read_at": "2000-01-01T12:00:00Z",
      "reject_reason": "string",
      "rejection_notification_sent_at": "2000-01-01T12:00:00Z",
      "sent_at": "2000-01-01T12:00:00Z",
      "subject": "string",
      "to_addresses": "string"
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/people/v2/messages/1

URL Parameters

Parameter Value Description
include message_group include associated message_group
include to include associated to

Associations for a Message

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
message_group https://api.planningcenteronline.com/people/v2/messages/1/message_group MessageGroup
to https://api.planningcenteronline.com/people/v2/messages/1/to Person

Actions for a Message

You can perform the following actions on a Message by POSTing to the specified URL.

Action URL Description

MessageGroups

A message group represents one or more emails or text messages sent from one of the Planning Center apps. The message group indicates the from person, app, etc.

List Message Groups

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/message_groups"

HTTP Request

GET https://api.planningcenteronline.com/people/v2/message_groups

URL Parameters

Parameter Value Description
where[uuid] string query on a specific uuid
where[message_type] string query on a specific message_type
where[from_address] string query on a specific from_address
where[subject] string query on a specific subject
where[message_count] integer query on a specific message_count
where[system_message] boolean query on a specific system_message
where[created_at] date_time query on a specific created_at
include messages include associated messages
include from include associated from
include app include associated app
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)
order uuid prefix with a hyphen (-uuid) to reverse the order
order message_type prefix with a hyphen (-message_type) to reverse the order
order from_address prefix with a hyphen (-from_address) to reverse the order
order subject prefix with a hyphen (-subject) to reverse the order
order message_count prefix with a hyphen (-message_count) to reverse the order
order system_message prefix with a hyphen (-system_message) to reverse the order
order created_at prefix with a hyphen (-created_at) to reverse the order

Get a single Message Group

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/message_groups/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "MessageGroup",
    "id": "primary_key",
    "attributes": {
      "created_at": "2000-01-01T12:00:00Z",
      "from_address": "string",
      "message_count": 1,
      "message_type": "string",
      "subject": "string",
      "system_message": true,
      "uuid": "string"
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/people/v2/message_groups/1

URL Parameters

Parameter Value Description
include messages include associated messages
include from include associated from
include app include associated app

Associations for a Message Group

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
app https://api.planningcenteronline.com/people/v2/message_groups/1/app App
from https://api.planningcenteronline.com/people/v2/message_groups/1/from Person
messages https://api.planningcenteronline.com/people/v2/message_groups/1/messages Message

NamePrefixes

A name prefix is one of Mr., Mrs., etc.

List Name Prefixes

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/name_prefixes"

HTTP Request

GET https://api.planningcenteronline.com/people/v2/name_prefixes

URL Parameters

Parameter Value Description
where[value] string query on a specific value
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)
order value prefix with a hyphen (-value) to reverse the order

Get a single Name Prefix

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/name_prefixes/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "NamePrefix",
    "id": "primary_key",
    "attributes": {
      "value": "string"
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/people/v2/name_prefixes/1

URL Parameters

none

Create a new Name Prefix

# to create a record...
curl -v -u token:secret -X POST -d '{"data":{"type":"NamePrefix","attributes":{...}}}' "https://api.planningcenteronline.com/people/v2/name_prefixes"

HTTP Request

POST https://api.planningcenteronline.com/people/v2/name_prefixes

Resource Attributes

Attribute Type
value string

Update an existing Name Prefix

# to update a record...
curl -v -u token:secret -X PATCH -d '{"data":{"type":"NamePrefix","id":"1","attributes":{...}}}' "https://api.planningcenteronline.com/people/v2/name_prefixes/1"

HTTP Request

PATCH https://api.planningcenteronline.com/people/v2/name_prefixes/1

Resource Attributes

Attribute Type
value string

Delete a Name Prefix

# to delete a record...
curl -v -u token:secret -X DELETE "https://api.planningcenteronline.com/people/v2/name_prefixes/1"

HTTP Request

DELETE https://api.planningcenteronline.com/people/v2/name_prefixes/1

NameSuffixes

A name suffix is one of Sr., Jr., etc.

List Name Suffixes

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/name_suffixes"

HTTP Request

GET https://api.planningcenteronline.com/people/v2/name_suffixes

URL Parameters

Parameter Value Description
where[value] string query on a specific value
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)
order value prefix with a hyphen (-value) to reverse the order

Get a single Name Suffix

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/name_suffixes/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "NameSuffix",
    "id": "primary_key",
    "attributes": {
      "value": "string"
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/people/v2/name_suffixes/1

URL Parameters

none

Create a new Name Suffix

# to create a record...
curl -v -u token:secret -X POST -d '{"data":{"type":"NameSuffix","attributes":{...}}}' "https://api.planningcenteronline.com/people/v2/name_suffixes"

HTTP Request

POST https://api.planningcenteronline.com/people/v2/name_suffixes

Resource Attributes

Attribute Type
value string

Update an existing Name Suffix

# to update a record...
curl -v -u token:secret -X PATCH -d '{"data":{"type":"NameSuffix","id":"1","attributes":{...}}}' "https://api.planningcenteronline.com/people/v2/name_suffixes/1"

HTTP Request

PATCH https://api.planningcenteronline.com/people/v2/name_suffixes/1

Resource Attributes

Attribute Type
value string

Delete a Name Suffix

# to delete a record...
curl -v -u token:secret -X DELETE "https://api.planningcenteronline.com/people/v2/name_suffixes/1"

HTTP Request

DELETE https://api.planningcenteronline.com/people/v2/name_suffixes/1

Organizations

The organization represents a single church. Every other resource is scoped to this record.

Get a single Organization

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2"

The above command returns JSON structured like this:

{
  "data": {
    "type": "Organization",
    "id": "primary_key",
    "attributes": {
      "date_format": 1,
      "name": "string"
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/people/v2

URL Parameters

none

Associations for an Organization

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
addresses https://api.planningcenteronline.com/people/v2/addresses Address
apps https://api.planningcenteronline.com/people/v2/apps App
campuses https://api.planningcenteronline.com/people/v2/campuses Campus
carriers https://api.planningcenteronline.com/people/v2/carriers Carrier
emails https://api.planningcenteronline.com/people/v2/emails Email
field_definitions https://api.planningcenteronline.com/people/v2/field_definitions FieldDefinition
households https://api.planningcenteronline.com/people/v2/households Household
inactive_reasons https://api.planningcenteronline.com/people/v2/inactive_reasons InactiveReason
lists https://api.planningcenteronline.com/people/v2/lists List
marital_statuses https://api.planningcenteronline.com/people/v2/marital_statuses MaritalStatus
message_groups https://api.planningcenteronline.com/people/v2/message_groups MessageGroup
messages https://api.planningcenteronline.com/people/v2/messages Message
name_prefixes https://api.planningcenteronline.com/people/v2/name_prefixes NamePrefix
name_suffixes https://api.planningcenteronline.com/people/v2/name_suffixes NameSuffix
people https://api.planningcenteronline.com/people/v2/people Person
people_imports https://api.planningcenteronline.com/people/v2/people_imports PeopleImport
person_mergers https://api.planningcenteronline.com/people/v2/person_mergers PersonMerger
reports https://api.planningcenteronline.com/people/v2/reports Report
school_options https://api.planningcenteronline.com/people/v2/school_options SchoolOption
social_profiles https://api.planningcenteronline.com/people/v2/social_profiles SocialProfile
stats https://api.planningcenteronline.com/people/v2/stats OrganizationStatistics
tabs https://api.planningcenteronline.com/people/v2/tabs Tab
workflows https://api.planningcenteronline.com/people/v2/workflows Workflow

OrganizationStatistics

Returns statistics for the organization.

List Organization Statistics

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/stats"

HTTP Request

GET https://api.planningcenteronline.com/people/v2/stats

URL Parameters

Parameter Value Description
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

PeopleImports

A PeopleImport is a record of an ongoing or previous import from a CSV file.

List People Imports

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/people_imports"

HTTP Request

GET https://api.planningcenteronline.com/people/v2/people_imports

URL Parameters

Parameter Value Description
where[status] integer query on a specific status
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single People Import

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/people_imports/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "PeopleImport",
    "id": "primary_key",
    "attributes": {
      "attribs": "string",
      "created_at": "2000-01-01T12:00:00Z",
      "identical_people_ids": "string",
      "people_ids": "string",
      "processed_at": "2000-01-01T12:00:00Z",
      "status": 1,
      "undone_at": "2000-01-01T12:00:00Z",
      "updated_at": "2000-01-01T12:00:00Z"
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/people/v2/people_imports/1

URL Parameters

none

Associations for a People Import

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
conflicts https://api.planningcenteronline.com/people/v2/people_imports/1/conflicts PeopleImportConflict
histories https://api.planningcenteronline.com/people/v2/people_imports/1/histories PeopleImportHistory

PeopleImportConflicts

A PeopleImportConflict is a record of change that will occur if the parent PeopleImport is completed.

List People Import Conflicts

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/people_imports/1/conflicts"

HTTP Request

GET https://api.planningcenteronline.com/people/v2/people_imports/1/conflicts

URL Parameters

Parameter Value Description
where[kind] string query on a specific kind
where[name] string query on a specific name
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single People Import Conflict

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/people_imports/1/conflicts/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "PeopleImportConflict",
    "id": "primary_key",
    "attributes": {
      "conflicting_changes": "string",
      "created_at": "2000-01-01T12:00:00Z",
      "data": "string",
      "ignore": true,
      "kind": "string",
      "message": "string",
      "name": "string",
      "updated_at": "2000-01-01T12:00:00Z"
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/people/v2/people_imports/1/conflicts/1

URL Parameters

none

PeopleImportHistories

A PeopleImportHistory is a record of change that occurred when the parent PeopleImport was completed.

List People Import Histories

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/people_imports/1/histories"

HTTP Request

GET https://api.planningcenteronline.com/people/v2/people_imports/1/histories

URL Parameters

Parameter Value Description
where[name] string query on a specific name
include person include associated person
include household include associated household
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single People Import History

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/people_imports/1/histories/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "PeopleImportHistory",
    "id": "primary_key",
    "attributes": {
      "conflicting_changes": "unknown",
      "created_at": "2000-01-01T12:00:00Z",
      "kind": "unknown",
      "name": "string",
      "updated_at": "2000-01-01T12:00:00Z"
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/people/v2/people_imports/1/histories/1

URL Parameters

Parameter Value Description
include person include associated person
include household include associated household

Associations for a People Import History

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
household https://api.planningcenteronline.com/people/v2/people_imports/1/histories/1/household Household
person https://api.planningcenteronline.com/people/v2/people_imports/1/histories/1/person Person

People

A person record represents a single member/user of the application. Each person has different permissions that determine how the user can use this app (if at all).

List People

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/people"

HTTP Request

GET https://api.planningcenteronline.com/people/v2/people

URL Parameters

Parameter Value Description
where[given_name] string query on a specific given_name
where[first_name] string query on a specific first_name
where[nickname] string query on a specific nickname
where[middle_name] string query on a specific middle_name
where[last_name] string query on a specific last_name
where[birthdate] date query on a specific birthdate
where[anniversary] date query on a specific anniversary
where[gender] string query on a specific gender
where[grade] integer query on a specific grade
where[child] boolean query on a specific child
where[status] string query on a specific status
where[school_type] string query on a specific school_type
where[graduation_year] integer query on a specific graduation_year
where[site_administrator] boolean query on a specific site_administrator
where[people_permissions] string query on a specific people_permissions
where[membership] string query on a specific membership
where[inactivated_at] date_time query on a specific inactivated_at
where[remote_id] integer query on a specific remote_id
where[medical_notes] string query on a specific medical_notes
where[created_at] date_time query on a specific created_at
where[updated_at] date_time query on a specific updated_at
where[id] primarykey_ query on a specific id
filter created_since filter people created in the last 24 hours; pass an additional time parameter in ISO 8601 format to specify your own timeframe
filter admins filter using the named scope “admins”
filter organization_admins filter using the named scope “organization_admins”
include addresses include associated addresses
include emails include associated emails
include field_data include associated field_data
include households include associated households
include inactive_reason include associated inactive_reason
include marital_status include associated marital_status
include name_prefix include associated name_prefix
include name_suffix include associated name_suffix
include person_apps include associated person_apps
include phone_numbers include associated phone_numbers
include school include associated school
include social_profiles include associated social_profiles
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)
order given_name prefix with a hyphen (-given_name) to reverse the order
order first_name prefix with a hyphen (-first_name) to reverse the order
order nickname prefix with a hyphen (-nickname) to reverse the order
order middle_name prefix with a hyphen (-middle_name) to reverse the order
order last_name prefix with a hyphen (-last_name) to reverse the order
order birthdate prefix with a hyphen (-birthdate) to reverse the order
order anniversary prefix with a hyphen (-anniversary) to reverse the order
order gender prefix with a hyphen (-gender) to reverse the order
order grade prefix with a hyphen (-grade) to reverse the order
order child prefix with a hyphen (-child) to reverse the order
order status prefix with a hyphen (-status) to reverse the order
order school_type prefix with a hyphen (-school_type) to reverse the order
order graduation_year prefix with a hyphen (-graduation_year) to reverse the order
order site_administrator prefix with a hyphen (-site_administrator) to reverse the order
order people_permissions prefix with a hyphen (-people_permissions) to reverse the order
order membership prefix with a hyphen (-membership) to reverse the order
order inactivated_at prefix with a hyphen (-inactivated_at) to reverse the order
order remote_id prefix with a hyphen (-remote_id) to reverse the order
order medical_notes prefix with a hyphen (-medical_notes) to reverse the order
order created_at prefix with a hyphen (-created_at) to reverse the order
order updated_at prefix with a hyphen (-updated_at) to reverse the order

Get a single Person

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/people/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "Person",
    "id": "1",
    "attributes": {
      "anniversary": "2012-04-01",
      "avatar": "https://account-center-production.s3.amazonaws.com/uploads/person/1-1426707114/avatar.4.png",
      "birthdate": "1982-01-01",
      "child": false,
      "created_at": "2015-03-18T19:31:54Z",
      "first_name": "PiCO",
      "gender": "M",
      "given_name": "Picardo",
      "grade": null,
      "graduation_year": 2000,
      "last_name": "Das Robot",
      "middle_name": "Ross",
      "nickname": "P Riddy",
      "people_permissions": "Viewer",
      "school_type": "elementary",
      "site_administrator": true,
      "status": "active",
      "type": "Person",
      "updated_at": "2015-04-21T22:52:53Z"
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/people/v2/people/1

URL Parameters

Parameter Value Description
include addresses include associated addresses
include emails include associated emails
include field_data include associated field_data
include households include associated households
include inactive_reason include associated inactive_reason
include marital_status include associated marital_status
include name_prefix include associated name_prefix
include name_suffix include associated name_suffix
include person_apps include associated person_apps
include phone_numbers include associated phone_numbers
include school include associated school
include social_profiles include associated social_profiles

Associations for a Person

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
addresses https://api.planningcenteronline.com/people/v2/people/1/addresses Address
apps https://api.planningcenteronline.com/people/v2/people/1/apps App
connected_people https://api.planningcenteronline.com/people/v2/people/1/connected_people ConnectedPerson
emails https://api.planningcenteronline.com/people/v2/people/1/emails Email
field_data https://api.planningcenteronline.com/people/v2/people/1/field_data FieldDatum
household_memberships https://api.planningcenteronline.com/people/v2/people/1/household_memberships HouseholdMembership
households https://api.planningcenteronline.com/people/v2/people/1/households Household
inactive_reason https://api.planningcenteronline.com/people/v2/people/1/inactive_reason InactiveReason
marital_status https://api.planningcenteronline.com/people/v2/people/1/marital_status MaritalStatus
message_groups https://api.planningcenteronline.com/people/v2/people/1/message_groups MessageGroup
messages https://api.planningcenteronline.com/people/v2/people/1/messages Message
name_prefix https://api.planningcenteronline.com/people/v2/people/1/name_prefix NamePrefix
name_suffix https://api.planningcenteronline.com/people/v2/people/1/name_suffix NameSuffix
person_apps https://api.planningcenteronline.com/people/v2/people/1/person_apps PersonApp
phone_numbers https://api.planningcenteronline.com/people/v2/people/1/phone_numbers PhoneNumber
school https://api.planningcenteronline.com/people/v2/people/1/school SchoolOption
social_profiles https://api.planningcenteronline.com/people/v2/people/1/social_profiles SocialProfile
workflow_cards https://api.planningcenteronline.com/people/v2/people/1/workflow_cards WorkflowCard

Actions for a Person

You can perform the following actions on a Person by POSTing to the specified URL.

Action URL Description

Create a new Person

# to create a record...
curl -v -u token:secret -X POST -d '{"data":{"type":"Person","attributes":{...}}}' "https://api.planningcenteronline.com/people/v2/people"

HTTP Request

POST https://api.planningcenteronline.com/people/v2/people

Resource Attributes

Attribute Type Note
given_name string
first_name string
nickname string
middle_name string
last_name string
birthdate date
anniversary date
gender string
grade integer
child boolean
status string
school_type string
graduation_year integer
site_administrator boolean
people_permissions string
membership string
inactivated_at date_time
remote_id integer
medical_notes string
avatar string File UUID (see File Uploads section)

Update an existing Person

# to update a record...
curl -v -u token:secret -X PATCH -d '{"data":{"type":"Person","id":"1","attributes":{...}}}' "https://api.planningcenteronline.com/people/v2/people/1"

HTTP Request

PATCH https://api.planningcenteronline.com/people/v2/people/1

Resource Attributes

Attribute Type Note
given_name string
first_name string
nickname string
middle_name string
last_name string
birthdate date
anniversary date
gender string
grade integer
child boolean
status string
school_type string
graduation_year integer
site_administrator boolean
people_permissions string
membership string
inactivated_at date_time
remote_id integer
medical_notes string
avatar string File UUID (see File Uploads section)

Delete a Person

# to delete a record...
curl -v -u token:secret -X DELETE "https://api.planningcenteronline.com/people/v2/people/1"

HTTP Request

DELETE https://api.planningcenteronline.com/people/v2/people/1

PersonApps

A Person App is the relationship between a Person and an App.

Relationships

Name Type To Many Description
app App false
person Person false

List Person Apps

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/people/1/person_apps"

HTTP Request

GET https://api.planningcenteronline.com/people/v2/people/1/person_apps

URL Parameters

Parameter Value Description
include app include associated app
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Person App

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/people/1/person_apps/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "PersonApp",
    "id": "primary_key",
    "attributes": {
      "allow_pco_login": true,
      "people_permissions": 1
    },
    "relationships": {
      "app": {
        "data": {
          "type": "App",
          "id": "123"
        }
      },
      "person": {
        "data": {
          "type": "Person",
          "id": "123"
        }
      }
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/people/v2/people/1/person_apps/1

URL Parameters

Parameter Value Description
include app include associated app

Associations for a Person App

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
app https://api.planningcenteronline.com/people/v2/people/1/person_apps/1/app App

Create a new Person App

# to create a record...
curl -v -u token:secret -X POST -d '{"data":{"type":"PersonApp","attributes":{...}}}' "https://api.planningcenteronline.com/people/v2/people/1/person_apps"

HTTP Request

POST https://api.planningcenteronline.com/people/v2/people/1/person_apps

Resource Attributes

none

Update an existing Person App

# to update a record...
curl -v -u token:secret -X PATCH -d '{"data":{"type":"PersonApp","id":"1","attributes":{...}}}' "https://api.planningcenteronline.com/people/v2/people/1/person_apps/1"

HTTP Request

PATCH https://api.planningcenteronline.com/people/v2/people/1/person_apps/1

Resource Attributes

none

Delete a Person App

# to delete a record...
curl -v -u token:secret -X DELETE "https://api.planningcenteronline.com/people/v2/people/1/person_apps/1"

HTTP Request

DELETE https://api.planningcenteronline.com/people/v2/people/1/person_apps/1

PersonMergers

A Person Merger is the history of profiles that were merged into other profiles.

List Person Mergers

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/person_mergers"

HTTP Request

GET https://api.planningcenteronline.com/people/v2/person_mergers

URL Parameters

Parameter Value Description
where[person_to_keep_id] integer query on a specific person_to_keep_id
where[person_to_remove_id] integer query on a specific person_to_remove_id
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Person Merger

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/person_mergers/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "PersonMerger",
    "id": "primary_key",
    "attributes": {
      "person_to_keep_id": 1,
      "person_to_remove_id": 1
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/people/v2/person_mergers/1

URL Parameters

none

PhoneNumbers

A phone number represents a single telephone number and location.

Relationships

Name Type To Many Description
person Person false

List Phone Numbers

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/people/1/phone_numbers"

HTTP Request

GET https://api.planningcenteronline.com/people/v2/people/1/phone_numbers

URL Parameters

Parameter Value Description
where[number] string query on a specific number
where[carrier] string query on a specific carrier
where[location] string query on a specific location
where[primary] boolean query on a specific primary
where[created_at] date_time query on a specific created_at
where[updated_at] date_time query on a specific updated_at
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)
order number prefix with a hyphen (-number) to reverse the order
order carrier prefix with a hyphen (-carrier) to reverse the order
order location prefix with a hyphen (-location) to reverse the order
order primary prefix with a hyphen (-primary) to reverse the order
order created_at prefix with a hyphen (-created_at) to reverse the order
order updated_at prefix with a hyphen (-updated_at) to reverse the order

Get a single Phone Number

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/people/1/phone_numbers/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "PhoneNumber",
    "id": "primary_key",
    "attributes": {
      "carrier": "string",
      "created_at": "2000-01-01T12:00:00Z",
      "location": "string",
      "number": "string",
      "primary": true,
      "updated_at": "2000-01-01T12:00:00Z"
    },
    "relationships": {
      "person": {
        "data": {
          "type": "Person",
          "id": "123"
        }
      }
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/people/v2/people/1/phone_numbers/1

URL Parameters

none

Create a new Phone Number

# to create a record...
curl -v -u token:secret -X POST -d '{"data":{"type":"PhoneNumber","attributes":{...}}}' "https://api.planningcenteronline.com/people/v2/people/1/phone_numbers"

HTTP Request

POST https://api.planningcenteronline.com/people/v2/people/1/phone_numbers

Resource Attributes

Attribute Type
number string
carrier string
location string
primary boolean

Update an existing Phone Number

# to update a record...
curl -v -u token:secret -X PATCH -d '{"data":{"type":"PhoneNumber","id":"1","attributes":{...}}}' "https://api.planningcenteronline.com/people/v2/people/1/phone_numbers/1"

HTTP Request

PATCH https://api.planningcenteronline.com/people/v2/people/1/phone_numbers/1

Resource Attributes

Attribute Type
number string
carrier string
location string
primary boolean

Delete a Phone Number

# to delete a record...
curl -v -u token:secret -X DELETE "https://api.planningcenteronline.com/people/v2/people/1/phone_numbers/1"

HTTP Request

DELETE https://api.planningcenteronline.com/people/v2/people/1/phone_numbers/1

Reports

A report is editable liquid syntax that provides a powerful tool for presenting your Lists however you want.

List Reports

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/reports"

HTTP Request

GET https://api.planningcenteronline.com/people/v2/reports

URL Parameters

Parameter Value Description
where[name] string query on a specific name
where[body] string query on a specific body
where[created_at] date_time query on a specific created_at
where[updated_at] date_time query on a specific updated_at
include created_by include associated created_by
include updated_by include associated updated_by
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)
order name prefix with a hyphen (-name) to reverse the order
order body prefix with a hyphen (-body) to reverse the order
order created_at prefix with a hyphen (-created_at) to reverse the order
order updated_at prefix with a hyphen (-updated_at) to reverse the order

Get a single Report

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/reports/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "Report",
    "id": "primary_key",
    "attributes": {
      "body": "string",
      "created_at": "2000-01-01T12:00:00Z",
      "name": "string",
      "updated_at": "2000-01-01T12:00:00Z"
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/people/v2/reports/1

URL Parameters

Parameter Value Description
include created_by include associated created_by
include updated_by include associated updated_by

Associations for a Report

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
created_by https://api.planningcenteronline.com/people/v2/reports/1/created_by Person
updated_by https://api.planningcenteronline.com/people/v2/reports/1/updated_by Person

Create a new Report

# to create a record...
curl -v -u token:secret -X POST -d '{"data":{"type":"Report","attributes":{...}}}' "https://api.planningcenteronline.com/people/v2/reports"

HTTP Request

POST https://api.planningcenteronline.com/people/v2/reports

Resource Attributes

Attribute Type
name string
body string

Update an existing Report

# to update a record...
curl -v -u token:secret -X PATCH -d '{"data":{"type":"Report","id":"1","attributes":{...}}}' "https://api.planningcenteronline.com/people/v2/reports/1"

HTTP Request

PATCH https://api.planningcenteronline.com/people/v2/reports/1

Resource Attributes

Attribute Type
name string
body string

Delete a Report

# to delete a record...
curl -v -u token:secret -X DELETE "https://api.planningcenteronline.com/people/v2/reports/1"

HTTP Request

DELETE https://api.planningcenteronline.com/people/v2/reports/1

Rules

A rule belongs to a List and groups conditions together.

List Rules

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/lists/1/rules"

HTTP Request

GET https://api.planningcenteronline.com/people/v2/lists/1/rules

URL Parameters

Parameter Value Description
where[subset] string query on a specific subset
where[created_at] date_time query on a specific created_at
where[updated_at] date_time query on a specific updated_at
include conditions include associated conditions
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)
order subset prefix with a hyphen (-subset) to reverse the order
order created_at prefix with a hyphen (-created_at) to reverse the order
order updated_at prefix with a hyphen (-updated_at) to reverse the order

Get a single Rule

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/lists/1/rules/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "Rule",
    "id": "primary_key",
    "attributes": {
      "created_at": "2000-01-01T12:00:00Z",
      "subset": "string",
      "updated_at": "2000-01-01T12:00:00Z"
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/people/v2/lists/1/rules/1

URL Parameters

Parameter Value Description
include conditions include associated conditions

Associations for a Rule

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
conditions https://api.planningcenteronline.com/people/v2/lists/1/rules/1/conditions Condition

SchoolOptions

A school option represents a school name, school type, grades, etc. and can be selected for a person.

List School Options

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/school_options"

HTTP Request

GET https://api.planningcenteronline.com/people/v2/school_options

URL Parameters

Parameter Value Description
where[value] string query on a specific value
where[school_types] graph/type_annotation/unknowntype_annotation_ query on a specific school_types
where[beginning_grade] graph/type_annotation/unknowntype_annotation_ query on a specific beginning_grade
where[ending_grade] graph/type_annotation/unknowntype_annotation_ query on a specific ending_grade
where[sequence] integer query on a specific sequence
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)
order value prefix with a hyphen (-value) to reverse the order
order school_types prefix with a hyphen (-school_types) to reverse the order
order beginning_grade prefix with a hyphen (-beginning_grade) to reverse the order
order ending_grade prefix with a hyphen (-ending_grade) to reverse the order
order sequence prefix with a hyphen (-sequence) to reverse the order

Get a single School Option

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/school_options/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "SchoolOption",
    "id": "1",
    "attributes": {
      "beginning_grade": "0",
      "ending_grade": "5",
      "school_types": [
        "elementary"
      ],
      "sequence": 1,
      "type": "SchoolOption",
      "value": "Colcord Elementary"
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/people/v2/school_options/1

URL Parameters

none

Associations for a School Option

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
promotes_to_school https://api.planningcenteronline.com/people/v2/school_options/1/promotes_to_school SchoolOption

Create a new School Option

# to create a record...
curl -v -u token:secret -X POST -d '{"data":{"type":"SchoolOption","attributes":{...}}}' "https://api.planningcenteronline.com/people/v2/school_options"

HTTP Request

POST https://api.planningcenteronline.com/people/v2/school_options

Resource Attributes

Attribute Type
value string
school_types graph/type_annotation/unknown_type_annotation
beginning_grade graph/type_annotation/unknown_type_annotation
ending_grade graph/type_annotation/unknown_type_annotation
sequence integer

Update an existing School Option

# to update a record...
curl -v -u token:secret -X PATCH -d '{"data":{"type":"SchoolOption","id":"1","attributes":{...}}}' "https://api.planningcenteronline.com/people/v2/school_options/1"

HTTP Request

PATCH https://api.planningcenteronline.com/people/v2/school_options/1

Resource Attributes

Attribute Type
value string
school_types graph/type_annotation/unknown_type_annotation
beginning_grade graph/type_annotation/unknown_type_annotation
ending_grade graph/type_annotation/unknown_type_annotation
sequence integer

Delete a School Option

# to delete a record...
curl -v -u token:secret -X DELETE "https://api.planningcenteronline.com/people/v2/school_options/1"

HTTP Request

DELETE https://api.planningcenteronline.com/people/v2/school_options/1

SocialProfiles

A social profile represents a members’s Twitter, Facebook, or other social media account.

List Social Profiles

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/social_profiles"

HTTP Request

GET https://api.planningcenteronline.com/people/v2/social_profiles

URL Parameters

Parameter Value Description
where[site] string query on a specific site
where[url] string query on a specific url
where[verified] boolean query on a specific verified
where[created_at] date_time query on a specific created_at
where[updated_at] date_time query on a specific updated_at
include person include associated person
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)
order site prefix with a hyphen (-site) to reverse the order
order url prefix with a hyphen (-url) to reverse the order
order verified prefix with a hyphen (-verified) to reverse the order
order created_at prefix with a hyphen (-created_at) to reverse the order
order updated_at prefix with a hyphen (-updated_at) to reverse the order

Get a single Social Profile

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/social_profiles/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "SocialProfile",
    "id": "primary_key",
    "attributes": {
      "created_at": "2000-01-01T12:00:00Z",
      "site": "string",
      "updated_at": "2000-01-01T12:00:00Z",
      "url": "string",
      "verified": true
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/people/v2/social_profiles/1

URL Parameters

Parameter Value Description
include person include associated person

Associations for a Social Profile

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
person https://api.planningcenteronline.com/people/v2/social_profiles/1/person Person

Create a new Social Profile

# to create a record...
curl -v -u token:secret -X POST -d '{"data":{"type":"SocialProfile","attributes":{...}}}' "https://api.planningcenteronline.com/people/v2/people/1/social_profiles"

HTTP Request

POST https://api.planningcenteronline.com/people/v2/people/1/social_profiles

Resource Attributes

Attribute Type
site string
url string
verified boolean

Update an existing Social Profile

# to update a record...
curl -v -u token:secret -X PATCH -d '{"data":{"type":"SocialProfile","id":"1","attributes":{...}}}' "https://api.planningcenteronline.com/people/v2/social_profiles/1"

HTTP Request

PATCH https://api.planningcenteronline.com/people/v2/social_profiles/1

Resource Attributes

Attribute Type
site string
url string
verified boolean

Delete a Social Profile

# to delete a record...
curl -v -u token:secret -X DELETE "https://api.planningcenteronline.com/people/v2/social_profiles/1"

HTTP Request

DELETE https://api.planningcenteronline.com/people/v2/social_profiles/1

Tabs

A tab is a custom tab and groups like field definitions.

List Tabs

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/tabs"

HTTP Request

GET https://api.planningcenteronline.com/people/v2/tabs

URL Parameters

Parameter Value Description
where[name] string query on a specific name
where[sequence] integer query on a specific sequence
where[slug] string query on a specific slug
include field_definitions include associated field_definitions
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)
order name prefix with a hyphen (-name) to reverse the order
order sequence prefix with a hyphen (-sequence) to reverse the order
order slug prefix with a hyphen (-slug) to reverse the order

Get a single Tab

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/tabs/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "Tab",
    "id": "primary_key",
    "attributes": {
      "name": "string",
      "sequence": 1,
      "slug": "string"
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/people/v2/tabs/1

URL Parameters

Parameter Value Description
include field_definitions include associated field_definitions

Associations for a Tab

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
field_definitions https://api.planningcenteronline.com/people/v2/tabs/1/field_definitions FieldDefinition

Create a new Tab

# to create a record...
curl -v -u token:secret -X POST -d '{"data":{"type":"Tab","attributes":{...}}}' "https://api.planningcenteronline.com/people/v2/tabs"

HTTP Request

POST https://api.planningcenteronline.com/people/v2/tabs

Resource Attributes

Attribute Type
name string
sequence integer
slug string

Update an existing Tab

# to update a record...
curl -v -u token:secret -X PATCH -d '{"data":{"type":"Tab","id":"1","attributes":{...}}}' "https://api.planningcenteronline.com/people/v2/tabs/1"

HTTP Request

PATCH https://api.planningcenteronline.com/people/v2/tabs/1

Resource Attributes

Attribute Type
name string
sequence integer
slug string

Delete a Tab

# to delete a record...
curl -v -u token:secret -X DELETE "https://api.planningcenteronline.com/people/v2/tabs/1"

HTTP Request

DELETE https://api.planningcenteronline.com/people/v2/tabs/1

Workflows

A Workflow

List Workflows

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/workflows"

HTTP Request

GET https://api.planningcenteronline.com/people/v2/workflows

URL Parameters

Parameter Value Description
where[name] string query on a specific name
where[campus_id] integer query on a specific campus_id
where[workflow_category_id] integer query on a specific workflow_category_id
where[created_at] date_time query on a specific created_at
where[updated_at] date_time query on a specific updated_at
where[deleted_at] date_time query on a specific deleted_at
filter only_deleted filter using the named scope “only_deleted”
filter with_deleted filter using the named scope “with_deleted”
include steps include associated steps
include shares include associated shares
include category include associated category
include campus include associated campus
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)
order name prefix with a hyphen (-name) to reverse the order
order campus_id prefix with a hyphen (-campus_id) to reverse the order
order workflow_category_id prefix with a hyphen (-workflow_category_id) to reverse the order
order created_at prefix with a hyphen (-created_at) to reverse the order
order updated_at prefix with a hyphen (-updated_at) to reverse the order
order deleted_at prefix with a hyphen (-deleted_at) to reverse the order

Get a single Workflow

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/workflows/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "Workflow",
    "id": "primary_key",
    "attributes": {
      "campus_id": 1,
      "completed_card_count": "unknown",
      "created_at": "2000-01-01T12:00:00Z",
      "deleted_at": "2000-01-01T12:00:00Z",
      "my_ready_card_count": "unknown",
      "name": "string",
      "total_ready_card_count": "unknown",
      "updated_at": "2000-01-01T12:00:00Z",
      "workflow_category_id": 1
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/people/v2/workflows/1

URL Parameters

Parameter Value Description
include steps include associated steps
include shares include associated shares
include category include associated category
include campus include associated campus

Associations for a Workflow

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
cards https://api.planningcenteronline.com/people/v2/workflows/1/cards WorkflowCard
shares https://api.planningcenteronline.com/people/v2/workflows/1/shares WorkflowShare
steps https://api.planningcenteronline.com/people/v2/workflows/1/steps WorkflowStep

Create a new Workflow

# to create a record...
curl -v -u token:secret -X POST -d '{"data":{"type":"Workflow","attributes":{...}}}' "https://api.planningcenteronline.com/people/v2/workflows"

HTTP Request

POST https://api.planningcenteronline.com/people/v2/workflows

Resource Attributes

Attribute Type
name string
campus_id integer
workflow_category_id integer

Update an existing Workflow

# to update a record...
curl -v -u token:secret -X PATCH -d '{"data":{"type":"Workflow","id":"1","attributes":{...}}}' "https://api.planningcenteronline.com/people/v2/workflows/1"

HTTP Request

PATCH https://api.planningcenteronline.com/people/v2/workflows/1

Resource Attributes

Attribute Type
name string
campus_id integer
workflow_category_id integer

WorkflowCards

A Card

Relationships

Name Type To Many Description
assignee Assignee false
person Person false
current_step CurrentStep false
workflow Workflow false

List Workflow Cards

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/workflows/1/cards"

HTTP Request

GET https://api.planningcenteronline.com/people/v2/workflows/1/cards

URL Parameters

Parameter Value Description
where[stage] graph/type_annotation/unknowntype_annotation_ query on a specific stage
include person include associated person
include assignee include associated assignee
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)
order stage prefix with a hyphen (-stage) to reverse the order
order created_at prefix with a hyphen (-created_at) to reverse the order
order updated_at prefix with a hyphen (-updated_at) to reverse the order
order completed_at prefix with a hyphen (-completed_at) to reverse the order
order flagged_for_notification_at prefix with a hyphen (-flagged_for_notification_at) to reverse the order
order removed_at prefix with a hyphen (-removed_at) to reverse the order

Get a single Workflow Card

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/workflows/1/cards/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "WorkflowCard",
    "id": "primary_key",
    "attributes": {
      "completed_at": "2000-01-01T12:00:00Z",
      "created_at": "2000-01-01T12:00:00Z",
      "flagged_for_notification_at": "2000-01-01T12:00:00Z",
      "moved_to_step_at": "2000-01-01T12:00:00Z",
      "removed_at": "2000-01-01T12:00:00Z",
      "snooze_until": "2000-01-01T12:00:00Z",
      "stage": "unknown",
      "sticky_assignment": true,
      "updated_at": "2000-01-01T12:00:00Z"
    },
    "relationships": {
      "assignee": {
        "data": {
          "type": "Assignee",
          "id": "123"
        }
      },
      "current_step": {
        "data": {
          "type": "CurrentStep",
          "id": "123"
        }
      },
      "person": {
        "data": {
          "type": "Person",
          "id": "123"
        }
      },
      "workflow": {
        "data": {
          "type": "Workflow",
          "id": "123"
        }
      }
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/people/v2/workflows/1/cards/1

URL Parameters

Parameter Value Description
include person include associated person
include assignee include associated assignee

Associations for a Workflow Card

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
activities https://api.planningcenteronline.com/people/v2/workflows/1/cards/1/activities WorkflowCardActivity
assignee https://api.planningcenteronline.com/people/v2/workflows/1/cards/1/assignee Person
notes https://api.planningcenteronline.com/people/v2/workflows/1/cards/1/notes WorkflowCardNote
person https://api.planningcenteronline.com/people/v2/workflows/1/cards/1/person Person

Actions for a Workflow Card

You can perform the following actions on a Workflow Card by POSTing to the specified URL.

Action URL Description
skip_step https://api.planningcenteronline.com/people/v2/workflows/1/cards/1/skip_step Move a Workflow Card to the next step without completing the current step.
snooze https://api.planningcenteronline.com/people/v2/workflows/1/cards/1/snooze Snoozes a card for a specific duration
promote https://api.planningcenteronline.com/people/v2/workflows/1/cards/1/promote Move a Workflow Card to the next step.
remove https://api.planningcenteronline.com/people/v2/workflows/1/cards/1/remove Removes a card
send_email https://api.planningcenteronline.com/people/v2/workflows/1/cards/1/send_email Sends an email to the subject of the card
restore https://api.planningcenteronline.com/people/v2/workflows/1/cards/1/restore Restore a card
unsnooze https://api.planningcenteronline.com/people/v2/workflows/1/cards/1/unsnooze Unsnoozes a card
go_back https://api.planningcenteronline.com/people/v2/workflows/1/cards/1/go_back Move a Workflow Card back to the previous step.

Create a new Workflow Card

# to create a record...
curl -v -u token:secret -X POST -d '{"data":{"type":"WorkflowCard","attributes":{...}}}' "https://api.planningcenteronline.com/people/v2/workflows/1/cards"

HTTP Request

POST https://api.planningcenteronline.com/people/v2/workflows/1/cards

Resource Attributes

Attribute Type
sticky_assignment boolean

Update an existing Workflow Card

# to update a record...
curl -v -u token:secret -X PATCH -d '{"data":{"type":"WorkflowCard","id":"1","attributes":{...}}}' "https://api.planningcenteronline.com/people/v2/workflows/1/cards/1"

HTTP Request

PATCH https://api.planningcenteronline.com/people/v2/workflows/1/cards/1

Resource Attributes

Attribute Type
sticky_assignment boolean

WorkflowCardActivities

Workflow Card Activity is a record of an action performed on a card

Relationships

Name Type To Many Description
workflow_card WorkflowCard false

List Workflow Card Activities

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/workflows/1/cards/1/activities"

HTTP Request

GET https://api.planningcenteronline.com/people/v2/workflows/1/cards/1/activities

URL Parameters

Parameter Value Description
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)
order id prefix with a hyphen (-id) to reverse the order

Get a single Workflow Card Activity

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/workflows/1/cards/1/activities/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "WorkflowCardActivity",
    "id": "1",
    "attributes": {
      "comment": "unknown",
      "content": "unknown",
      "created_at": "2000-01-01T12:00:00Z",
      "person_avatar_url": "unknown",
      "person_name": "unknown",
      "reassigned_to_avatar_url": "unknown",
      "reassigned_to_name": "unknown",
      "subject": "unknown",
      "type": "unknown"
    },
    "relationships": {
      "workflow_card": {
        "data": {
          "type": "WorkflowCard",
          "id": "123"
        }
      }
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/people/v2/workflows/1/cards/1/activities/1

URL Parameters

none

Delete a Workflow Card Activity

# to delete a record...
curl -v -u token:secret -X DELETE "https://api.planningcenteronline.com/people/v2/workflows/1/cards/1/activities/1"

HTTP Request

DELETE https://api.planningcenteronline.com/people/v2/workflows/1/cards/1/activities/1

WorkflowCardNotes

Workflow Note is a note that has been made on a Workflow Card

List Workflow Card Notes

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/workflows/1/cards/1/notes"

HTTP Request

GET https://api.planningcenteronline.com/people/v2/workflows/1/cards/1/notes

URL Parameters

Parameter Value Description
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)
order created_at prefix with a hyphen (-created_at) to reverse the order

Get a single Workflow Card Note

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/workflows/1/cards/1/notes/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "WorkflowCardNote",
    "id": "1",
    "attributes": {
      "created_at": "2000-01-01T12:00:00Z",
      "note": "string"
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/people/v2/workflows/1/cards/1/notes/1

URL Parameters

none

Create a new Workflow Card Note

# to create a record...
curl -v -u token:secret -X POST -d '{"data":{"type":"WorkflowCardNote","attributes":{...}}}' "https://api.planningcenteronline.com/people/v2/workflows/1/cards/1/notes"

HTTP Request

POST https://api.planningcenteronline.com/people/v2/workflows/1/cards/1/notes

Resource Attributes

Attribute Type
note string

Update an existing Workflow Card Note

# to update a record...
curl -v -u token:secret -X PATCH -d '{"data":{"type":"WorkflowCardNote","id":"1","attributes":{...}}}' "https://api.planningcenteronline.com/people/v2/workflows/1/cards/1/notes/1"

HTTP Request

PATCH https://api.planningcenteronline.com/people/v2/workflows/1/cards/1/notes/1

Resource Attributes

Attribute Type
note string

WorkflowShares

A workflow share defines who can can a workflow

Relationships

Name Type To Many Description
person Person false
workflow Workflow false

List Workflow Shares

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/workflows/1/shares"

HTTP Request

GET https://api.planningcenteronline.com/people/v2/workflows/1/shares

URL Parameters

Parameter Value Description
include person include associated person
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Workflow Share

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/workflows/1/shares/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "WorkflowShare",
    "id": "primary_key",
    "attributes": {
      "group": 1,
      "person_id": 1
    },
    "relationships": {
      "person": {
        "data": {
          "type": "Person",
          "id": "123"
        }
      },
      "workflow": {
        "data": {
          "type": "Workflow",
          "id": "123"
        }
      }
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/people/v2/workflows/1/shares/1

URL Parameters

Parameter Value Description
include person include associated person

Associations for a Workflow Share

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
person https://api.planningcenteronline.com/people/v2/workflows/1/shares/1/person Person

Create a new Workflow Share

# to create a record...
curl -v -u token:secret -X POST -d '{"data":{"type":"WorkflowShare","attributes":{...}}}' "https://api.planningcenteronline.com/people/v2/workflows/1/shares"

HTTP Request

POST https://api.planningcenteronline.com/people/v2/workflows/1/shares

Resource Attributes

Attribute Type
group integer
person_id integer

Update an existing Workflow Share

# to update a record...
curl -v -u token:secret -X PATCH -d '{"data":{"type":"WorkflowShare","id":"1","attributes":{...}}}' "https://api.planningcenteronline.com/people/v2/workflows/1/shares/1"

HTTP Request

PATCH https://api.planningcenteronline.com/people/v2/workflows/1/shares/1

Resource Attributes

Attribute Type
group integer
person_id integer

Delete a Workflow Share

# to delete a record...
curl -v -u token:secret -X DELETE "https://api.planningcenteronline.com/people/v2/workflows/1/shares/1"

HTTP Request

DELETE https://api.planningcenteronline.com/people/v2/workflows/1/shares/1

WorkflowSteps

A Step

Relationships

Name Type To Many Description
workflow Workflow false

List Workflow Steps

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/workflows/1/steps"

HTTP Request

GET https://api.planningcenteronline.com/people/v2/workflows/1/steps

URL Parameters

Parameter Value Description
where[name] string query on a specific name
where[created_at] date_time query on a specific created_at
where[updated_at] date_time query on a specific updated_at
include default_assignee include associated default_assignee
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)
order name prefix with a hyphen (-name) to reverse the order
order created_at prefix with a hyphen (-created_at) to reverse the order
order updated_at prefix with a hyphen (-updated_at) to reverse the order
order sequence prefix with a hyphen (-sequence) to reverse the order

Get a single Workflow Step

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/workflows/1/steps/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "WorkflowStep",
    "id": "primary_key",
    "attributes": {
      "auto_snooze_days": 1,
      "auto_snooze_interval": 1,
      "auto_snooze_value": 1,
      "created_at": "2000-01-01T12:00:00Z",
      "default_assignee_id": 1,
      "description": "string",
      "my_ready_card_count": "unknown",
      "name": "string",
      "sequence": 1,
      "total_ready_card_count": "unknown",
      "total_snoozed_card_count": "unknown",
      "updated_at": "2000-01-01T12:00:00Z"
    },
    "relationships": {
      "workflow": {
        "data": {
          "type": "Workflow",
          "id": "123"
        }
      }
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/people/v2/workflows/1/steps/1

URL Parameters

Parameter Value Description
include default_assignee include associated default_assignee

Associations for a Workflow Step

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
assignee_summaries https://api.planningcenteronline.com/people/v2/workflows/1/steps/1/assignee_summaries WorkflowStepAssigneeSummary
default_assignee https://api.planningcenteronline.com/people/v2/workflows/1/steps/1/default_assignee Person

Update an existing Workflow Step

# to update a record...
curl -v -u token:secret -X PATCH -d '{"data":{"type":"WorkflowStep","id":"1","attributes":{...}}}' "https://api.planningcenteronline.com/people/v2/workflows/1/steps/1"

HTTP Request

PATCH https://api.planningcenteronline.com/people/v2/workflows/1/steps/1

Resource Attributes

Attribute Type
sequence integer

WorkflowStepAssigneeSummaries

The ready and snoozed count for an assignee & step

Relationships

Name Type To Many Description
person Person false
step Step false

List Workflow Step Assignee Summaries

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/workflows/1/steps/1/assignee_summaries"

HTTP Request

GET https://api.planningcenteronline.com/people/v2/workflows/1/steps/1/assignee_summaries

URL Parameters

Parameter Value Description
include person include associated person
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Workflow Step Assignee Summary

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/people/v2/workflows/1/steps/1/assignee_summaries/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "WorkflowStepAssigneeSummary",
    "id": "primary_key",
    "attributes": {
      "ready_count": "unknown",
      "snoozed_count": "unknown"
    },
    "relationships": {
      "person": {
        "data": {
          "type": "Person",
          "id": "123"
        }
      },
      "step": {
        "data": {
          "type": "Step",
          "id": "123"
        }
      }
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/people/v2/workflows/1/steps/1/assignee_summaries/1

URL Parameters

Parameter Value Description
include person include associated person

Associations for a Workflow Step Assignee Summary

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
person https://api.planningcenteronline.com/people/v2/workflows/1/steps/1/assignee_summaries/1/person Person

PCO Services

Schedule your teams, manage your music, and revolutionize the way you plan your worship services.

Arrangements

Each arrangement belongs to a song and is a different version of that song.

Attribute Info

chord_chart_fonts

Possible Values:

chord_chart_font_size

Possible Values:

10, 11, 12, 13, 14, 15, 16, 18, 20, 22, 24, 26, 28, 32, 36, 42, 48

meter

Possible Values:

Relationships

Name Type To Many Description
updated_by Person false
created_by Person false
song Song false

List Arrangements

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/songs/1/arrangements"

HTTP Request

GET https://api.planningcenteronline.com/services/v2/songs/1/arrangements

URL Parameters

Parameter Value Description
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Arrangement

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/songs/1/arrangements/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "Arrangement",
    "id": "primary_key",
    "attributes": {
      "archived_at": "2000-01-01T12:00:00Z",
      "bpm": 1.42,
      "chord_chart": "string",
      "chord_chart_chord_color": 1,
      "chord_chart_columns": 1,
      "chord_chart_font": "string",
      "chord_chart_font_size": 1,
      "chord_chart_key": "string",
      "created_at": "2000-01-01T12:00:00Z",
      "has_chord_chart": true,
      "has_chords": true,
      "length": 1,
      "meter": "string",
      "name": "string",
      "notes": "string",
      "sequence": "string",
      "sequence_short": [

      ],
      "updated_at": "2000-01-01T12:00:00Z"
    },
    "relationships": {
      "created_by": {
        "data": {
          "type": "Person",
          "id": "123"
        }
      },
      "song": {
        "data": {
          "type": "Song",
          "id": "123"
        }
      },
      "updated_by": {
        "data": {
          "type": "Person",
          "id": "123"
        }
      }
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/services/v2/songs/1/arrangements/1

URL Parameters

none

Associations for an Arrangement

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
attachments https://api.planningcenteronline.com/services/v2/songs/1/arrangements/1/attachments Attachment
keys https://api.planningcenteronline.com/services/v2/songs/1/arrangements/1/keys Key
tags https://api.planningcenteronline.com/services/v2/songs/1/arrangements/1/tags Tag

Actions for an Arrangement

You can perform the following actions on an Arrangement by POSTing to the specified URL.

Action URL Description
assign_tags https://api.planningcenteronline.com/services/v2/songs/1/arrangements/1/assign_tags Used to assign tags to an arrangement.

assign_tags

All tags will be replaced so the full data set must be sent.

It expects a body that looks like:

{
    "data": {
        "type": "TagAssignment",
        "attributes": {},
        "relationships": {
            "tags": {
                "data": [
                    {
                        "type": "Tag",
                        "id": "5"
                    }
                ]
            }
        }
    }
}

On success you will get back a 204 No Content.

Create a new Arrangement

# to create a record...
curl -v -u token:secret -X POST -d '{"data":{"type":"Arrangement","attributes":{...}}}' "https://api.planningcenteronline.com/services/v2/songs/1/arrangements"

HTTP Request

POST https://api.planningcenteronline.com/services/v2/songs/1/arrangements

Resource Attributes

Attribute Type
name string
bpm float
length integer
meter string
notes string
chord_chart string
chord_chart_font string
chord_chart_key string
chord_chart_columns integer
chord_chart_font_size integer
chord_chart_chord_color integer

Update an existing Arrangement

# to update a record...
curl -v -u token:secret -X PATCH -d '{"data":{"type":"Arrangement","id":"1","attributes":{...}}}' "https://api.planningcenteronline.com/services/v2/songs/1/arrangements/1"

HTTP Request

PATCH https://api.planningcenteronline.com/services/v2/songs/1/arrangements/1

Resource Attributes

Attribute Type
name string
bpm float
length integer
meter string
notes string
chord_chart string
chord_chart_font string
chord_chart_key string
chord_chart_columns integer
chord_chart_font_size integer
chord_chart_chord_color integer

Delete an Arrangement

# to delete a record...
curl -v -u token:secret -X DELETE "https://api.planningcenteronline.com/services/v2/songs/1/arrangements/1"

HTTP Request

DELETE https://api.planningcenteronline.com/services/v2/songs/1/arrangements/1

Attachments

A file, whether it’s stored on Planning Center or linked from another location.

Relationships

Name Type To Many Description
attachable Plan false
attachment_types AttachmentType true
created_by Person false
updated_by Person false

List Attachments

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/songs/1/attachments"

HTTP Request

GET https://api.planningcenteronline.com/services/v2/songs/1/attachments

URL Parameters

Parameter Value Description
include zooms include associated zooms
include drawings include associated drawings
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Attachment

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/songs/1/attachments/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "Attachment",
    "id": "primary_key",
    "attributes": {
      "allow_mp3_download": true,
      "content_type": "string",
      "created_at": "2000-01-01T12:00:00Z",
      "downloadable": true,
      "file_size": 1,
      "filename": "string",
      "has_preview": true,
      "linked_url": "string",
      "page_order": "string",
      "pco_type": "string",
      "remote_link": "string",
      "streamable": true,
      "thumbnail_url": "string",
      "transposable": true,
      "updated_at": "2000-01-01T12:00:00Z",
      "url": "string",
      "web_streamable": true
    },
    "relationships": {
      "attachable": {
        "data": {
          "type": "Plan",
          "id": "123"
        }
      },
      "attachment_types": {
        "data": [
          {
            "type": "AttachmentType",
            "id": "123"
          }
        ]
      },
      "created_by": {
        "data": {
          "type": "Person",
          "id": "123"
        }
      },
      "updated_by": {
        "data": {
          "type": "Person",
          "id": "123"
        }
      }
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/services/v2/songs/1/attachments/1

URL Parameters

Parameter Value Description
include zooms include associated zooms
include drawings include associated drawings

Associations for an Attachment

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
zooms https://api.planningcenteronline.com/services/v2/songs/1/attachments/1/zooms Zoom

Actions for an Attachment

You can perform the following actions on an Attachment by POSTing to the specified URL.

Action URL Description
preview https://api.planningcenteronline.com/services/v2/songs/1/attachments/1/preview This action is used to get a reduced resolution (preview) version of the attachment. It is accessed by POSTing to .../attachments/1/preview

This will generate the URL and return it in the attachment_url attribute of the AttachmentActivity.

The has_preview attribute of an Attachment indicates if a preview is available. When a preview is not available this action will return a Not Found error with a status code of 404.
open https://api.planningcenteronline.com/services/v2/songs/1/attachments/1/open This action is used to get the attachment file URL. It is accessed by POSTing to .../attachments/1/open

This will generate the URL and return it in the attachment_url attribute of the AttachmentActivity.

Create a new Attachment

# to create a record...
curl -v -u token:secret -X POST -d '{"data":{"type":"Attachment","attributes":{...}}}' "https://api.planningcenteronline.com/services/v2/songs/1/attachments"

HTTP Request

POST https://api.planningcenteronline.com/services/v2/songs/1/attachments

Resource Attributes

Attribute Type
file_upload_identifier string
filename string
remote_link string
page_order string
# to create a record...
curl -v -u token:secret -X POST -d '{"data":{"type":"Attachment","attributes":{...}}}' "https://api.planningcenteronline.com/services/v2/songs/1/arrangements/1/attachments"

HTTP Request

POST https://api.planningcenteronline.com/services/v2/songs/1/arrangements/1/attachments

Resource Attributes

Attribute Type
file_upload_identifier string
filename string
remote_link string
page_order string
# to create a record...
curl -v -u token:secret -X POST -d '{"data":{"type":"Attachment","attributes":{...}}}' "https://api.planningcenteronline.com/services/v2/songs/1/arrangements/1/keys/1/attachments"

HTTP Request

POST https://api.planningcenteronline.com/services/v2/songs/1/arrangements/1/keys/1/attachments

Resource Attributes

Attribute Type
file_upload_identifier string
filename string
remote_link string
page_order string

Update an existing Attachment

# to update a record...
curl -v -u token:secret -X PATCH -d '{"data":{"type":"Attachment","id":"1","attributes":{...}}}' "https://api.planningcenteronline.com/services/v2/songs/1/attachments/1"

HTTP Request

PATCH https://api.planningcenteronline.com/services/v2/songs/1/attachments/1

Resource Attributes

Attribute Type
file_upload_identifier string
filename string
remote_link string
page_order string

Delete an Attachment

# to delete a record...
curl -v -u token:secret -X DELETE "https://api.planningcenteronline.com/services/v2/songs/1/attachments/1"

HTTP Request

DELETE https://api.planningcenteronline.com/services/v2/songs/1/attachments/1

AttachmentActivities

Returned from the open attachment action.

Relationships

Name Type To Many Description
attachment Attachment false

List Attachment Activities

HTTP Request

GET

URL Parameters

Parameter Value Description
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

AttachmentTypes

Create an Attachment Type for each type of file you might want only specific people to see. When you attach a file, you can specify an attachment type to then be able to link the file to a position.

List Attachment Types

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/attachment_types"

HTTP Request

GET https://api.planningcenteronline.com/services/v2/attachment_types

URL Parameters

Parameter Value Description
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Attachment Type

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/attachment_types/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "AttachmentType",
    "id": "primary_key",
    "attributes": {
      "aliases": "string",
      "capoed_chord_charts": true,
      "chord_charts": true,
      "lyrics": true,
      "name": "string",
      "number_charts": true,
      "numeral_charts": true
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/services/v2/attachment_types/1

URL Parameters

none

AvailableSignups

Signups that are available.

Relationships

Name Type To Many Description
organization Organization false
person Person false
service_type ServiceType false

List Available Signups

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/people/1/available_signups"

HTTP Request

GET https://api.planningcenteronline.com/services/v2/people/1/available_signups

URL Parameters

Parameter Value Description
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Available Signup

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/people/1/available_signups/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "AvailableSignup",
    "id": "primary_key",
    "attributes": {
      "organization_name": "string",
      "service_type_name": "string",
      "signups_available": true
    },
    "relationships": {
      "organization": {
        "data": {
          "type": "Organization",
          "id": "123"
        }
      },
      "person": {
        "data": {
          "type": "Person",
          "id": "123"
        }
      },
      "service_type": {
        "data": {
          "type": "ServiceType",
          "id": "123"
        }
      }
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/services/v2/people/1/available_signups/1

URL Parameters

none

Associations for an Available Signup

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
signup_sheets https://api.planningcenteronline.com/services/v2/people/1/available_signups/1/signup_sheets SignupSheet

Actions for an Available Signup

You can perform the following actions on an Available Signup by POSTing to the specified URL.

Action URL Description

BackgroundChecks

represents a missing background check for a person being scheduled to a team that requires a background check

Relationships

Name Type To Many Description
person Person false
team Team false

List Background Checks

HTTP Request

GET

URL Parameters

Parameter Value Description
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Blockouts

An object representing a blockout date, and an optional recurrence pattern

Attribute Info

repeat_frequency

Possible values:

repeat_interval

Possible values:

repeat_period

Possible values:

Relationships

Name Type To Many Description
person Person false
organization Organization false

List Blockouts

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/people/1/blockouts"

HTTP Request

GET https://api.planningcenteronline.com/services/v2/people/1/blockouts

URL Parameters

Parameter Value Description
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Blockout

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/people/1/blockouts/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "Blockout",
    "id": "primary_key",
    "attributes": {
      "created_at": "2000-01-01T12:00:00Z",
      "description": "string",
      "ends_at": "2000-01-01T12:00:00Z",
      "reason": "string",
      "repeat_frequency": "string",
      "repeat_interval": "string",
      "repeat_period": "string",
      "repeat_until": "2000-01-01",
      "settings": "string",
      "share": true,
      "starts_at": "2000-01-01T12:00:00Z",
      "time_zone": "string",
      "updated_at": "2000-01-01T12:00:00Z"
    },
    "relationships": {
      "organization": {
        "data": {
          "type": "Organization",
          "id": "123"
        }
      },
      "person": {
        "data": {
          "type": "Person",
          "id": "123"
        }
      }
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/services/v2/people/1/blockouts/1

URL Parameters

none

Associations for a Blockout

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
blockout_dates https://api.planningcenteronline.com/services/v2/people/1/blockouts/1/blockout_dates BlockoutDate
blockout_exceptions https://api.planningcenteronline.com/services/v2/people/1/blockouts/1/blockout_exceptions BlockoutException

Create a new Blockout

# to create a record...
curl -v -u token:secret -X POST -d '{"data":{"type":"Blockout","attributes":{...}}}' "https://api.planningcenteronline.com/services/v2/people/1/blockouts"

HTTP Request

POST https://api.planningcenteronline.com/services/v2/people/1/blockouts

Resource Attributes

Attribute Type
reason string
repeat_frequency string
repeat_interval string
repeat_period string
share boolean
repeat_until date
starts_at date_time
ends_at date_time

Update an existing Blockout

# to update a record...
curl -v -u token:secret -X PATCH -d '{"data":{"type":"Blockout","id":"1","attributes":{...}}}' "https://api.planningcenteronline.com/services/v2/people/1/blockouts/1"

HTTP Request

PATCH https://api.planningcenteronline.com/services/v2/people/1/blockouts/1

Resource Attributes

Attribute Type
reason string
repeat_frequency string
repeat_interval string
repeat_period string
share boolean
repeat_until date
starts_at date_time
ends_at date_time

Delete a Blockout

# to delete a record...
curl -v -u token:secret -X DELETE "https://api.planningcenteronline.com/services/v2/people/1/blockouts/1"

HTTP Request

DELETE https://api.planningcenteronline.com/services/v2/people/1/blockouts/1

BlockoutDates

The actual dates generated by the blockout or its recurrence pattern. Generated up to a year in advance

Relationships

Name Type To Many Description
person Person false
blockout Blockout false

List Blockout Dates

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/people/1/blockouts/1/blockout_dates"

HTTP Request

GET https://api.planningcenteronline.com/services/v2/people/1/blockouts/1/blockout_dates

URL Parameters

Parameter Value Description
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Blockout Date

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/people/1/blockouts/1/blockout_dates/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "BlockoutDate",
    "id": "primary_key",
    "attributes": {
      "ends_at": "2000-01-01T12:00:00Z",
      "reason": "string",
      "share": true,
      "starts_at": "2000-01-01T12:00:00Z"
    },
    "relationships": {
      "blockout": {
        "data": {
          "type": "Blockout",
          "id": "123"
        }
      },
      "person": {
        "data": {
          "type": "Person",
          "id": "123"
        }
      }
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/services/v2/people/1/blockouts/1/blockout_dates/1

URL Parameters

none

BlockoutExceptions

A single exception for the dates generated from the blockout

Relationships

Name Type To Many Description
blockout Blockout false

List Blockout Exceptions

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/people/1/blockouts/1/blockout_exceptions"

HTTP Request

GET https://api.planningcenteronline.com/services/v2/people/1/blockouts/1/blockout_exceptions

URL Parameters

Parameter Value Description
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Blockout Exception

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/people/1/blockouts/1/blockout_exceptions/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "BlockoutException",
    "id": "primary_key",
    "attributes": {
      "created_at": "2000-01-01T12:00:00Z",
      "date": "2000-01-01",
      "updated_at": "2000-01-01T12:00:00Z"
    },
    "relationships": {
      "blockout": {
        "data": {
          "type": "Blockout",
          "id": "123"
        }
      }
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/services/v2/people/1/blockouts/1/blockout_exceptions/1

URL Parameters

none

Create a new Blockout Exception

# to create a record...
curl -v -u token:secret -X POST -d '{"data":{"type":"BlockoutException","attributes":{...}}}' "https://api.planningcenteronline.com/services/v2/people/1/blockouts/1/blockout_exceptions"

HTTP Request

POST https://api.planningcenteronline.com/services/v2/people/1/blockouts/1/blockout_exceptions

Resource Attributes

Attribute Type
date date

CheckIns

Relationships

Name Type To Many Description
plan_time PlanTime false
plan Plan false
plan_person PlanPerson false

List Check Ins

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/people/1/plan_people/1/check_ins"

HTTP Request

GET https://api.planningcenteronline.com/services/v2/people/1/plan_people/1/check_ins

URL Parameters

Parameter Value Description
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Check In

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/people/1/plan_people/1/check_ins/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "CheckIn",
    "id": "primary_key",
    "attributes": {
      "check_ins_event_id": "primary_key",
      "check_ins_event_period_id": "primary_key",
      "checked_in_at": "time"
    },
    "relationships": {
      "plan": {
        "data": {
          "type": "Plan",
          "id": "123"
        }
      },
      "plan_person": {
        "data": {
          "type": "PlanPerson",
          "id": "123"
        }
      },
      "plan_time": {
        "data": {
          "type": "PlanTime",
          "id": "123"
        }
      }
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/services/v2/people/1/plan_people/1/check_ins/1

URL Parameters

none

Contributors

A Contributor Resource

Relationships

Name Type To Many Description
plan Plan false
person Person false

List Contributors

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/series/1/plans/1/contributors"

HTTP Request

GET https://api.planningcenteronline.com/services/v2/series/1/plans/1/contributors

URL Parameters

Parameter Value Description
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)
order updated_at prefix with a hyphen (-updated_at) to reverse the order
order created_at prefix with a hyphen (-created_at) to reverse the order

Get a single Contributor

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/series/1/plans/1/contributors/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "Contributor",
    "id": "primary_key",
    "attributes": {
      "created_at": "2000-01-01T12:00:00Z",
      "full_name": "string",
      "photo_thumbnail_url": "string",
      "updated_at": "2000-01-01T12:00:00Z"
    },
    "relationships": {
      "person": {
        "data": {
          "type": "Person",
          "id": "123"
        }
      },
      "plan": {
        "data": {
          "type": "Plan",
          "id": "123"
        }
      }
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/services/v2/series/1/plans/1/contributors/1

URL Parameters

none

EmailTemplates

A EmailTemplate Resource

Attribute Info

template_owner

Who owns the template. Will either be a Person or Organization. System supplied templates will be null.

Relationships

Name Type To Many Description
template_owner Organization false

List Email Templates

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/email_templates"

HTTP Request

GET https://api.planningcenteronline.com/services/v2/email_templates

URL Parameters

Parameter Value Description
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Email Template

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/email_templates/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "EmailTemplate",
    "id": "primary_key",
    "attributes": {
      "created_at": "2000-01-01T12:00:00Z",
      "html_body": "string",
      "kind": "string",
      "subject": "string",
      "updated_at": "2000-01-01T12:00:00Z"
    },
    "relationships": {
      "template_owner": {
        "data": {
          "type": "Organization",
          "id": "123"
        }
      }
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/services/v2/email_templates/1

URL Parameters

none

Actions for an Email Template

You can perform the following actions on an Email Template by POSTing to the specified URL.

Action URL Description
render https://api.planningcenteronline.com/services/v2/email_templates/1/render Render an email template and fill in the persons details

render

Render the template with information from the person.

{
  "data": {
    "attributes": {
      "format": "html|text"
    },
    "relationships": {
      "person": {
        "data": {
          "type": "Person",
          "id": "1"
        }
      }
    }
  }
}

Create a new Email Template

# to create a record...
curl -v -u token:secret -X POST -d '{"data":{"type":"EmailTemplate","attributes":{...}}}' "https://api.planningcenteronline.com/services/v2/email_templates"

HTTP Request

POST https://api.planningcenteronline.com/services/v2/email_templates

Resource Attributes

Attribute Type
html_body string
subject string
kind string

Update an existing Email Template

# to update a record...
curl -v -u token:secret -X PATCH -d '{"data":{"type":"EmailTemplate","id":"1","attributes":{...}}}' "https://api.planningcenteronline.com/services/v2/email_templates/1"

HTTP Request

PATCH https://api.planningcenteronline.com/services/v2/email_templates/1

Resource Attributes

Attribute Type
html_body string
subject string

Delete an Email Template

# to delete a record...
curl -v -u token:secret -X DELETE "https://api.planningcenteronline.com/services/v2/email_templates/1"

HTTP Request

DELETE https://api.planningcenteronline.com/services/v2/email_templates/1

EmailTemplateRenderedResponses

A EmailTemplateRenderedResponse Resource

Relationships

Name Type To Many Description
person Person false
email_template EmailTemplate false

List Email Template Rendered Responses

HTTP Request

GET

URL Parameters

Parameter Value Description
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Folders

A folder is a container used to organize multiple Service Types or other Folders.

Relationships

Name Type To Many Description
parent Folder false

List Folders

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/folders"

HTTP Request

GET https://api.planningcenteronline.com/services/v2/folders

URL Parameters

Parameter Value Description
include service_types include associated service_types
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Folder

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/folders/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "Folder",
    "id": "primary_key",
    "attributes": {
      "container": "string",
      "created_at": "2000-01-01T12:00:00Z",
      "name": "string",
      "updated_at": "2000-01-01T12:00:00Z"
    },
    "relationships": {
      "parent": {
        "data": {
          "type": "Folder",
          "id": "123"
        }
      }
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/services/v2/folders/1

URL Parameters

Parameter Value Description
include service_types include associated service_types

Associations for a Folder

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
folders https://api.planningcenteronline.com/services/v2/folders/1/folders Folder
service_types https://api.planningcenteronline.com/services/v2/folders/1/service_types ServiceType

Actions for a Folder

You can perform the following actions on a Folder by POSTing to the specified URL.

Action URL Description

Create a new Folder

# to create a record...
curl -v -u token:secret -X POST -d '{"data":{"type":"Folder","attributes":{...}}}' "https://api.planningcenteronline.com/services/v2/service_types"

HTTP Request

POST https://api.planningcenteronline.com/services/v2/service_types

Resource Attributes

Attribute Type
name string
# to create a record...
curl -v -u token:secret -X POST -d '{"data":{"type":"Folder","attributes":{...}}}' "https://api.planningcenteronline.com/services/v2/folders/1/service_types"

HTTP Request

POST https://api.planningcenteronline.com/services/v2/folders/1/service_types

Resource Attributes

Attribute Type
name string

Update an existing Folder

# to update a record...
curl -v -u token:secret -X PATCH -d '{"data":{"type":"Folder","id":"1","attributes":{...}}}' "https://api.planningcenteronline.com/services/v2/folders/1"

HTTP Request

PATCH https://api.planningcenteronline.com/services/v2/folders/1

Resource Attributes

Attribute Type
name string

Delete a Folder

# to delete a record...
curl -v -u token:secret -X DELETE "https://api.planningcenteronline.com/services/v2/folders/1"

HTTP Request

DELETE https://api.planningcenteronline.com/services/v2/folders/1

Items

An item in a plan.

Attribute Info

item_type

There are 4 possible values:

This value can only be set when an item is created. The only value that you can pass is header. If no value is passed then item will be used. To create a media item you’ll attach a video media to the item, and to create a song item, you’ll attach a song.

service_position

There are 3 possible values:

Relationships

Name Type To Many Description
plan Plan false
song Song false
arrangement Arrangement false
key Key false
selected_layout Layout false

List Items

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/songs/1/last_scheduled_item"

HTTP Request

GET https://api.planningcenteronline.com/services/v2/songs/1/last_scheduled_item

URL Parameters

Parameter Value Description
include item_notes include associated item_notes
include song include associated song
include media include associated media
include arrangement include associated arrangement
include key include associated key
include item_times include associated item_times
include selected_attachment include associated selected_attachment
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Item

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/songs/1/last_scheduled_item/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "Item",
    "id": "primary_key",
    "attributes": {
      "created_at": "2000-01-01T12:00:00Z",
      "custom_arrangement_sequence": [

      ],
      "custom_arrangement_sequence_short": [

      ],
      "description": "string",
      "html_details": "string",
      "item_type": "string",
      "key_name": "string",
      "length": 1,
      "sequence": 1,
      "service_position": "string",
      "title": "string",
      "updated_at": "2000-01-01T12:00:00Z"
    },
    "relationships": {
      "arrangement": {
        "data": {
          "type": "Arrangement",
          "id": "123"
        }
      },
      "key": {
        "data": {
          "type": "Key",
          "id": "123"
        }
      },
      "plan": {
        "data": {
          "type": "Plan",
          "id": "123"
        }
      },
      "selected_layout": {
        "data": {
          "type": "Layout",
          "id": "123"
        }
      },
      "song": {
        "data": {
          "type": "Song",
          "id": "123"
        }
      }
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/services/v2/songs/1/last_scheduled_item/1

URL Parameters

Parameter Value Description
include item_notes include associated item_notes
include song include associated song
include media include associated media
include arrangement include associated arrangement
include key include associated key
include item_times include associated item_times
include selected_attachment include associated selected_attachment

Associations for an Item

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
arrangement https://api.planningcenteronline.com/services/v2/songs/1/last_scheduled_item/1/arrangement Arrangement
attachments https://api.planningcenteronline.com/services/v2/songs/1/last_scheduled_item/1/attachments Attachment
item_notes https://api.planningcenteronline.com/services/v2/songs/1/last_scheduled_item/1/item_notes ItemNote
item_times https://api.planningcenteronline.com/services/v2/songs/1/last_scheduled_item/1/item_times ItemTime
key https://api.planningcenteronline.com/services/v2/songs/1/last_scheduled_item/1/key Key
media https://api.planningcenteronline.com/services/v2/songs/1/last_scheduled_item/1/media Media
selected_attachment https://api.planningcenteronline.com/services/v2/songs/1/last_scheduled_item/1/selected_attachment Attachment
song https://api.planningcenteronline.com/services/v2/songs/1/last_scheduled_item/1/song Song

Create a new Item

# to create a record...
curl -v -u token:secret -X POST -d '{"data":{"type":"Item","attributes":{...}}}' "https://api.planningcenteronline.com/services/v2/series/1/plans/1/items"

HTTP Request

POST https://api.planningcenteronline.com/services/v2/series/1/plans/1/items

Resource Attributes

Attribute Type
length integer
description string
title string
service_position string
html_details string
item_type string

Update an existing Item

# to update a record...
curl -v -u token:secret -X PATCH -d '{"data":{"type":"Item","id":"1","attributes":{...}}}' "https://api.planningcenteronline.com/services/v2/songs/1/last_scheduled_item/1"

HTTP Request

PATCH https://api.planningcenteronline.com/services/v2/songs/1/last_scheduled_item/1

Resource Attributes

Attribute Type
length integer
description string
title string
service_position string
html_details string

Delete an Item

# to delete a record...
curl -v -u token:secret -X DELETE "https://api.planningcenteronline.com/services/v2/songs/1/last_scheduled_item/1"

HTTP Request

DELETE https://api.planningcenteronline.com/services/v2/songs/1/last_scheduled_item/1

ItemNotes

A plan item note that belongs to a category.

Note: You can only assign the category on create. If you want to change category; delete the current note, and create a new one passing in the category_id then.

Relationships

Name Type To Many Description
item_note_category ItemNoteCategory false
item Item false

List Item Notes

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/songs/1/last_scheduled_item/1/item_notes"

HTTP Request

GET https://api.planningcenteronline.com/services/v2/songs/1/last_scheduled_item/1/item_notes

URL Parameters

Parameter Value Description
include item_note_category include associated item_note_category
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Item Note

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/songs/1/last_scheduled_item/1/item_notes/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "ItemNote",
    "id": "primary_key",
    "attributes": {
      "category_name": "string",
      "content": "string",
      "created_at": "2000-01-01T12:00:00Z",
      "updated_at": "2000-01-01T12:00:00Z"
    },
    "relationships": {
      "item": {
        "data": {
          "type": "Item",
          "id": "123"
        }
      },
      "item_note_category": {
        "data": {
          "type": "ItemNoteCategory",
          "id": "123"
        }
      }
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/services/v2/songs/1/last_scheduled_item/1/item_notes/1

URL Parameters

Parameter Value Description
include item_note_category include associated item_note_category

Associations for an Item Note

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
item_note_category https://api.planningcenteronline.com/services/v2/songs/1/last_scheduled_item/1/item_notes/1/item_note_category ItemNoteCategory

Create a new Item Note

# to create a record...
curl -v -u token:secret -X POST -d '{"data":{"type":"ItemNote","attributes":{...}}}' "https://api.planningcenteronline.com/services/v2/songs/1/last_scheduled_item/1/item_notes"

HTTP Request

POST https://api.planningcenteronline.com/services/v2/songs/1/last_scheduled_item/1/item_notes

Resource Attributes

Attribute Type
content string

Update an existing Item Note

# to update a record...
curl -v -u token:secret -X PATCH -d '{"data":{"type":"ItemNote","id":"1","attributes":{...}}}' "https://api.planningcenteronline.com/services/v2/songs/1/last_scheduled_item/1/item_notes/1"

HTTP Request

PATCH https://api.planningcenteronline.com/services/v2/songs/1/last_scheduled_item/1/item_notes/1

Resource Attributes

Attribute Type
content string

Delete an Item Note

# to delete a record...
curl -v -u token:secret -X DELETE "https://api.planningcenteronline.com/services/v2/songs/1/last_scheduled_item/1/item_notes/1"

HTTP Request

DELETE https://api.planningcenteronline.com/services/v2/songs/1/last_scheduled_item/1/item_notes/1

ItemNoteCategories

A category of plan item notes for an entire Service Type.

Relationships

Name Type To Many Description
service_type ServiceType false

List Item Note Categories

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/service_types/1/item_note_categories"

HTTP Request

GET https://api.planningcenteronline.com/services/v2/service_types/1/item_note_categories

URL Parameters

Parameter Value Description
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Item Note Category

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/service_types/1/item_note_categories/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "ItemNoteCategory",
    "id": "primary_key",
    "attributes": {
      "created_at": "2000-01-01T12:00:00Z",
      "name": "string",
      "sequence": 1,
      "updated_at": "2000-01-01T12:00:00Z"
    },
    "relationships": {
      "service_type": {
        "data": {
          "type": "ServiceType",
          "id": "123"
        }
      }
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/services/v2/service_types/1/item_note_categories/1

URL Parameters

none

ItemTimes

Relationships

Name Type To Many Description
item Item false
plan_time PlanTime false
plan Plan false

List Item Times

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/songs/1/last_scheduled_item/1/item_times"

HTTP Request

GET https://api.planningcenteronline.com/services/v2/songs/1/last_scheduled_item/1/item_times

URL Parameters

Parameter Value Description
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Item Time

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/songs/1/last_scheduled_item/1/item_times/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "ItemTime",
    "id": "primary_key",
    "attributes": {
      "exclude": true,
      "length_offset": 1,
      "live_end_at": "2000-01-01T12:00:00Z",
      "live_start_at": "2000-01-01T12:00:00Z"
    },
    "relationships": {
      "item": {
        "data": {
          "type": "Item",
          "id": "123"
        }
      },
      "plan": {
        "data": {
          "type": "Plan",
          "id": "123"
        }
      },
      "plan_time": {
        "data": {
          "type": "PlanTime",
          "id": "123"
        }
      }
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/services/v2/songs/1/last_scheduled_item/1/item_times/1

URL Parameters

none

Keys

Each song arrangement can have multiple keys. A key is the pitch center of the song.

Attribute Info

starting_key

Possible Values:

Ab, A, A#, Bb, B, C, C#, Db, D, D#, Eb, E, F, F#, Gb, G, G#, Abm, Am, A#m, Bbm, Bm, Cm, C#m, Dbm, Dm, D#m, Ebm, Em, Fm, F#m, Gbm, Gm, G#m

To set the key to minor append m to the key. e.g. Cm

ending_key

Possible Values:

Ab, A, A#, Bb, B, C, C#, Db, D, D#, Eb, E, F, F#, Gb, G, G#, Abm, Am, A#m, Bbm, Bm, Cm, C#m, Dbm, Dm, D#m, Ebm, Em, Fm, F#m, Gbm, Gm, G#m

To set the key to minor append m to the key. e.g. Cm

alternate_keys

An array of objects.

{ "name": "My Alternate Key", "key": "B" }

Relationships

Name Type To Many Description
arrangement Arrangement false

List Keys

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/songs/1/arrangements/1/keys"

HTTP Request

GET https://api.planningcenteronline.com/services/v2/songs/1/arrangements/1/keys

URL Parameters

Parameter Value Description
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)
order created_at prefix with a hyphen (-created_at) to reverse the order
order updated_at prefix with a hyphen (-updated_at) to reverse the order

Get a single Key

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/songs/1/arrangements/1/keys/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "Key",
    "id": "primary_key",
    "attributes": {
      "alternate_keys": "string",
      "created_at": "2000-01-01T12:00:00Z",
      "ending_key": "string",
      "ending_minor": true,
      "name": "string",
      "starting_key": "string",
      "starting_minor": true,
      "updated_at": "2000-01-01T12:00:00Z"
    },
    "relationships": {
      "arrangement": {
        "data": {
          "type": "Arrangement",
          "id": "123"
        }
      }
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/services/v2/songs/1/arrangements/1/keys/1

URL Parameters

none

Associations for a Key

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
attachments https://api.planningcenteronline.com/services/v2/songs/1/arrangements/1/keys/1/attachments Attachment

Create a new Key

# to create a record...
curl -v -u token:secret -X POST -d '{"data":{"type":"Key","attributes":{...}}}' "https://api.planningcenteronline.com/services/v2/songs/1/arrangements/1/keys"

HTTP Request

POST https://api.planningcenteronline.com/services/v2/songs/1/arrangements/1/keys

Resource Attributes

Attribute Type
name string
starting_key string
ending_key string
alternate_keys string

Update an existing Key

# to update a record...
curl -v -u token:secret -X PATCH -d '{"data":{"type":"Key","id":"1","attributes":{...}}}' "https://api.planningcenteronline.com/services/v2/songs/1/arrangements/1/keys/1"

HTTP Request

PATCH https://api.planningcenteronline.com/services/v2/songs/1/arrangements/1/keys/1

Resource Attributes

Attribute Type
name string
starting_key string
ending_key string
alternate_keys string

Delete a Key

# to delete a record...
curl -v -u token:secret -X DELETE "https://api.planningcenteronline.com/services/v2/songs/1/arrangements/1/keys/1"

HTTP Request

DELETE https://api.planningcenteronline.com/services/v2/songs/1/arrangements/1/keys/1

Layouts

A Layout is used for formatting text for each item in Projector.

List Layouts

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/service_types/1/layouts"

HTTP Request

GET https://api.planningcenteronline.com/services/v2/service_types/1/layouts

URL Parameters

Parameter Value Description
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Layout

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/service_types/1/layouts/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "Layout",
    "id": "primary_key",
    "attributes": {
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/services/v2/service_types/1/layouts/1

URL Parameters

none

Medias

A piece of media

Attribute Info

media_type

Possible Values:

List Medias

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/medias"

HTTP Request

GET https://api.planningcenteronline.com/services/v2/medias

URL Parameters

Parameter Value Description
filter audio filter using the named scope “audio”
filter background_audio filter using the named scope “background_audio”
filter background_image filter using the named scope “background_image”
filter background_video filter using the named scope “background_video”
filter countdown filter using the named scope “countdown”
filter document filter using the named scope “document”
filter drama filter using the named scope “drama”
filter image filter using the named scope “image”
filter powerpoint filter using the named scope “powerpoint”
filter song_video filter using the named scope “song_video”
filter video filter using the named scope “video”
include attachments include associated attachments
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Media

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/medias/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "Media",
    "id": "primary_key",
    "attributes": {
      "created_at": "2000-01-01T12:00:00Z",
      "creator_name": "string",
      "image_url": "string",
      "length": 1,
      "media_type": "string",
      "media_type_name": "string",
      "preview_content_type": "string",
      "preview_file_name": "string",
      "preview_file_size": 1,
      "preview_updated_at": "2000-01-01T12:00:00Z",
      "preview_url": "string",
      "themes": "string",
      "thumbnail_content_type": "string",
      "thumbnail_file_name": "string",
      "thumbnail_file_size": 1,
      "thumbnail_updated_at": "2000-01-01T12:00:00Z",
      "thumbnail_url": "string",
      "title": "string",
      "updated_at": "2000-01-01T12:00:00Z"
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/services/v2/medias/1

URL Parameters

Parameter Value Description
include attachments include associated attachments

Associations for a Media

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
attachments https://api.planningcenteronline.com/services/v2/medias/1/attachments Attachment
media_schedules https://api.planningcenteronline.com/services/v2/medias/1/media_schedules MediaSchedule
tags https://api.planningcenteronline.com/services/v2/medias/1/tags Tag

Actions for a Media

You can perform the following actions on a Media by POSTing to the specified URL.

Action URL Description
assign_tags https://api.planningcenteronline.com/services/v2/medias/1/assign_tags Used to assign tags to a media.

assign_tags

All tags will be replaced so the full data set must be sent.

It expects a body that looks like:

{
    "data": {
        "type": "TagAssignment",
        "attributes": {},
        "relationships": {
            "tags": {
                "data": [
                    {
                        "type": "Tag",
                        "id": "5"
                    }
                ]
            }
        }
    }
}

On success you will get back a 204 No Content.

Create a new Media

# to create a record...
curl -v -u token:secret -X POST -d '{"data":{"type":"Media","attributes":{...}}}' "https://api.planningcenteronline.com/services/v2/medias"

HTTP Request

POST https://api.planningcenteronline.com/services/v2/medias

Resource Attributes

Attribute Type
media_type string
title string
creator_name string
themes string

Update an existing Media

# to update a record...
curl -v -u token:secret -X PATCH -d '{"data":{"type":"Media","id":"1","attributes":{...}}}' "https://api.planningcenteronline.com/services/v2/medias/1"

HTTP Request

PATCH https://api.planningcenteronline.com/services/v2/medias/1

Resource Attributes

Attribute Type
media_type string
title string
creator_name string
themes string

Delete a Media

# to delete a record...
curl -v -u token:secret -X DELETE "https://api.planningcenteronline.com/services/v2/medias/1"

HTTP Request

DELETE https://api.planningcenteronline.com/services/v2/medias/1

MediaSchedules

Relationships

Name Type To Many Description
plan Plan false
service_type ServiceType false

List Media Schedules

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/media/1/media_schedules"

HTTP Request

GET https://api.planningcenteronline.com/services/v2/media/1/media_schedules

URL Parameters

Parameter Value Description
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Media Schedule

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/media/1/media_schedules/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "MediaSchedule",
    "id": "primary_key",
    "attributes": {
      "plan_dates": "string",
      "plan_short_dates": "string",
      "plan_sort_date": "2000-01-01T12:00:00Z",
      "service_type_name": "string"
    },
    "relationships": {
      "plan": {
        "data": {
          "type": "Plan",
          "id": "123"
        }
      },
      "service_type": {
        "data": {
          "type": "ServiceType",
          "id": "123"
        }
      }
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/services/v2/media/1/media_schedules/1

URL Parameters

none

NeededPositions

An amount of unfilled positions needed within a team in a plan.

Relationships

Name Type To Many Description
team Team false
time PlanTime false
plan Plan false

List Needed Positions

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/series/1/plans/1/needed_positions"

HTTP Request

GET https://api.planningcenteronline.com/services/v2/series/1/plans/1/needed_positions

URL Parameters

Parameter Value Description
include team include associated team
include time include associated time
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Needed Position

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/series/1/plans/1/needed_positions/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "NeededPosition",
    "id": "primary_key",
    "attributes": {
      "quantity": 1,
      "scheduled_to": "string",
      "team_position_name": "string"
    },
    "relationships": {
      "plan": {
        "data": {
          "type": "Plan",
          "id": "123"
        }
      },
      "team": {
        "data": {
          "type": "Team",
          "id": "123"
        }
      },
      "time": {
        "data": {
          "type": "PlanTime",
          "id": "123"
        }
      }
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/services/v2/series/1/plans/1/needed_positions/1

URL Parameters

Parameter Value Description
include team include associated team
include time include associated time

Associations for a Needed Position

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
team https://api.planningcenteronline.com/services/v2/series/1/plans/1/needed_positions/1/team Team
time https://api.planningcenteronline.com/services/v2/series/1/plans/1/needed_positions/1/time PlanTime

Create a new Needed Position

# to create a record...
curl -v -u token:secret -X POST -d '{"data":{"type":"NeededPosition","attributes":{...}}}' "https://api.planningcenteronline.com/services/v2/series/1/plans/1/needed_positions"

HTTP Request

POST https://api.planningcenteronline.com/services/v2/series/1/plans/1/needed_positions

Resource Attributes

Attribute Type
quantity integer

Update an existing Needed Position

# to update a record...
curl -v -u token:secret -X PATCH -d '{"data":{"type":"NeededPosition","id":"1","attributes":{...}}}' "https://api.planningcenteronline.com/services/v2/series/1/plans/1/needed_positions/1"

HTTP Request

PATCH https://api.planningcenteronline.com/services/v2/series/1/plans/1/needed_positions/1

Resource Attributes

Attribute Type
quantity integer

Delete a Needed Position

# to delete a record...
curl -v -u token:secret -X DELETE "https://api.planningcenteronline.com/services/v2/series/1/plans/1/needed_positions/1"

HTTP Request

DELETE https://api.planningcenteronline.com/services/v2/series/1/plans/1/needed_positions/1

Organizations

The root level of an organization where account-level settings are applied.

Attribute Info

date_format

Two possible values, US EU

Get a single Organization

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2"

The above command returns JSON structured like this:

{
  "data": {
    "type": "Organization",
    "id": "primary_key",
    "attributes": {
      "beta": true,
      "ccli": "string",
      "ccli_connected": true,
      "created_at": "2000-01-01T12:00:00Z",
      "date_format": 1,
      "file_storage_exceeded": true,
      "legacy_id": "primary_key",
      "music_stand_enabled": true,
      "name": "string",
      "owner_name": "string",
      "people_allowed": 1,
      "people_remaining": 1,
      "projector_enabled": true,
      "secret": "string",
      "time_zone": "string",
      "twenty_four_hour_time": true,
      "updated_at": "2000-01-01T12:00:00Z"
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/services/v2

URL Parameters

none

Associations for an Organization

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
attachment_types https://api.planningcenteronline.com/services/v2/attachment_types AttachmentType
email_templates https://api.planningcenteronline.com/services/v2/email_templates EmailTemplate
folders https://api.planningcenteronline.com/services/v2/folders Folder
media https://api.planningcenteronline.com/services/v2/media Media
people https://api.planningcenteronline.com/services/v2/people Person
plans https://api.planningcenteronline.com/services/v2/plans Organization
series https://api.planningcenteronline.com/services/v2/series Series
service_types https://api.planningcenteronline.com/services/v2/service_types ServiceType
songs https://api.planningcenteronline.com/services/v2/songs Song
tag_groups https://api.planningcenteronline.com/services/v2/tag_groups TagGroup
teams https://api.planningcenteronline.com/services/v2/teams Team

Actions for an Organization

You can perform the following actions on an Organization by POSTing to the specified URL.

Action URL Description

People

A person added to PCO Services.

Attribute Info

legacy_id

If you’ve used Person.id from API v1 this attribute can be used to map from those old IDs to the new IDs used in API v2

Relationships

Name Type To Many Description
created_by Person false
updated_by Person false

List People

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/people"

HTTP Request

GET https://api.planningcenteronline.com/services/v2/people

URL Parameters

Parameter Value Description
where[legacy_id] primarykey_ query on a specific legacy_id
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)
order first_name prefix with a hyphen (-first_name) to reverse the order
order last_name prefix with a hyphen (-last_name) to reverse the order
order created_at prefix with a hyphen (-created_at) to reverse the order
order updated_at prefix with a hyphen (-updated_at) to reverse the order

Get a single Person

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/people/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "Person",
    "id": "primary_key",
    "attributes": {
      "anniversary": "2000-01-01T12:00:00Z",
      "birthdate": "2000-01-01T12:00:00Z",
      "created_at": "2000-01-01T12:00:00Z",
      "facebook_id": 1,
      "first_name": "string",
      "ical_code": "string",
      "last_name": "string",
      "legacy_id": "primary_key",
      "logged_in_at": "2000-01-01T12:00:00Z",
      "max_permissions": "string",
      "me_tab": "string",
      "media_tab": "string",
      "middle_name": "string",
      "notes": "string",
      "passed_background_check": true,
      "people_tab": "string",
      "permissions": "string",
      "photo_thumbnail_url": "string",
      "photo_url": "string",
      "plans_tab": "string",
      "site_administrator": true,
      "songs_tab": "string",
      "status": "string",
      "updated_at": "2000-01-01T12:00:00Z"
    },
    "relationships": {
      "created_by": {
        "data": {
          "type": "Person",
          "id": "123"
        }
      },
      "updated_by": {
        "data": {
          "type": "Person",
          "id": "123"
        }
      }
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/services/v2/people/1

URL Parameters

none

Associations for a Person

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
available_signups https://api.planningcenteronline.com/services/v2/people/1/available_signups AvailableSignup
blockouts https://api.planningcenteronline.com/services/v2/people/1/blockouts Blockout
person_team_position_assignments https://api.planningcenteronline.com/services/v2/people/1/person_team_position_assignments PersonTeamPositionAssignment
plan_people https://api.planningcenteronline.com/services/v2/people/1/plan_people PlanPerson
schedules https://api.planningcenteronline.com/services/v2/people/1/schedules Schedule
tags https://api.planningcenteronline.com/services/v2/people/1/tags Tag
team_leaders https://api.planningcenteronline.com/services/v2/people/1/team_leaders TeamLeader
text_settings https://api.planningcenteronline.com/services/v2/people/1/text_settings TextSetting

Actions for a Person

You can perform the following actions on a Person by POSTing to the specified URL.

Action URL Description
assign_tags https://api.planningcenteronline.com/services/v2/people/1/assign_tags Used to assign tags to a person.

assign_tags

All tags will be replaced so the full data set must be sent.

It expects a body that looks like:

{
    "data": {
        "type": "TagAssignment",
        "attributes": {},
        "relationships": {
            "tags": {
                "data": [
                    {
                        "type": "Tag",
                        "id": "5"
                    }
                ]
            }
        }
    }
}

On success you will get back a 204 No Content.

Update an existing Person

# to update a record...
curl -v -u token:secret -X PATCH -d '{"data":{"type":"Person","id":"1","attributes":{...}}}' "https://api.planningcenteronline.com/services/v2/people/1"

HTTP Request

PATCH https://api.planningcenteronline.com/services/v2/people/1

Resource Attributes

Attribute Type
permissions string

PersonTeamPositionAssignments

A person’s assignment to a position within a team.

Attribute Info

schedule_preference

Possible Values: “Every week” “Every other week” “Every 3rd week” “Every 4th week” “Every 5th week” “Every 6th week” “Once a month” “Twice a month” “Three times a month” “Choose Weeks”

preferred_weeks

When schedule_preference is set to “Choose Weeks” then this indicates which weeks are preferred (checked).

e.g. [‘1’, '3’, '5’] to prefer odd numbered weeks.

time_preference_option_ids

Indicates which Time Preference Options are preferred (checked).

Relationships

Name Type To Many Description
person Person false
team_position TeamPosition false
time_preference_options TimePreferenceOption true

List Person Team Position Assignments

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/people/1/person_team_position_assignments"

HTTP Request

GET https://api.planningcenteronline.com/services/v2/people/1/person_team_position_assignments

URL Parameters

Parameter Value Description
include person include associated person
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)
order first_name prefix with a hyphen (-first_name) to reverse the order
order last_name prefix with a hyphen (-last_name) to reverse the order

Get a single Person Team Position Assignment

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/people/1/person_team_position_assignments/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "PersonTeamPositionAssignment",
    "id": "primary_key",
    "attributes": {
      "created_at": "2000-01-01T12:00:00Z",
      "preferred_weeks": [

      ],
      "schedule_preference": "string",
      "updated_at": "2000-01-01T12:00:00Z"
    },
    "relationships": {
      "person": {
        "data": {
          "type": "Person",
          "id": "123"
        }
      },
      "team_position": {
        "data": {
          "type": "TeamPosition",
          "id": "123"
        }
      },
      "time_preference_options": {
        "data": [
          {
            "type": "TimePreferenceOption",
            "id": "123"
          }
        ]
      }
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/services/v2/people/1/person_team_position_assignments/1

URL Parameters

Parameter Value Description
include person include associated person

Associations for a Person Team Position Assignment

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
person https://api.planningcenteronline.com/services/v2/people/1/person_team_position_assignments/1/person Person

Create a new Person Team Position Assignment

# to create a record...
curl -v -u token:secret -X POST -d '{"data":{"type":"PersonTeamPositionAssignment","attributes":{...}}}' "https://api.planningcenteronline.com/services/v2/service_types/1/team_positions/1/person_team_position_assignments"

HTTP Request

POST https://api.planningcenteronline.com/services/v2/service_types/1/team_positions/1/person_team_position_assignments

Resource Attributes

Attribute Type
schedule_preference string
preferred_weeks array

Update an existing Person Team Position Assignment

# to update a record...
curl -v -u token:secret -X PATCH -d '{"data":{"type":"PersonTeamPositionAssignment","id":"1","attributes":{...}}}' "https://api.planningcenteronline.com/services/v2/people/1/person_team_position_assignments/1"

HTTP Request

PATCH https://api.planningcenteronline.com/services/v2/people/1/person_team_position_assignments/1

Resource Attributes

Attribute Type
schedule_preference string
preferred_weeks array

Plans

A single plan within a Service Type.

Attribute Info

attachment_type_ids

The attachment type IDs assigned to the current user based on what positions they are scheduled to in this plan. This determines what files they can see.

files_expire_at

A date 1 month after the last service time.

items_count

The total number of items, including regular items, songs, media, and headers, that the current user can see in the plan.

next_plan_id

The ID of the next chronological plan within the current Service Type.

previous_plan_id

The ID of the previous chronological plan within the current Service Type.

permissions

The current user’s permissions for this plan’s Service Type.

total_length

The total of length of all items, excluding pre-service and post-service items.

short_dates

The shortened date string representing all Service Time dates. Months are abbreviated, and the year is omitted.

sort_date

A time representing the chronological first Service Time, used to sort plan chronologically. If no Service Times exist, it uses Rehearsal Times, then Other Times, then NOW.

starts_at

A time representing the chronological last Time (Service, Rehearsal, or Other). Once this passes, a plan is considered to be in the past.

dates

The full date string representing all Service Time dates.

public

True if Public Access has been enabled.

Relationships

Name Type To Many Description
service_type ServiceType false
next_plan Plan false
previous_plan Plan false
attachment_types AttachmentType true
series Series false
created_by Person false
updated_by Person false

List Plans

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/service_types/1/plans"

HTTP Request

GET https://api.planningcenteronline.com/services/v2/service_types/1/plans

URL Parameters

Parameter Value Description
where[title] string query on a specific title
filter future filter using the named scope “future”
filter past filter using the named scope “past”
filter no_dates filter using the named scope “no_dates”
include series include associated series
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)
order title prefix with a hyphen (-title) to reverse the order
order created_at prefix with a hyphen (-created_at) to reverse the order
order updated_at prefix with a hyphen (-updated_at) to reverse the order
order sort_date prefix with a hyphen (-sort_date) to reverse the order

Get a single Plan

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/service_types/1/plans/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "Plan",
    "id": "primary_key",
    "attributes": {
      "created_at": "2000-01-01T12:00:00Z",
      "dates": "string",
      "files_expire_at": "2000-01-01T12:00:00Z",
      "items_count": 1,
      "last_time_at": "2000-01-01T12:00:00Z",
      "multi_day": true,
      "needed_positions_count": 1,
      "other_time_count": 1,
      "permissions": "string",
      "plan_notes_count": 1,
      "plan_people_count": 1,
      "public": true,
      "rehearsal_time_count": 1,
      "series_title": "string",
      "service_time_count": 1,
      "short_dates": "string",
      "sort_date": "2000-01-01T12:00:00Z",
      "title": "string",
      "total_length": 1,
      "updated_at": "2000-01-01T12:00:00Z"
    },
    "relationships": {
      "attachment_types": {
        "data": [
          {
            "type": "AttachmentType",
            "id": "123"
          }
        ]
      },
      "created_by": {
        "data": {
          "type": "Person",
          "id": "123"
        }
      },
      "next_plan": {
        "data": {
          "type": "Plan",
          "id": "123"
        }
      },
      "previous_plan": {
        "data": {
          "type": "Plan",
          "id": "123"
        }
      },
      "series": {
        "data": {
          "type": "Series",
          "id": "123"
        }
      },
      "service_type": {
        "data": {
          "type": "ServiceType",
          "id": "123"
        }
      },
      "updated_by": {
        "data": {
          "type": "Person",
          "id": "123"
        }
      }
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/services/v2/service_types/1/plans/1

URL Parameters

Parameter Value Description
include series include associated series

Associations for a Plan

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
all_attachments https://api.planningcenteronline.com/services/v2/service_types/1/plans/1/all_attachments Attachment
attachments https://api.planningcenteronline.com/services/v2/service_types/1/plans/1/attachments Attachment
contributors https://api.planningcenteronline.com/services/v2/service_types/1/plans/1/contributors Contributor
items https://api.planningcenteronline.com/services/v2/service_types/1/plans/1/items Item
my_schedules https://api.planningcenteronline.com/services/v2/service_types/1/plans/1/my_schedules Schedule
needed_positions https://api.planningcenteronline.com/services/v2/service_types/1/plans/1/needed_positions NeededPosition
next_plan https://api.planningcenteronline.com/services/v2/service_types/1/plans/1/next_plan Plan
notes https://api.planningcenteronline.com/services/v2/service_types/1/plans/1/notes PlanNote
plan_times https://api.planningcenteronline.com/services/v2/service_types/1/plans/1/plan_times PlanTime
previous_plan https://api.planningcenteronline.com/services/v2/service_types/1/plans/1/previous_plan Plan
series https://api.planningcenteronline.com/services/v2/service_types/1/plans/1/series Series
signup_teams https://api.planningcenteronline.com/services/v2/service_types/1/plans/1/signup_teams Team
team_members https://api.planningcenteronline.com/services/v2/service_types/1/plans/1/team_members PlanPerson

Actions for a Plan

You can perform the following actions on a Plan by POSTing to the specified URL.

Action URL Description
item_reorder https://api.planningcenteronline.com/services/v2/service_types/1/plans/1/item_reorder Reorder plan items in one request.
import_template https://api.planningcenteronline.com/services/v2/service_types/1/plans/1/import_template Import template to plan

item_reorder

This can be used to reorder all items in a plan in one request.

It expects a POST body with a sequence of Item ids in order. E.G.

{
  "data": {
    "type": "PlanItemReorder",
    "attributes": {
      "sequence": [
        "5",
        "1",
        "3"
      ]
    }
  }
}

On success you will get back a 204 No Content.

import_template

This action allows the importing of a template into a plan.

Accepted attributes: - plan_id (Integer) ID of template to copying from

Create a new Plan

# to create a record...
curl -v -u token:secret -X POST -d '{"data":{"type":"Plan","attributes":{...}}}' "https://api.planningcenteronline.com/services/v2/service_types/1/plans"

HTTP Request

POST https://api.planningcenteronline.com/services/v2/service_types/1/plans

Resource Attributes

Attribute Type
title string
public boolean

Update an existing Plan

# to update a record...
curl -v -u token:secret -X PATCH -d '{"data":{"type":"Plan","id":"1","attributes":{...}}}' "https://api.planningcenteronline.com/services/v2/service_types/1/plans/1"

HTTP Request

PATCH https://api.planningcenteronline.com/services/v2/service_types/1/plans/1

Resource Attributes

Attribute Type
title string
public boolean

Delete a Plan

# to delete a record...
curl -v -u token:secret -X DELETE "https://api.planningcenteronline.com/services/v2/service_types/1/plans/1"

HTTP Request

DELETE https://api.planningcenteronline.com/services/v2/service_types/1/plans/1

PlanNotes

A specific plan note within a single plan.

Relationships

Name Type To Many Description
plan_note_category PlanNoteCategory false

List Plan Notes

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/series/1/plans/1/notes"

HTTP Request

GET https://api.planningcenteronline.com/services/v2/series/1/plans/1/notes

URL Parameters

Parameter Value Description
where[created_at] date_time query on a specific created_at
where[updated_at] date_time query on a specific updated_at
include plan_note_category include associated plan_note_category
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)
order created_at prefix with a hyphen (-created_at) to reverse the order
order updated_at prefix with a hyphen (-updated_at) to reverse the order

Get a single Plan Note

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/series/1/plans/1/notes/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "PlanNote",
    "id": "primary_key",
    "attributes": {
      "category_name": "string",
      "content": "string",
      "created_at": "2000-01-01T12:00:00Z",
      "updated_at": "2000-01-01T12:00:00Z"
    },
    "relationships": {
      "plan_note_category": {
        "data": {
          "type": "PlanNoteCategory",
          "id": "123"
        }
      }
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/services/v2/series/1/plans/1/notes/1

URL Parameters

Parameter Value Description
include plan_note_category include associated plan_note_category

Associations for a Plan Note

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
plan_note_category https://api.planningcenteronline.com/services/v2/series/1/plans/1/notes/1/plan_note_category PlanNoteCategory

Create a new Plan Note

# to create a record...
curl -v -u token:secret -X POST -d '{"data":{"type":"PlanNote","attributes":{...}}}' "https://api.planningcenteronline.com/services/v2/series/1/plans/1/notes"

HTTP Request

POST https://api.planningcenteronline.com/services/v2/series/1/plans/1/notes

Resource Attributes

Attribute Type
content string

Update an existing Plan Note

# to update a record...
curl -v -u token:secret -X PATCH -d '{"data":{"type":"PlanNote","id":"1","attributes":{...}}}' "https://api.planningcenteronline.com/services/v2/series/1/plans/1/notes/1"

HTTP Request

PATCH https://api.planningcenteronline.com/services/v2/series/1/plans/1/notes/1

Resource Attributes

Attribute Type
content string

Delete a Plan Note

# to delete a record...
curl -v -u token:secret -X DELETE "https://api.planningcenteronline.com/services/v2/series/1/plans/1/notes/1"

HTTP Request

DELETE https://api.planningcenteronline.com/services/v2/series/1/plans/1/notes/1

PlanNoteCategories

A category of plan notes for an entire Service Type.

Relationships

Name Type To Many Description
service_type ServiceType false

List Plan Note Categories

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/service_types/1/plan_note_categories"

HTTP Request

GET https://api.planningcenteronline.com/services/v2/service_types/1/plan_note_categories

URL Parameters

Parameter Value Description
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Plan Note Category

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/service_types/1/plan_note_categories/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "PlanNoteCategory",
    "id": "primary_key",
    "attributes": {
      "created_at": "2000-01-01T12:00:00Z",
      "name": "string",
      "sequence": 1,
      "updated_at": "2000-01-01T12:00:00Z"
    },
    "relationships": {
      "service_type": {
        "data": {
          "type": "ServiceType",
          "id": "123"
        }
      }
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/services/v2/service_types/1/plan_note_categories/1

URL Parameters

none

PlanPeople

A person scheduled within a specific plan.

Attribute Info

can_accept_partial

If the person is scheduled to a split team where they could potentially accept 1 time and decline another.

status

Accepts one of 'C’, 'U’, ’D’, or 'Confirmed’, 'Unconfirmed’, or 'Declined’

Relationships

Name Type To Many Description
person Person false
plan Plan false
service_type ServiceType false
team Team false
responds_to Person false
times PlanTime true

List Plan People

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/people/1/plan_people"

HTTP Request

GET https://api.planningcenteronline.com/services/v2/people/1/plan_people

URL Parameters

Parameter Value Description
include team include associated team
include person include associated person
include plan include associated plan
include declined_plan_times include associated declined_plan_times
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Plan Person

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/people/1/plan_people/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "PlanPerson",
    "id": "primary_key",
    "attributes": {
      "can_accept_partial": true,
      "created_at": "2000-01-01T12:00:00Z",
      "decline_reason": "string",
      "name": "string",
      "notes": "string",
      "notification_sent_at": "2000-01-01T12:00:00Z",
      "photo_thumbnail": "string",
      "prepare_notification": true,
      "status": "string",
      "status_updated_at": "2000-01-01T12:00:00Z",
      "team_position_name": "string",
      "updated_at": "2000-01-01T12:00:00Z"
    },
    "relationships": {
      "person": {
        "data": {
          "type": "Person",
          "id": "123"
        }
      },
      "plan": {
        "data": {
          "type": "Plan",
          "id": "123"
        }
      },
      "responds_to": {
        "data": {
          "type": "Person",
          "id": "123"
        }
      },
      "service_type": {
        "data": {
          "type": "ServiceType",
          "id": "123"
        }
      },
      "team": {
        "data": {
          "type": "Team",
          "id": "123"
        }
      },
      "times": {
        "data": [
          {
            "type": "PlanTime",
            "id": "123"
          }
        ]
      }
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/services/v2/people/1/plan_people/1

URL Parameters

Parameter Value Description
include team include associated team
include person include associated person
include plan include associated plan
include declined_plan_times include associated declined_plan_times

Associations for a Plan Person

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
check_ins https://api.planningcenteronline.com/services/v2/people/1/plan_people/1/check_ins CheckIn
declined_plan_times https://api.planningcenteronline.com/services/v2/people/1/plan_people/1/declined_plan_times PlanTime
person https://api.planningcenteronline.com/services/v2/people/1/plan_people/1/person Person
plan https://api.planningcenteronline.com/services/v2/people/1/plan_people/1/plan Plan
plan_person_times https://api.planningcenteronline.com/services/v2/people/1/plan_people/1/plan_person_times PlanPersonTime
plan_times https://api.planningcenteronline.com/services/v2/people/1/plan_people/1/plan_times PlanTime
team https://api.planningcenteronline.com/services/v2/people/1/plan_people/1/team Team

Actions for a Plan Person

You can perform the following actions on a Plan Person by POSTing to the specified URL.

Action URL Description

Create a new Plan Person

# to create a record...
curl -v -u token:secret -X POST -d '{"data":{"type":"PlanPerson","attributes":{...}}}' "https://api.planningcenteronline.com/services/v2/series/1/plans/1/team_members"

HTTP Request

POST https://api.planningcenteronline.com/services/v2/series/1/plans/1/team_members

Resource Attributes

Attribute Type
status string
decline_reason string
notes string
team_position_name string
prepare_notification boolean

Update an existing Plan Person

# to update a record...
curl -v -u token:secret -X PATCH -d '{"data":{"type":"PlanPerson","id":"1","attributes":{...}}}' "https://api.planningcenteronline.com/services/v2/people/1/plan_people/1"

HTTP Request

PATCH https://api.planningcenteronline.com/services/v2/people/1/plan_people/1

Resource Attributes

Attribute Type
status string
decline_reason string
notes string
team_position_name string
prepare_notification boolean

Delete a Plan Person

# to delete a record...
curl -v -u token:secret -X DELETE "https://api.planningcenteronline.com/services/v2/people/1/plan_people/1"

HTTP Request

DELETE https://api.planningcenteronline.com/services/v2/people/1/plan_people/1

PlanPersonTimes

Relationships

Name Type To Many Description
plan_time PlanTime false
plan Plan false
plan_person PlanPerson false

List Plan Person Times

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/people/1/plan_people/1/plan_person_times"

HTTP Request

GET https://api.planningcenteronline.com/services/v2/people/1/plan_people/1/plan_person_times

URL Parameters

Parameter Value Description
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Plan Person Time

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/people/1/plan_people/1/plan_person_times/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "PlanPersonTime",
    "id": "primary_key",
    "attributes": {
      "created_at": "2000-01-01T12:00:00Z",
      "status": "string",
      "updated_at": "2000-01-01T12:00:00Z"
    },
    "relationships": {
      "plan": {
        "data": {
          "type": "Plan",
          "id": "123"
        }
      },
      "plan_person": {
        "data": {
          "type": "PlanPerson",
          "id": "123"
        }
      },
      "plan_time": {
        "data": {
          "type": "PlanTime",
          "id": "123"
        }
      }
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/services/v2/people/1/plan_people/1/plan_person_times/1

URL Parameters

none

PlanTemplates

A PlanTemplate Resource

Relationships

Name Type To Many Description
service_type ServiceType false
created_by Person false
updated_by Person false

List Plan Templates

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/service_types/1/plan_templates"

HTTP Request

GET https://api.planningcenteronline.com/services/v2/service_types/1/plan_templates

URL Parameters

Parameter Value Description
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Plan Template

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/service_types/1/plan_templates/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "PlanTemplate",
    "id": "primary_key",
    "attributes": {
      "created_at": "2000-01-01T12:00:00Z",
      "name": "string",
      "updated_at": "2000-01-01T12:00:00Z"
    },
    "relationships": {
      "created_by": {
        "data": {
          "type": "Person",
          "id": "123"
        }
      },
      "service_type": {
        "data": {
          "type": "ServiceType",
          "id": "123"
        }
      },
      "updated_by": {
        "data": {
          "type": "Person",
          "id": "123"
        }
      }
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/services/v2/service_types/1/plan_templates/1

URL Parameters

none

PlanTimes

A time in a plan.

Attribute Info

starts_at

Planned start time.

ends_at

Planned end time.

live_starts_at

Start time as recorded by Services LIVE.

live_ends_at

End time as recorded by Services LIVE.

team_reminders

A Hash that maps a Team ID to a reminder value. If nothing is specified, no reminder is set for that team. A reminder value is an integer (0-7) equal to the number of days before the selected time a reminder should be sent.

included_category_ids

The IDs of each Team assigned to this time.

time_type

Possible values are:

Relationships

Name Type To Many Description
assigned_teams Team true

List Plan Times

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/people/1/next_plan_time"

HTTP Request

GET https://api.planningcenteronline.com/services/v2/people/1/next_plan_time

URL Parameters

Parameter Value Description
include split_team_rehearsal_assignments include associated split_team_rehearsal_assignments
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Plan Time

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/people/1/next_plan_time/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "PlanTime",
    "id": "primary_key",
    "attributes": {
      "created_at": "2000-01-01T12:00:00Z",
      "ends_at": "2000-01-01T12:00:00Z",
      "live_ends_at": "2000-01-01T12:00:00Z",
      "live_starts_at": "2000-01-01T12:00:00Z",
      "name": "string",
      "starts_at": "2000-01-01T12:00:00Z",
      "team_reminders": [

      ],
      "time_type": 1,
      "updated_at": "2000-01-01T12:00:00Z"
    },
    "relationships": {
      "assigned_teams": {
        "data": [
          {
            "type": "Team",
            "id": "123"
          }
        ]
      }
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/services/v2/people/1/next_plan_time/1

URL Parameters

Parameter Value Description
include split_team_rehearsal_assignments include associated split_team_rehearsal_assignments

Associations for a Plan Time

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
split_team_rehearsal_assignments https://api.planningcenteronline.com/services/v2/people/1/next_plan_time/1/split_team_rehearsal_assignments SplitTeamRehearsalAssignment

Create a new Plan Time

# to create a record...
curl -v -u token:secret -X POST -d '{"data":{"type":"PlanTime","attributes":{...}}}' "https://api.planningcenteronline.com/services/v2/series/1/plans/1/plan_times"

HTTP Request

POST https://api.planningcenteronline.com/services/v2/series/1/plans/1/plan_times

Resource Attributes

Attribute Type
starts_at date_time
ends_at date_time
name string
time_type integer
team_reminders array

Update an existing Plan Time

# to update a record...
curl -v -u token:secret -X PATCH -d '{"data":{"type":"PlanTime","id":"1","attributes":{...}}}' "https://api.planningcenteronline.com/services/v2/people/1/next_plan_time/1"

HTTP Request

PATCH https://api.planningcenteronline.com/services/v2/people/1/next_plan_time/1

Resource Attributes

Attribute Type
starts_at date_time
ends_at date_time
name string
time_type integer
team_reminders array

Delete a Plan Time

# to delete a record...
curl -v -u token:secret -X DELETE "https://api.planningcenteronline.com/services/v2/people/1/next_plan_time/1"

HTTP Request

DELETE https://api.planningcenteronline.com/services/v2/people/1/next_plan_time/1

Schedules

An instance of a PlanPerson with included data for displaying in a user’s schedule

Relationships

Name Type To Many Description
person Person false
service_type ServiceType false
organization Organization false
plan_person PlanPerson false
plan Plan false
responds_to_person Person false
times PlanTime true

List Schedules

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/people/1/schedules"

HTTP Request

GET https://api.planningcenteronline.com/services/v2/people/1/schedules

URL Parameters

Parameter Value Description
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Schedule

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/people/1/schedules/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "Schedule",
    "id": "primary_key",
    "attributes": {
      "can_accept_partial": true,
      "dates": "string",
      "decline_reason": "string",
      "organization_name": "string",
      "organization_time_zone": "string",
      "person_name": "string",
      "plan_visible": true,
      "position_display_times": "string",
      "service_type_name": "string",
      "short_dates": "string",
      "sort_date": "2000-01-01T12:00:00Z",
      "status": "string",
      "team_name": "string",
      "team_position_name": "string"
    },
    "relationships": {
      "organization": {
        "data": {
          "type": "Organization",
          "id": "123"
        }
      },
      "person": {
        "data": {
          "type": "Person",
          "id": "123"
        }
      },
      "plan": {
        "data": {
          "type": "Plan",
          "id": "123"
        }
      },
      "plan_person": {
        "data": {
          "type": "PlanPerson",
          "id": "123"
        }
      },
      "responds_to_person": {
        "data": {
          "type": "Person",
          "id": "123"
        }
      },
      "service_type": {
        "data": {
          "type": "ServiceType",
          "id": "123"
        }
      },
      "times": {
        "data": [
          {
            "type": "PlanTime",
            "id": "123"
          }
        ]
      }
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/services/v2/people/1/schedules/1

URL Parameters

none

Associations for a Schedule

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
declined_plan_times https://api.planningcenteronline.com/services/v2/people/1/schedules/1/declined_plan_times PlanTime
plan_times https://api.planningcenteronline.com/services/v2/people/1/schedules/1/plan_times PlanTime
respond_to https://api.planningcenteronline.com/services/v2/people/1/schedules/1/respond_to Person
team https://api.planningcenteronline.com/services/v2/people/1/schedules/1/team Team

Actions for a Schedule

You can perform the following actions on a Schedule by POSTing to the specified URL.

Action URL Description
accept https://api.planningcenteronline.com/services/v2/people/1/schedules/1/accept Accept a Schedule
decline https://api.planningcenteronline.com/services/v2/people/1/schedules/1/decline Decline a Schedule

accept

If this isn’t a split time schedule, or you want to accept all times, an empty JSON body is accepted.

If the user wants to decline specific times you’ll need to send the declined time IDs & a reason.

A POST body should be formated…

{
    "data": {
        "type": "ScheduleAccept",
        "attributes": {
            "reason": "Because reasons"
        },
        "relationships": {
            "declined_plan_times": {
                "data": [
          {
                      "type": "PlanTime",
                      "id": "1"
                  }
        ]
            }
        }
    }
}

decline

If this is a split time request, all times will be declined.

If you want to decline specific times see ScheduleAcceptAction.

A POST body should be formated…

{
    "data": {
        "type": "ScheduleDecline",
        "attributes": {
            "reason": "A user supplied reason for declining the request or an empty string."
        },
        "relationships": null
    }
}

ScheduledPeople

A person already scheduled to a SignupSheet

Relationships

Name Type To Many Description
person Person false
signup_sheet SignupSheet false

List Scheduled People

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/people/1/available_signups/1/signup_sheets/1/scheduled_people"

HTTP Request

GET https://api.planningcenteronline.com/services/v2/people/1/available_signups/1/signup_sheets/1/scheduled_people

URL Parameters

Parameter Value Description
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Scheduled Person

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/people/1/available_signups/1/signup_sheets/1/scheduled_people/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "ScheduledPerson",
    "id": "primary_key",
    "attributes": {
      "full_name": "string",
      "status": "string",
      "thumbnail": "string"
    },
    "relationships": {
      "person": {
        "data": {
          "type": "Person",
          "id": "123"
        }
      },
      "signup_sheet": {
        "data": {
          "type": "SignupSheet",
          "id": "123"
        }
      }
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/services/v2/people/1/available_signups/1/signup_sheets/1/scheduled_people/1

URL Parameters

none

Series

A Series can be specified for each plan to tie plans with similar messages together, even across Service Types.

Note: A series is not created until artwork is added from the plan. You can use series_title included in Plan attributes to get titles for series without artwork.

List Series

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/series"

HTTP Request

GET https://api.planningcenteronline.com/services/v2/series

URL Parameters

Parameter Value Description
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Series

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/series/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "Series",
    "id": "primary_key",
    "attributes": {
      "artwork_content_type": "string",
      "artwork_file_name": "string",
      "artwork_file_size": 1,
      "artwork_for_dashboard": "string",
      "artwork_for_mobile": "string",
      "artwork_for_plan": "string",
      "created_at": "2000-01-01T12:00:00Z",
      "title": "string",
      "updated_at": "2000-01-01T12:00:00Z"
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/services/v2/series/1

URL Parameters

none

Associations for a Series

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
plans https://api.planningcenteronline.com/services/v2/series/1/plans Plan

ServiceTypes

A Service Type is a container for plans.

Relationships

Name Type To Many Description
parent Folder false

List Service Types

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/service_types"

HTTP Request

GET https://api.planningcenteronline.com/services/v2/service_types

URL Parameters

Parameter Value Description
include time_preference_options include associated time_preference_options
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Service Type

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/service_types/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "ServiceType",
    "id": "primary_key",
    "attributes": {
      "attachment_types_enabled": true,
      "created_at": "2000-01-01T12:00:00Z",
      "frequency": "string",
      "name": "string",
      "permissions": "string",
      "sequence": 1,
      "updated_at": "2000-01-01T12:00:00Z"
    },
    "relationships": {
      "parent": {
        "data": {
          "type": "Folder",
          "id": "123"
        }
      }
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/services/v2/service_types/1

URL Parameters

Parameter Value Description
include time_preference_options include associated time_preference_options

Associations for a Service Type

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
attachments https://api.planningcenteronline.com/services/v2/service_types/1/attachments Attachment
item_note_categories https://api.planningcenteronline.com/services/v2/service_types/1/item_note_categories ItemNoteCategory
layouts https://api.planningcenteronline.com/services/v2/service_types/1/layouts Layout
plan_note_categories https://api.planningcenteronline.com/services/v2/service_types/1/plan_note_categories PlanNoteCategory
plan_templates https://api.planningcenteronline.com/services/v2/service_types/1/plan_templates PlanTemplate
plans https://api.planningcenteronline.com/services/v2/service_types/1/plans Plan
team_positions https://api.planningcenteronline.com/services/v2/service_types/1/team_positions TeamPosition
teams https://api.planningcenteronline.com/services/v2/service_types/1/teams Team
time_preference_options https://api.planningcenteronline.com/services/v2/service_types/1/time_preference_options TimePreferenceOption

Actions for a Service Type

You can perform the following actions on a Service Type by POSTing to the specified URL.

Action URL Description
create_plans https://api.planningcenteronline.com/services/v2/service_types/1/create_plans Create multiple plans

create_plans

This action provides the abillity to create multiple plans with a single API request.

Accepted attributes:

Accepted Relationships

Create a new Service Type

# to create a record...
curl -v -u token:secret -X POST -d '{"data":{"type":"ServiceType","attributes":{...}}}' "https://api.planningcenteronline.com/services/v2/service_types"

HTTP Request

POST https://api.planningcenteronline.com/services/v2/service_types

Resource Attributes

Attribute Type
name string
sequence integer
# to create a record...
curl -v -u token:secret -X POST -d '{"data":{"type":"ServiceType","attributes":{...}}}' "https://api.planningcenteronline.com/services/v2/folders/1/service_types"

HTTP Request

POST https://api.planningcenteronline.com/services/v2/folders/1/service_types

Resource Attributes

Attribute Type
name string
sequence integer

Update an existing Service Type

# to update a record...
curl -v -u token:secret -X PATCH -d '{"data":{"type":"ServiceType","id":"1","attributes":{...}}}' "https://api.planningcenteronline.com/services/v2/service_types/1"

HTTP Request

PATCH https://api.planningcenteronline.com/services/v2/service_types/1

Resource Attributes

Attribute Type
name string
sequence integer

Delete a Service Type

# to delete a record...
curl -v -u token:secret -X DELETE "https://api.planningcenteronline.com/services/v2/service_types/1"

HTTP Request

DELETE https://api.planningcenteronline.com/services/v2/service_types/1

SignupSheets

Available positions to sign up for

Relationships

Name Type To Many Description
plan Plan false
team_position TeamPosition false
team Team false

List Signup Sheets

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/people/1/available_signups/1/signup_sheets"

HTTP Request

GET https://api.planningcenteronline.com/services/v2/people/1/available_signups/1/signup_sheets

URL Parameters

Parameter Value Description
include scheduled_people include associated scheduled_people
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Signup Sheet

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/people/1/available_signups/1/signup_sheets/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "SignupSheet",
    "id": "primary_key",
    "attributes": {
      "display_times": "string",
      "group_key": "string",
      "position_name": "string",
      "sort_date": "2000-01-01T12:00:00Z",
      "sort_index": 1,
      "team_name": "string",
      "title": "string"
    },
    "relationships": {
      "plan": {
        "data": {
          "type": "Plan",
          "id": "123"
        }
      },
      "team": {
        "data": {
          "type": "Team",
          "id": "123"
        }
      },
      "team_position": {
        "data": {
          "type": "TeamPosition",
          "id": "123"
        }
      }
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/services/v2/people/1/available_signups/1/signup_sheets/1

URL Parameters

Parameter Value Description
include scheduled_people include associated scheduled_people

Associations for a Signup Sheet

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
scheduled_people https://api.planningcenteronline.com/services/v2/people/1/available_signups/1/signup_sheets/1/scheduled_people ScheduledPerson
signup_sheet_metadata https://api.planningcenteronline.com/services/v2/people/1/available_signups/1/signup_sheets/1/signup_sheet_metadata SignupSheetMetadata

Actions for a Signup Sheet

You can perform the following actions on a Signup Sheet by POSTing to the specified URL.

Action URL Description
accept https://api.planningcenteronline.com/services/v2/people/1/available_signups/1/signup_sheets/1/accept Accept a signup sheet

SignupSheetMetadata

A SignupSheetMetadata Resource

Relationships

Name Type To Many Description
plan_time PlanTime false

List Signup Sheet Metadata

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/people/1/available_signups/1/signup_sheets/1/signup_sheet_metadata"

HTTP Request

GET https://api.planningcenteronline.com/services/v2/people/1/available_signups/1/signup_sheets/1/signup_sheet_metadata

URL Parameters

Parameter Value Description
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

SkippedAttachments

a skipped attachment

Relationships

Name Type To Many Description
person Person false
attachment Attachment false

List Skipped Attachments

HTTP Request

GET

URL Parameters

Parameter Value Description
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Skipped Attachment

The above command returns JSON structured like this:

{
  "data": {
    "type": "SkippedAttachment",
    "id": "primary_key",
    "attributes": {
      "skipped": true
    },
    "relationships": {
      "attachment": {
        "data": {
          "type": "Attachment",
          "id": "123"
        }
      },
      "person": {
        "data": {
          "type": "Person",
          "id": "123"
        }
      }
    }
  }
}

HTTP Request

GET

URL Parameters

none

Songs

A song

Attribute Info

title

The name of the song.

When setting this value on a create you can pass a CCLI number and Services will fetch the song metadata for you.

List Songs

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/songs"

HTTP Request

GET https://api.planningcenteronline.com/services/v2/songs

URL Parameters

Parameter Value Description
where[author] string query on a specific author
where[hidden] boolean query on a specific hidden
where[themes] string query on a specific themes
where[title] string query on a specific title
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)
order title prefix with a hyphen (-title) to reverse the order
order created_at prefix with a hyphen (-created_at) to reverse the order
order updated_at prefix with a hyphen (-updated_at) to reverse the order

Get a single Song

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/songs/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "Song",
    "id": "primary_key",
    "attributes": {
      "admin": "string",
      "author": "string",
      "ccli_number": 1,
      "copyright": "string",
      "created_at": "2000-01-01T12:00:00Z",
      "hidden": true,
      "themes": "string",
      "title": "string",
      "updated_at": "2000-01-01T12:00:00Z"
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/services/v2/songs/1

URL Parameters

none

Associations for a Song

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
arrangements https://api.planningcenteronline.com/services/v2/songs/1/arrangements Arrangement
attachments https://api.planningcenteronline.com/services/v2/songs/1/attachments Attachment
last_scheduled_item https://api.planningcenteronline.com/services/v2/songs/1/last_scheduled_item Item
song_schedules https://api.planningcenteronline.com/services/v2/songs/1/song_schedules SongSchedule
tags https://api.planningcenteronline.com/services/v2/songs/1/tags Tag

Actions for a Song

You can perform the following actions on a Song by POSTing to the specified URL.

Action URL Description
assign_tags https://api.planningcenteronline.com/services/v2/songs/1/assign_tags Used to assign tags to a song.

assign_tags

All tags will be replaced so the full data set must be sent.

It expects a body that looks like:

{
    "data": {
        "type": "TagAssignment",
        "attributes": {},
        "relationships": {
            "tags": {
                "data": [
                    {
                        "type": "Tag",
                        "id": "5"
                    }
                ]
            }
        }
    }
}

On success you will get back a 204 No Content.

Create a new Song

# to create a record...
curl -v -u token:secret -X POST -d '{"data":{"type":"Song","attributes":{...}}}' "https://api.planningcenteronline.com/services/v2/songs"

HTTP Request

POST https://api.planningcenteronline.com/services/v2/songs

Resource Attributes

Attribute Type
title string
admin string
author string
copyright string
ccli_number integer
hidden boolean
themes string

Update an existing Song

# to update a record...
curl -v -u token:secret -X PATCH -d '{"data":{"type":"Song","id":"1","attributes":{...}}}' "https://api.planningcenteronline.com/services/v2/songs/1"

HTTP Request

PATCH https://api.planningcenteronline.com/services/v2/songs/1

Resource Attributes

Attribute Type
title string
admin string
author string
copyright string
ccli_number integer
hidden boolean
themes string

Delete a Song

# to delete a record...
curl -v -u token:secret -X DELETE "https://api.planningcenteronline.com/services/v2/songs/1"

HTTP Request

DELETE https://api.planningcenteronline.com/services/v2/songs/1

SongSchedules

A upcoming schedule for a song

Relationships

Name Type To Many Description
arrangement Arrangement false
key Key false
plan Plan false
service_type ServiceType false
item Item false

List Song Schedules

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/songs/1/song_schedules"

HTTP Request

GET https://api.planningcenteronline.com/services/v2/songs/1/song_schedules

URL Parameters

Parameter Value Description
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)
order plan_sort_date prefix with a hyphen (-plan_sort_date) to reverse the order

Get a single Song Schedule

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/songs/1/song_schedules/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "SongSchedule",
    "id": "primary_key",
    "attributes": {
      "arrangement_name": "string",
      "key_name": "string",
      "plan_dates": "string",
      "plan_sort_date": "string",
      "service_type_name": "string"
    },
    "relationships": {
      "arrangement": {
        "data": {
          "type": "Arrangement",
          "id": "123"
        }
      },
      "item": {
        "data": {
          "type": "Item",
          "id": "123"
        }
      },
      "key": {
        "data": {
          "type": "Key",
          "id": "123"
        }
      },
      "plan": {
        "data": {
          "type": "Plan",
          "id": "123"
        }
      },
      "service_type": {
        "data": {
          "type": "ServiceType",
          "id": "123"
        }
      }
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/services/v2/songs/1/song_schedules/1

URL Parameters

none

SplitTeamRehearsalAssignments

For Rehearsal/Other Times, maps a Split Team to selected Time Preference Options. For example, used to assign 8am Ushers to 7:30 call time, and 11am Ushers to 10:30 call time.

Attribute Info

assigned_to

Either 'team’ or 'time_preferences’

time_preference_ids

The IDs of the assigned time preference options.

Relationships

Name Type To Many Description
team Team false
time_preference_options TimePreferenceOption true

List Split Team Rehearsal Assignments

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/people/1/next_plan_time/1/split_team_rehearsal_assignments"

HTTP Request

GET https://api.planningcenteronline.com/services/v2/people/1/next_plan_time/1/split_team_rehearsal_assignments

URL Parameters

Parameter Value Description
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Split Team Rehearsal Assignment

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/people/1/next_plan_time/1/split_team_rehearsal_assignments/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "SplitTeamRehearsalAssignment",
    "id": "primary_key",
    "attributes": {
      "assigned_to": "string"
    },
    "relationships": {
      "team": {
        "data": {
          "type": "Team",
          "id": "123"
        }
      },
      "time_preference_options": {
        "data": [
          {
            "type": "TimePreferenceOption",
            "id": "123"
          }
        ]
      }
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/services/v2/people/1/next_plan_time/1/split_team_rehearsal_assignments/1

URL Parameters

none

Associations for a Split Team Rehearsal Assignment

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
team https://api.planningcenteronline.com/services/v2/people/1/next_plan_time/1/split_team_rehearsal_assignments/1/team Team

Create a new Split Team Rehearsal Assignment

# to create a record...
curl -v -u token:secret -X POST -d '{"data":{"type":"SplitTeamRehearsalAssignment","attributes":{...}}}' "https://api.planningcenteronline.com/services/v2/people/1/next_plan_time/1/split_team_rehearsal_assignments"

HTTP Request

POST https://api.planningcenteronline.com/services/v2/people/1/next_plan_time/1/split_team_rehearsal_assignments

Resource Attributes

Attribute Type
assigned_to string

Update an existing Split Team Rehearsal Assignment

# to update a record...
curl -v -u token:secret -X PATCH -d '{"data":{"type":"SplitTeamRehearsalAssignment","id":"1","attributes":{...}}}' "https://api.planningcenteronline.com/services/v2/people/1/next_plan_time/1/split_team_rehearsal_assignments/1"

HTTP Request

PATCH https://api.planningcenteronline.com/services/v2/people/1/next_plan_time/1/split_team_rehearsal_assignments/1

Resource Attributes

Attribute Type
assigned_to string

Delete a Split Team Rehearsal Assignment

# to delete a record...
curl -v -u token:secret -X DELETE "https://api.planningcenteronline.com/services/v2/people/1/next_plan_time/1/split_team_rehearsal_assignments/1"

HTTP Request

DELETE https://api.planningcenteronline.com/services/v2/people/1/next_plan_time/1/split_team_rehearsal_assignments/1

Tags

A tag belonging to a tag group.

Relationships

Name Type To Many Description
tag_group TagGroup false

List Tags

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/songs/1/tags"

HTTP Request

GET https://api.planningcenteronline.com/services/v2/songs/1/tags

URL Parameters

Parameter Value Description
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Tag

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/songs/1/tags/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "Tag",
    "id": "primary_key",
    "attributes": {
      "name": "string"
    },
    "relationships": {
      "tag_group": {
        "data": {
          "type": "TagGroup",
          "id": "123"
        }
      }
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/services/v2/songs/1/tags/1

URL Parameters

none

Associations for a Tag

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint

TagGroups

A tag group contains tags

Attribute Info

tags_for

Scopes a tag group to person, song, arrangement, media

List Tag Groups

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/tag_groups"

HTTP Request

GET https://api.planningcenteronline.com/services/v2/tag_groups

URL Parameters

Parameter Value Description
where[name] string query on a specific name
filter song filter using the named scope “song”
filter arrangement filter using the named scope “arrangement”
filter person filter using the named scope “person”
filter media filter using the named scope “media”
include tags include associated tags
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Tag Group

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/tag_groups/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "TagGroup",
    "id": "primary_key",
    "attributes": {
      "allow_multiple_selections": true,
      "name": "string",
      "required": true,
      "service_type_folder_name": "string",
      "tags_for": "string"
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/services/v2/tag_groups/1

URL Parameters

Parameter Value Description
include tags include associated tags

Associations for a Tag Group

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
tags https://api.planningcenteronline.com/services/v2/tag_groups/1/tags Tag

Teams

A Team within a Service Type.

Relationships

Name Type To Many Description
service_type ServiceType false
default_responds_to Person false A relationship with id 0 will be returned when “All Team Leaders” is the default.

List Teams

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/teams"

HTTP Request

GET https://api.planningcenteronline.com/services/v2/teams

URL Parameters

Parameter Value Description
include team_positions include associated team_positions
include people include associated people
include person_team_position_assignments include associated person_team_position_assignments
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)
order name prefix with a hyphen (-name) to reverse the order
order created_at prefix with a hyphen (-created_at) to reverse the order
order updated_at prefix with a hyphen (-updated_at) to reverse the order

Get a single Team

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/teams/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "Team",
    "id": "primary_key",
    "attributes": {
      "assigned_directly": true,
      "created_at": "2000-01-01T12:00:00Z",
      "default_prepare_notifications": true,
      "default_status": "string",
      "name": "string",
      "schedule_to": "string",
      "sequence": 1,
      "updated_at": "2000-01-01T12:00:00Z"
    },
    "relationships": {
      "default_responds_to": {
        "data": {
          "type": "Person",
          "id": "123"
        }
      },
      "service_type": {
        "data": {
          "type": "ServiceType",
          "id": "123"
        }
      }
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/services/v2/teams/1

URL Parameters

Parameter Value Description
include team_positions include associated team_positions
include people include associated people
include person_team_position_assignments include associated person_team_position_assignments

Associations for a Team

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
people https://api.planningcenteronline.com/services/v2/teams/1/people Person
person_team_position_assignments https://api.planningcenteronline.com/services/v2/teams/1/person_team_position_assignments PersonTeamPositionAssignment
plan_people https://api.planningcenteronline.com/services/v2/teams/1/plan_people PlanPerson
team_leaders https://api.planningcenteronline.com/services/v2/teams/1/team_leaders TeamLeader
team_positions https://api.planningcenteronline.com/services/v2/teams/1/team_positions TeamPosition

Actions for a Team

You can perform the following actions on a Team by POSTing to the specified URL.

Action URL Description

TeamLeaders

A leader of a specific Team in a Service Type.

Relationships

Name Type To Many Description
person Person false
team Team false

List Team Leaders

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/people/1/team_leaders"

HTTP Request

GET https://api.planningcenteronline.com/services/v2/people/1/team_leaders

URL Parameters

Parameter Value Description
include people include associated people
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)
order first_name prefix with a hyphen (-first_name) to reverse the order
order last_name prefix with a hyphen (-last_name) to reverse the order

Get a single Team Leader

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/people/1/team_leaders/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "TeamLeader",
    "id": "primary_key",
    "attributes": {
      "send_responses_for_accepts": true,
      "send_responses_for_blockouts": true,
      "send_responses_for_declines": true
    },
    "relationships": {
      "person": {
        "data": {
          "type": "Person",
          "id": "123"
        }
      },
      "team": {
        "data": {
          "type": "Team",
          "id": "123"
        }
      }
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/services/v2/people/1/team_leaders/1

URL Parameters

Parameter Value Description
include people include associated people

Associations for a Team Leader

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
people https://api.planningcenteronline.com/services/v2/people/1/team_leaders/1/people Person

TeamPositions

A position within a team.

Attribute Info

negative_tag_groups

If the Team is assigned via tags, these are Tags where the option “None” is specified.

tag_groups

If the Team is assigned via tags, these are Tags where the option “Any” is specified.

tags

If the Team is assigned via tags, these are specific Tags that are specified.

Relationships

Name Type To Many Description
team Team false

List Team Positions

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/service_types/1/team_positions"

HTTP Request

GET https://api.planningcenteronline.com/services/v2/service_types/1/team_positions

URL Parameters

Parameter Value Description
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Team Position

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/service_types/1/team_positions/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "TeamPosition",
    "id": "primary_key",
    "attributes": {
      "name": "string",
      "negative_tag_groups": [

      ],
      "tag_groups": [

      ],
      "tags": [

      ]
    },
    "relationships": {
      "team": {
        "data": {
          "type": "Team",
          "id": "123"
        }
      }
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/services/v2/service_types/1/team_positions/1

URL Parameters

none

Associations for a Team Position

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
person_team_position_assignments https://api.planningcenteronline.com/services/v2/service_types/1/team_positions/1/person_team_position_assignments PersonTeamPositionAssignment

Actions for a Team Position

You can perform the following actions on a Team Position by POSTing to the specified URL.

Action URL Description

TextSettings

List Text Settings

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/people/1/text_settings"

HTTP Request

GET https://api.planningcenteronline.com/services/v2/people/1/text_settings

URL Parameters

Parameter Value Description
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Text Setting

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/people/1/text_settings/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "TextSetting",
    "id": "primary_key",
    "attributes": {
      "carrier": "string",
      "display_number": "string",
      "general_emails_enabled": true,
      "normalized_number": "string",
      "reminders_enabled": true,
      "scheduling_replies_enabled": true,
      "scheduling_requests_enabled": true
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/services/v2/people/1/text_settings/1

URL Parameters

none

Update an existing Text Setting

# to update a record...
curl -v -u token:secret -X PATCH -d '{"data":{"type":"TextSetting","id":"1","attributes":{...}}}' "https://api.planningcenteronline.com/services/v2/people/1/text_settings/1"

HTTP Request

PATCH https://api.planningcenteronline.com/services/v2/people/1/text_settings/1

Resource Attributes

Attribute Type
general_emails_enabled boolean
reminders_enabled boolean
scheduling_replies_enabled boolean
scheduling_requests_enabled boolean

TimePreferenceOptions

A Service Time a person prefers to be scheduled to.

Attribute Info

minute_of_day

0 for 12:00 am, 1 for 12:01 am, 100 for 1:00 am, through 2359 for 11:59pm

List Time Preference Options

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/service_types/1/time_preference_options"

HTTP Request

GET https://api.planningcenteronline.com/services/v2/service_types/1/time_preference_options

URL Parameters

Parameter Value Description
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Time Preference Option

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/service_types/1/time_preference_options/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "TimePreferenceOption",
    "id": "primary_key",
    "attributes": {
      "created_at": "2000-01-01T12:00:00Z",
      "day_of_week": 1,
      "description": "string",
      "minute_of_day": 1,
      "sort_index": "string",
      "updated_at": "2000-01-01T12:00:00Z"
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/services/v2/service_types/1/time_preference_options/1

URL Parameters

none

Zooms

Describes a zoom level for an attachment

Attribute Info

aspect_ratio

The aspect ratio of the device this zoom is for. It is rounded to the nearest 3 decimal places.

x_offset

The percentage of the document’s width the zoomed document should be offset by horizontally.

y_offset

The percentage of the document’s height the zoomed document should be offset by vertically.

zoom_level

The percentage of the zoom. Must be a value between 1.0 and 5.0

Relationships

Name Type To Many Description
person Person false
attachable Attachment false

List Zooms

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/songs/1/attachments/1/zooms"

HTTP Request

GET https://api.planningcenteronline.com/services/v2/songs/1/attachments/1/zooms

URL Parameters

Parameter Value Description
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Zoom

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/services/v2/songs/1/attachments/1/zooms/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "Zoom",
    "id": "primary_key",
    "attributes": {
      "aspect_ratio": 1.42,
      "x_offset": 1.42,
      "y_offset": 1.42,
      "zoom_level": 1.42
    },
    "relationships": {
      "attachable": {
        "data": {
          "type": "Attachment",
          "id": "123"
        }
      },
      "person": {
        "data": {
          "type": "Person",
          "id": "123"
        }
      }
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/services/v2/songs/1/attachments/1/zooms/1

URL Parameters

none

Create a new Zoom

# to create a record...
curl -v -u token:secret -X POST -d '{"data":{"type":"Zoom","attributes":{...}}}' "https://api.planningcenteronline.com/services/v2/songs/1/attachments/1/zooms"

HTTP Request

POST https://api.planningcenteronline.com/services/v2/songs/1/attachments/1/zooms

Resource Attributes

Attribute Type
zoom_level float
x_offset float
y_offset float
aspect_ratio float

Update an existing Zoom

# to update a record...
curl -v -u token:secret -X PATCH -d '{"data":{"type":"Zoom","id":"1","attributes":{...}}}' "https://api.planningcenteronline.com/services/v2/songs/1/attachments/1/zooms/1"

HTTP Request

PATCH https://api.planningcenteronline.com/services/v2/songs/1/attachments/1/zooms/1

Resource Attributes

Attribute Type
zoom_level float
x_offset float
y_offset float

Delete a Zoom

# to delete a record...
curl -v -u token:secret -X DELETE "https://api.planningcenteronline.com/services/v2/songs/1/attachments/1/zooms/1"

HTTP Request

DELETE https://api.planningcenteronline.com/services/v2/songs/1/attachments/1/zooms/1

Webhooks

Webhooks allow a third-party application to receive real-time data payloads when something changes in Planning Center. In most cases, webhooks are a faster, more efficient alternative to polling the API for data changes.

Permissions: Organization Administrators can establish and manage webhook subscriptions at https://api.planningcenteronline.com/webhooks. Any Org Admin can manage existing webhooks for your organization.

Request & Responses: You can inspect the request and your server response of every webhook at https://api.planningcenteronline.com/webhooks. Requests are POST only. Responding with a 410 will deactivate the webhook subscription.

Payloads: Other than the payload data, each webhook delivery includes a unique ID, a type, and an attempt number. Use this data for logging and surfacing helpful messaging in your application.

Rate-limits: At present, there are no rate-limits for webhooks.

Failures & Retries: If the delivery of webhook fails, you’ll receive an email after it’s failed for an hour. If the webook continues to fail, a second email will be sent on the final try before it’s deactivated (after 5.4 days since the first failure). The webhook will automatically retry up to 16 times with an exponential backoff. You can manually redeliver a webhook at https://api.planningcenteronline.com/webhooks.

Retry Schedule: If a webhook is met with anything other than a 200 status, it will be retried along the following schedule after the first failure: 30 seconds, 1 minute, 2 minutes, 4 minutes, 8 minutes, 16 minutes, 32 minutes, 64 minutes, 2.1 hours, 4.2 hours, 8.5 hours, 17 hours, and finally once per day for up to 4 days.

AvailableEvents

An event supported by webhooks

List Available Events

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/webhooks/v2/available_events"

HTTP Request

GET https://api.planningcenteronline.com/webhooks/v2/available_events

URL Parameters

Parameter Value Description
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Deliveries

Relationships

Name Type To Many Description
event Event false

List Deliveries

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/webhooks/v2/subscriptions/1/events/1/deliveries"

HTTP Request

GET https://api.planningcenteronline.com/webhooks/v2/subscriptions/1/events/1/deliveries

URL Parameters

Parameter Value Description
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)
order created_at prefix with a hyphen (-created_at) to reverse the order

Get a single Delivery

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/webhooks/v2/subscriptions/1/events/1/deliveries/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "Delivery",
    "id": "primary_key",
    "attributes": {
      "created_at": "2000-01-01T12:00:00Z",
      "request_body": "string",
      "request_headers": "string",
      "response_body": "string",
      "response_headers": "string",
      "status": 1,
      "timing": 1.42,
      "updated_at": "2000-01-01T12:00:00Z"
    },
    "relationships": {
      "event": {
        "data": {
          "type": "Event",
          "id": "123"
        }
      }
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/webhooks/v2/subscriptions/1/events/1/deliveries/1

URL Parameters

none

Events

Relationships

Name Type To Many Description
subscription Subscription false

List Events

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/webhooks/v2/subscriptions/1/events"

HTTP Request

GET https://api.planningcenteronline.com/webhooks/v2/subscriptions/1/events

URL Parameters

Parameter Value Description
where[uuid] string query on a specific uuid
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)
order created_at prefix with a hyphen (-created_at) to reverse the order

Get a single Event

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/webhooks/v2/subscriptions/1/events/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "Event",
    "id": "primary_key",
    "attributes": {
      "created_at": "2000-01-01T12:00:00Z",
      "payload": "string",
      "updated_at": "2000-01-01T12:00:00Z",
      "uuid": "string"
    },
    "relationships": {
      "subscription": {
        "data": {
          "type": "Subscription",
          "id": "123"
        }
      }
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/webhooks/v2/subscriptions/1/events/1

URL Parameters

none

Associations for an Event

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
deliveries https://api.planningcenteronline.com/webhooks/v2/subscriptions/1/events/1/deliveries Delivery

Actions for an Event

You can perform the following actions on an Event by POSTing to the specified URL.

Action URL Description
redeliver https://api.planningcenteronline.com/webhooks/v2/subscriptions/1/events/1/redeliver

Organizations

Get a single Organization

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/webhooks/v2"

The above command returns JSON structured like this:

{
  "data": {
    "type": "Organization",
    "id": "primary_key",
    "attributes": {
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/webhooks/v2

URL Parameters

none

Associations for an Organization

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
available_events https://api.planningcenteronline.com/webhooks/v2/available_events AvailableEvent
subscriptions https://api.planningcenteronline.com/webhooks/v2/subscriptions Subscription

Actions for an Organization

You can perform the following actions on an Organization by POSTing to the specified URL.

Action URL Description

Subscriptions

Attribute Info

authenticity_secret

Every delivery will include a header X-PCO-Webhooks-Authenticity.

This header will be the HMAC-SHA256 value of this the authenticity_secret used as the key, and the message as the webhook body.

hmac_sha256(authenticity_secret, webhook_body)

List Subscriptions

# to list records...
curl -v -u token:secret "https://api.planningcenteronline.com/webhooks/v2/subscriptions"

HTTP Request

GET https://api.planningcenteronline.com/webhooks/v2/subscriptions

URL Parameters

Parameter Value Description
where[application_id] string query on a specific application_id
offset integer get results from given offset
per_page integer how many records to return per page (min=1, max=100, default=25)

Get a single Subscription

# to show...
curl -v -u token:secret "https://api.planningcenteronline.com/webhooks/v2/subscriptions/1"

The above command returns JSON structured like this:

{
  "data": {
    "type": "Subscription",
    "id": "primary_key",
    "attributes": {
      "active": true,
      "application_id": "string",
      "authenticity_secret": "string",
      "created_at": "2000-01-01T12:00:00Z",
      "name": "string",
      "updated_at": "2000-01-01T12:00:00Z",
      "url": "string"
    },
    "relationships": {
    }
  }
}

HTTP Request

GET https://api.planningcenteronline.com/webhooks/v2/subscriptions/1

URL Parameters

none

Associations for a Subscription

You can append one of the following associations onto this resource URL to jump to an associated record.

Association URL Endpoint
events https://api.planningcenteronline.com/webhooks/v2/subscriptions/1/events Event

Actions for a Subscription

You can perform the following actions on a Subscription by POSTing to the specified URL.

Action URL Description
rotate_secret https://api.planningcenteronline.com/webhooks/v2/subscriptions/1/rotate_secret

Create a new Subscription

# to create a record...
curl -v -u token:secret -X POST -d '{"data":{"type":"Subscription","attributes":{...}}}' "https://api.planningcenteronline.com/webhooks/v2/subscriptions"

HTTP Request

POST https://api.planningcenteronline.com/webhooks/v2/subscriptions

Resource Attributes

Attribute Type
name string
url string
active boolean

Update an existing Subscription

# to update a record...
curl -v -u token:secret -X PATCH -d '{"data":{"type":"Subscription","id":"1","attributes":{...}}}' "https://api.planningcenteronline.com/webhooks/v2/subscriptions/1"

HTTP Request

PATCH https://api.planningcenteronline.com/webhooks/v2/subscriptions/1

Resource Attributes

Attribute Type
active boolean

Delete a Subscription

# to delete a record...
curl -v -u token:secret -X DELETE "https://api.planningcenteronline.com/webhooks/v2/subscriptions/1"

HTTP Request

DELETE https://api.planningcenteronline.com/webhooks/v2/subscriptions/1

Errors

The PCO API uses the following error codes:

Error Code Description Example Cause
400 Bad Request Something is wrong in your request.
401 Unauthorized You did not use the proper API token and/or secret.
403 Forbidden You tried to view a resource you don’t have access to; You tried to create a resource, but your user has an insufficient role.
404 Not Found You’ve tried to access a URL or resource ID that doesn’t exist.
500 Internal Server Error We had a problem with our server. Try again later.
503 Service Unavailable We’re temporarily offline for maintenance. Please try again later.