> This page is for version v2023-01-01.
> For other versions, use one of these documentation indexes:
> - v2026-04-01 (default): https://docs.givechariot.com/v2026-04-01/llms.txt

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.givechariot.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.givechariot.com/_mcp/server.

# Set Up

### Generate An Access Token

First, you'll need to create an access token that lets you access the APIs. Fill in the provided client_id and client_secret to in the preferred code snippet and get an access token.

**`cURL`**

```curl cURL
curl --request POST \
  --url 'https://chariot-sandbox.us.auth0.com/oauth/token' \
  --header 'content-type: application/x-www-form-urlencoded' \
  --data 'audience=https://api.givechariot.com&grant_type=client_credentials&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET'
```

**`HTTP`**

```http HTTP
POST https://chariot-sandbox.us.auth0.com/oauth/token
Content-Type: application/x-www-form-urlencoded

audience=https://api.givechariot.com&grant_type=client_credentials&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET
```

**`JavaScript`**

```javascript JavaScript
var request = require("request");

var options = { method: 'POST',
  url: 'https://chariot-sandbox.us.auth0.com/oauth/token',
  headers: { 'content-type': 'application/x-www-form-urlencoded' },
  form:
   { client_id: 'YOUR_CLIENT_ID',
     client_secret: 'YOUR_CLIENT_SECRET',
     audience: 'https://api.givechariot.com',
     grant_type: 'client_credentials' }
   };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
```

Now that you have an access token, you're set to initiate an API request. We're going to utilize Chariot's APIs to generate a CID (Connect Identifier) for a nonprofit organization. This CID is a crucial element needed to activate the DAFpay button.

To create a CID to a nonprofit, we first establish the nonprofit's ID by utilizing their EIN (Employer Identification Number). Following that, we proceed to create a Connect with the nonprofit's ID.

### Create Nonprofit

> **Nonprofit EIN & Email Address Requirements**
>
> This route requires the organization’s EIN and a unique email address. Ensure the email address provided is unique to the nonprofit and not a generic support email (e.g., [support@platform.com](mailto:support@platform.com)). This email will be used for important messaging related to the nonprofit’s Chariot account and can be updated later.

The [Create Nonprofit](/v2023-01-01/api/nonprofits/create) endpoint registers a new nonprofit or confirms its existence within the Chariot system. For registration, it's necessary to supply the nonprofit's EIN and details for a contact person at the nonprofit.

Below are a few examples of different implementations. Modify the `user` object,  `ein` field, and access token from step 1 before making the request.

**`cURL`**

```curl cURL
curl --request POST \
     --url https://sandboxapi.givechariot.com/v1/nonprofits \
     --header 'accept: application/json' \
     --header 'authorization: Bearer ACCESS_TOKEN' \
     --header 'content-type: application/json' \
     --data '
{
     "user": {
          "email": "hansolo@savethestars.com",
          "phone": "3051234321",
          "firstName": "Han",
          "lastName": "Solo"
     },
     "ein": "123456789"
}
'
```

**`JavaScript`**

```javascript JavaScript
const options = {
  method: 'POST',
  headers: {
    accept: 'application/json',
    'content-type': 'application/json',
    authorization: 'Bearer <YOUR_TOKEN_FROM_STEP_1_HERE>'
  },
  body: JSON.stringify({
    user: {
      email: 'hansolo@savethestars.com',
      phone: '3051234321',
      firstName: 'Han',
      lastName: 'Solo'
    },
    ein: '123456789'
  })
};

fetch('https://sandboxapi.givechariot.com/v1/nonprofits', options)
  .then(response => response.json())
  .then(response => console.log(response))
  .catch(err => console.error(err));
```

Bravo! You have just created a nonprofit in the Chariot system. Save down the nonprofit's `id` and now let's create a Connect for this nonprofit.

### Create Connect

The [Create Connect](/v2023-01-01/api/connects/create) endpoint creates a Connect record or retrieves it if a Connect already exists for this nonprofit in Chariot's system.

To create a Connect, the nonprofit's `id` must be provided, which you should have from the previous step!

Below are a few examples of different implementations. Modify the `NONPROFIT_ID` query parameter with the nonprofit's `id`. Don't forget to add the access_token!

**`cURL`**

```curl cURL
curl --request POST \
     --url 'https://sandboxapi.givechariot.com/v1/connects?nonprofit=NONPROFIT_ID' \
     --header 'accept: application/json' \
     --header 'authorization: Bearer ACCESS_TOKEN' \
     --header 'content-type: application/json'
```

**`JavaScript`**

```javascript JavaScript
const options = {
  method: 'POST',
  headers: {
    accept: 'application/json',
    'content-type': 'application/json',
    authorization: 'Bearer YOUR_TOKEN_FROM_STEP_1_HERE'
  }
};

fetch('https://sandboxapi.givechariot.com/v1/connects?nonprofit=NONPROFIT_ID', options)
  .then(response => response.json())
  .then(response => console.log(response))
  .catch(err => console.error(err));
```

Amazing! You can now start integrating DAFpay to build a front end and start receiving grants for this nonprofit.