The Planning Center API
client for .NET

Fluent syntax, strong typing, and comprehensive documentation. Supports every version of every API, with OIDC built in.

Get Started View on GitHub

Covers all Planning Center APIs

API (Metadata) Calendar Check-Ins Current Giving Groups People Publishing Registrations Services </> Webhooks
Up and running in minutes

Install the NuGet package, point it at your credentials, and start querying.

1. Install

dotnet add package Crews.PlanningCenter.Api

2. Authenticate & query

Create a Personal Access Token in your Planning Center developer account, then:

  • 1 Instantiate a PlanningCenterPersonalAccessToken with your App ID and Secret
  • 2 Create an HttpClient and set the Authorization header via implicit conversion
  • 3 Navigate the fluent API to any resource and call GetAsync()
Authentication options
Program.cs
PlanningCenterPersonalAccessToken token = new()
{
    AppId  = "your-app-id",
    Secret = "your-secret"
};

var httpClient = new HttpClient
{
    BaseAddress = new(PlanningCenterAuthenticationDefaults.BaseUrl)
};
httpClient.DefaultRequestHeaders.Authorization = token;

var peopleClient = new PeopleClient(httpClient).Latest;
var response = await peopleClient.People.WithId("123").GetAsync();

Console.WriteLine($"Person: {response.Data?.Attributes?.Name}");
Everything you need, nothing you don't

Built specifically for Planning Center's API structure, with patterns that feel natural in modern .NET.

Fluent API

Navigate resources with a clean, chainable interface. No URL construction, and no more variables and awaits scattered across your code.

Every Product, Every Version

Full coverage of the 8 core product APIs, plus the 3 metadata APIs — including all API versions.

100% Unit Test Coverage

Every code path in the library is covered by unit tests. Integration tests run against the live Planning Center API and cover nearly every supported endpoint, giving you confidence in every release.

Flexible Authentication

Supports both Personal Access Token and OIDC / OAuth 2.0 flows. ASP.NET Core applications get first-class support with a one-call extension method and automatic bearer-token forwarding.

Strongly Typed Responses

All resource attributes, relationships, and metadata are represented as fully typed C# classes — including correct nullability annotations. Catch API mismatches at compile time, not at runtime.

Dependency Injection

Register all product clients in one line with AddPlanningCenterApi(). Works seamlessly with IHttpClientFactory, resilience pipelines, and the standard ASP.NET Core DI container.

Ready to integrate?

Read the full documentation, browse the API reference, or check out the source on GitHub.

Browse the Docs API Reference