> ## Documentation Index
> Fetch the complete documentation index at: https://docs.thefaithapp.com/llms.txt
> Use this file to discover all available pages before exploring further.

# API Introduction

> Integrate member sign-in, church content, engagement, giving, events, and analytics through the stable v1 partner API.

# TheFaithApp Partner API

TheFaithApp `v1` is the supported API for third-party web and mobile apps. It lets an integration sign in members through hosted auth and work with the member's church-scoped content and workflows.

## Base URL

```text theme={null}
https://api.thefaithapp.com
```

All request and response bodies use JSON unless an endpoint explicitly documents a file response, such as a CSV export.

## Authentication at a glance

Protected requests require two credentials:

```http theme={null}
X-API-Key: your-client-api-key
Authorization: Bearer your-member-access-token
```

* The client API key identifies the partner app and church.
* The bearer token identifies the signed-in member.
* The member token must belong to the same church as the client API key.

The hosted-auth setup and code-exchange endpoints do not use these headers. They accept the client key in the request so a member can sign in before an access token exists.

<CardGroup cols={2}>
  <Card title="Make your first request" icon="rocket" href="/api-reference/quickstart">
    Complete hosted sign-in and load the current member.
  </Card>

  <Card title="Understand hosted auth" icon="shield-keyhole" href="/api-reference/hosted-auth">
    Learn redirects, state validation, PKCE, token storage, and logout.
  </Card>

  <Card title="Build with Flutter" icon="mobile-screen" href="/api-reference/flutter-sdk">
    Add member sign-in and authenticated API requests to an Android or iOS app.
  </Card>

  <Card title="Build with React Native" icon="atom" href="/api-reference/react-native-sdk">
    Add hosted sign-in to an Expo or React Native app.
  </Card>

  <Card title="Add giving in Flutter" icon="hand-holding-heart" href="/api-reference/flutter-giving-sdk">
    Render authenticated general and campaign giving in a Flutter app.
  </Card>

  <Card title="Add giving in React Native" icon="hand-holding-heart" href="/api-reference/react-native-giving-sdk">
    Render authenticated general and campaign giving in React Native or Expo.
  </Card>
</CardGroup>

## What you can build

* Personalized church home experiences
* Audio and video sermon libraries, transcripts, chapters, and insights
* Devotionals, live streams, favorites, and bookmarks
* Church discovery and public church profiles
* Event registration and volunteer workflows
* Member campus and ministry connections, community groups, and group resources
* Shared-resource lending and mutual-aid needs and offers
* Member notifications and bulletins
* Hosted church giving experiences
* Prayer request submission
* Confidential, member-owned Pastoral Care requests and follow-up preferences
* Product and notification analytics

Chat and messaging routes are not part of this partner reference.

## Context headers

Some content changes with the member's local date or timezone:

| Header              | Use                                                                               |
| ------------------- | --------------------------------------------------------------------------------- |
| `X-Client-Date`     | Resolve date-sensitive content such as devotionals. Use `YYYY-MM-DD`.             |
| `X-Client-Timezone` | Resolve time-sensitive home content in an IANA timezone such as `Africa/Kampala`. |

## Request safety

Use an idempotency strategy in your own application for user actions. A network retry can otherwise submit the same logical action more than once when an endpoint does not expose an idempotency key.

Keep API keys and member tokens out of browser logs, analytics payloads, crash reports, source control, and public screenshots.

## Versioning

The version is part of every endpoint path. Backward-compatible fields may be added to `v1` responses over time, so clients should ignore fields they do not recognize. A breaking contract change requires a new API version.
