### Install Node.js SDK Source: https://github.com/chariot-giving/chariot-openapi/blob/main/fern/versions/v2026-01-15/pages/api/sdk-1.mdx Install the Node.js SDK using npm or yarn. The SDK provides typed interfaces for request parameters, response bodies, and error details. ```bash $ npm install --save @chariot-giving/typescript-sdk # or $ yarn add @chariot-giving/typescript-sdk ``` -------------------------------- ### Install Chariot Connect JavaScript Package Source: https://github.com/chariot-giving/chariot-openapi/blob/main/fern/versions/v2026-01-15/pages/integrating-dafpay/installation.mdx Choose one of the following methods to install the Chariot Connect JavaScript package: load from CDN, install via NPM, or add using Yarn. ```html ``` ```shell npm install --save react-chariot-connect ``` ```shell yarn add react-chariot-connect ``` -------------------------------- ### API Access Example Source: https://github.com/chariot-giving/chariot-openapi/blob/main/fern/versions/v2026-01-15/pages/api/authentication-1.mdx Examples of how to authenticate API requests using a Bearer Token. Replace 'sk_test_4eC39HqLyjWDarjtT1zdp7dc' with your actual secret API key. ```APIDOC ## API access The Chariot API uses API keys to authenticate requests. Your API keys carry many privileges, so be sure to keep them secure! Do not share your secret API keys in publicly accessible areas such as GitHub, client-side code, and so forth. Authentication to the API is performed via HTTP Bearer Token. Provide your API key as the `Authentication: Bearer {TOKEN}` value. All API requests must be made over HTTPS. Calls made over plain HTTP will fail. API requests without authentication will also fail. ### Example Request ```curl curl https://api.givechariot.com/v1/nonprofit/530196605 \ -H "Authorization: Bearer sk_test_4eC39HqLyjWDarjtT1zdp7dc" ``` ### Request Details - **Method**: GET - **Endpoint**: `https://api.givechariot.com/v1/nonprofit/{id}` - **Headers**: - `Authorization`: `Bearer {YOUR_API_KEY}` ### Response - **Success Response**: Returns the requested resource if authentication is successful. - **Error Response**: Returns an error if authentication fails (e.g., invalid or missing token). ``` -------------------------------- ### Webhook Signature Header Example Source: https://github.com/chariot-giving/chariot-openapi/blob/main/fern/versions/v2026-01-15/pages/api/webhooks-and-events.mdx This example shows the format of the `Chariot-Webhook-Signature` header. It contains a timestamp prefixed with `t=` and one or more signatures, each prefixed by a scheme like `v1`. ```text Chariot-Webhook-Signature: t=2024-01-19T18:48:56Z,v1=e0632fb61f7d1068ecbde75410d5c3cc152926f97eaacf53c6228624647329da ``` -------------------------------- ### Authenticate API Request with NodeJS Source: https://github.com/chariot-giving/chariot-openapi/blob/main/fern/versions/v2026-01-15/pages/api/authentication-1.mdx This NodeJS example uses the 'request' library to make an authenticated GET request. The API key is included in the Authorization header as a Bearer token. ```javascript var request = require("request"); var options = { method: 'GET', url: 'https://api.givechariot.com/v1/nonprofit/530196605', headers: { 'Authorization': 'Bearer sk_test_4eC39HqLyjWDarjtT1zdp7dc' } }; request(options, function (error, response, body) { if (error) throw new Error(error); console.log(body); }); ``` -------------------------------- ### Authenticate API Request with Python Source: https://github.com/chariot-giving/chariot-openapi/blob/main/fern/versions/v2026-01-15/pages/api/authentication-1.mdx This Python example shows how to authenticate an API request using the http.client library. The Authorization header is set with the Bearer token. ```python import http.client conn = http.client.HTTPSConnection("api.givechariot.com") headers = { 'Authorization': "Bearer sk_test_4eC39HqLyjWDarjtT1zdp7dc" } conn.request("GET", "/v1/nonprofit/530196605", headers=headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) ``` -------------------------------- ### Batch ZIP Structure Example Source: https://github.com/chariot-giving/chariot-openapi/blob/main/fern/versions/v2026-01-15/pages/lockbox-providers/batch-format.mdx Illustrates the expected file structure within a batch ZIP archive. It should contain one CSV index file and one TIFF file per mail item, with filenames corresponding to mail_item_id values. ```text batch.zip ├── index.csv ├── mail_a1b2c3.tiff ├── mail_d4e5f6.tiff └── mail_g7h8i9.tiff ``` -------------------------------- ### Authenticate API Request with C# Source: https://github.com/chariot-giving/chariot-openapi/blob/main/fern/versions/v2026-01-15/pages/api/authentication-1.mdx This C# example demonstrates how to authenticate an API request using the RestSharp library. The API key is added as a Bearer token in the Authorization header. ```csharp var client = new RestClient("https://api.givechariot.com/v1/nonprofit/530196605"); var request = new RestRequest(Method.GET); request.AddHeader("Authorization", "Bearer sk_test_4eC39HqLyjWDarjtT1zdp7dc"); IRestResponse response = client.Execute(request); ``` -------------------------------- ### Authenticate API Request with Go Source: https://github.com/chariot-giving/chariot-openapi/blob/main/fern/versions/v2026-01-15/pages/api/authentication-1.mdx This Go program shows how to make an authenticated GET request to the Chariot API. It includes setting the Authorization header with your Bearer token. ```go package main import ( "fmt" "net/http" "io/ioutil" ) func main() { url := "https://api.givechariot.com/v1/nonprofit/530196605" req, _ := http.NewRequest("GET", url, nil) // Add the Authorization header with the Bearer token req.Header.Add("Authorization", "Bearer sk_test_4eC39HqLyjWDarjtT1zdp7dc") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := ioutil.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` -------------------------------- ### Get Financial Account Balance Source: https://context7.com/chariot-giving/chariot-openapi/llms.txt Retrieve current and available balances for a financial account in USD cents. Note that values are in cents, e.g., 500000 cents equals $5,000.00. ```bash curl -X GET "https://api.givechariot.com/v1/financial_accounts/account_01jpjenf5q6cawy43yxfcrxhct/balance" \ -H "Authorization: Bearer $CHARIOT_API_KEY" ``` -------------------------------- ### Get Organization Details Source: https://context7.com/chariot-giving/chariot-openapi/llms.txt Retrieve comprehensive details for a specific organization using its ID. This includes compliance, classification, brand information, and officers. ```bash curl -X GET "https://api.givechariot.com/v1/organizations/org_01j8rs605a4gctmbm58d87mvsj" \ -H "Authorization: Bearer $CHARIOT_API_KEY" ``` ```json # Expected 200 response: # { # "id": "org_01j8rs605a4gctmbm58d87mvsj", # "ein": "530196605", # "name": "American Red Cross", # "physical_address": { "line1": "431 18th St NW", "city": "Washington", "state": "DC", "postal_code": "20006", "country": "US" }, # "compliance": { "daf_eligible": true, "irs_pub_78": { "compliant": true } }, # "web": { "domain": "redcross.org" }, # "brand": { "logo_url": "https://cdn.givechariot.com/logos/redcross.png" }, # "claimed": true # } ``` -------------------------------- ### Authenticate API Request with jQuery Source: https://github.com/chariot-giving/chariot-openapi/blob/main/fern/versions/v2026-01-15/pages/api/authentication-1.mdx This example shows how to authenticate an API request using jQuery's AJAX method. The Authorization header is configured with the Bearer token. ```javascript var settings = { "async": true, "crossDomain": true, "url": "https://api.givechariot.com/v1/nonprofit/530196605", "method": "GET", "headers": { "Authorization": "Bearer sk_test_4eC39HqLyjWDarjtT1zdp7dc" } } $.ajax(settings).done(function (response) { console.log(response); }); ``` -------------------------------- ### Get Batch Mailbox Upload URL Source: https://context7.com/chariot-giving/chariot-openapi/llms.txt For lockbox providers: obtain a presigned S3 URL to upload a ZIP batch of TIFF check images and a CSV index file. The URL is valid for 15 minutes. ```APIDOC ## POST /v1/mailbox/upload_url ### Description For lockbox providers: obtain a presigned S3 URL to upload a ZIP batch of TIFF check images + CSV index file. ### Method POST ### Endpoint /v1/mailbox/upload_url ### Parameters #### Request Body - **location_id** (string) - Required - The identifier for the location associated with the mailbox. ### Request Example ```bash curl -X POST "https://api.givechariot.com/v1/mailbox/upload_url" \ -H "Authorization: Bearer $CHARIOT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "location_id": "po_543" }' ``` ### Response #### Success Response (200) - **url** (string) - The presigned S3 URL for uploading the batch. This URL is valid for 15 minutes. ### Uploading the Batch After obtaining the upload URL, use an HTTP PUT request to upload the batch ZIP file: ```bash curl -X PUT "https://storage.example.com/upload?token=abc123" \ -H "Content-Type: application/zip" \ --data-binary @batch.zip ``` ``` -------------------------------- ### Get Mailbox Upload URL for Lockbox Providers Source: https://context7.com/chariot-giving/chariot-openapi/llms.txt For lockbox providers, obtain a presigned S3 URL to upload a ZIP batch of TIFF check images and a CSV index file. The URL is valid for 15 minutes. ```bash curl -X POST "https://api.givechariot.com/v1/mailbox/upload_url" \ -H "Authorization: Bearer $CHARIOT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "location_id": "po_543" }' ``` ```bash curl -X PUT "https://storage.example.com/upload?token=abc123" \ -H "Content-Type: application/zip" \ --data-binary @batch.zip ``` -------------------------------- ### List Grants for a Connect Instance Source: https://context7.com/chariot-giving/chariot-openapi/llms.txt Retrieve a paginated list of all grants associated with a specific Connect instance. Use the `connect_id` and `pageLimit` query parameters to filter and paginate results. ```bash curl -X GET "https://api.givechariot.com/v1/grants?connect_id=live_xJd0lUrvpDkzeGBWZbuI2wbvEdM&pageLimit=25" \ -H "Authorization: Bearer $CHARIOT_API_KEY" ``` -------------------------------- ### List Payment Sources Source: https://github.com/chariot-giving/chariot-openapi/blob/main/fern/versions/v2026-01-15/pages/processing/how-it-works.mdx Retrieve a list of all configured payment sources. This is useful for managing how funds are received. ```bash curl -X GET \ "https://api.chariot.com/v1/payment_sources" \ -H "Authorization: Bearer YOUR_API_KEY" ``` -------------------------------- ### Webhook Event Payload Example Source: https://github.com/chariot-giving/chariot-openapi/blob/main/fern/versions/v2026-01-15/pages/api/webhooks-and-events.mdx This is an example of the JSON payload structure that Chariot sends to your webhook endpoint when a noteworthy event occurs. It includes event identifiers, timestamps, category, and associated object details. ```json { "id": "event_123abc", "created_at": "2023-01-31T23:59:59Z", "category": "grant.created", "associated_object_type": "grant", "associated_object_id": "67d66b89-51a0-4f17-a7b3-18c5dbac5361" } ``` -------------------------------- ### Sandbox: Simulate Inbound Transfer Lifecycle Source: https://context7.com/chariot-giving/chariot-openapi/llms.txt Test the complete inbound transfer lifecycle in the sandbox environment without real bank operations. Supports simulating both successful completion and failure. ```bash curl -X POST "https://sandboxapi.givechariot.com/v1/simulations/inbound_transfers/inbound_transfer_01j8rs605a4gctmbm58d87mvsj/complete" \ -H "Authorization: Bearer $SANDBOX_API_KEY" ``` ```bash curl -X POST "https://sandboxapi.givechariot.com/v1/simulations/inbound_transfers/inbound_transfer_01j8rs605a4gctmbm58d87mvsj/fail" \ -H "Authorization: Bearer $SANDBOX_API_KEY" ``` -------------------------------- ### Get Organization Source: https://context7.com/chariot-giving/chariot-openapi/llms.txt Retrieve full details for a known organization ID. ```APIDOC ## GET /v1/organizations/{organization_id} ### Description Retrieve full details (compliance, classification, brand, officers) for a known organization ID. ### Method GET ### Endpoint /v1/organizations/{organization_id} #### Path Parameters - **organization_id** (string) - Required - The unique identifier of the organization. ### Request Example ```bash curl -X GET "https://api.givechariot.com/v1/organizations/org_01j8rs605a4gctmbm58d87mvsj" \ -H "Authorization: Bearer $CHARIOT_API_KEY" ``` ### Response #### Success Response (200) - **id** (string) - The unique identifier for the organization. - **ein** (string) - The organization's Employer Identification Number. - **name** (string) - The name of the organization. - **physical_address** (object) - The physical address of the organization. - **line1** (string) - **city** (string) - **state** (string) - **postal_code** (string) - **country** (string) - **compliance** (object) - Compliance information. - **daf_eligible** (boolean) - **irs_pub_78** (object) - **compliant** (boolean) - **web** (object) - **domain** (string) - **brand** (object) - **logo_url** (string) - **claimed** (boolean) - Indicates if the organization profile has been claimed. #### Response Example ```json { "id": "org_01j8rs605a4gctmbm58d87mvsj", "ein": "530196605", "name": "American Red Cross", "physical_address": { "line1": "431 18th St NW", "city": "Washington", "state": "DC", "postal_code": "20006", "country": "US" }, "compliance": { "daf_eligible": true, "irs_pub_78": { "compliant": true } }, "web": { "domain": "redcross.org" }, "brand": { "logo_url": "https://cdn.givechariot.com/logos/redcross.png" }, "claimed": true } ``` ``` -------------------------------- ### Create Connect Source: https://context7.com/chariot-giving/chariot-openapi/llms.txt Create a Chariot Connect instance for a nonprofit. ```APIDOC ## POST /v1/connects ### Description Create (or retrieve existing) a Chariot Connect instance for a nonprofit. The returned `id` (CID) is used to initialize the client-side DAFpay widget. ### Method POST ### Endpoint /v1/connects #### Request Body - **organization_id** (string) - Required - The ID of the organization. - **contact** (object) - Required - Contact information for the Connect. - **email** (string) - Required. - **first_name** (string) - Required. - **last_name** (string) - Required. - **phone** (string) - Required. - **name** (string) - Required - A name for the Connect instance (e.g., 'main-website'). ### Request Example ```bash curl -X POST "https://api.givechariot.com/v1/connects" \ -H "Authorization: Bearer $CHARIOT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "organization_id": "org_01j8rs605a4gctmbm58d87mvsj", "contact": { "email": "ben.give@redcross.org", "first_name": "Ben", "last_name": "Give", "phone": "2025551234" }, "name": "main-website" }' ``` ### Response #### Success Response (200 or 201) - **id** (string) - The unique identifier for the Connect instance. - **name** (string) - The name of the Connect instance. - **apiKey** (string) - The API key associated with the Connect. - **active** (boolean) - Indicates if the Connect is active. - **createdAt** (string) - The timestamp when the Connect was created. - **updatedAt** (string) - The timestamp when the Connect was last updated. #### Response Example ```json { "id": "live_xJd0lUrvpDkzeGBWZbuI2wbvEdM", "name": "main-website", "apiKey": "live_98235982835", "active": true, "createdAt": "2024-03-01T10:00:00Z", "updatedAt": "2024-03-01T10:00:00Z" } ``` ``` -------------------------------- ### Get Grant Source: https://context7.com/chariot-giving/chariot-openapi/llms.txt Retrieve details for a specific grant using its unique identifier. ```APIDOC ## GET /v1/grants/{grant_id} ### Description Retrieve a single grant by its UUID. ### Method GET ### Endpoint /v1/grants/{grant_id} ### Parameters #### Path Parameters - **grant_id** (string) - Required - The UUID of the grant to retrieve. ### Response #### Success Response (200) - **id** (string) - The unique identifier for the grant. - **amount** (integer) - The amount of the grant. - **status** (string) - The current status of the grant. - **statuses** (array) - A history of the grant's statuses. - **status** (string) - The status of the grant at a specific point in time. - **createdAt** (string) - The timestamp when the status was set. - **feeDetail** (object) - Details about the fees associated with the grant. - **total** (integer) - The total fee amount. - **contributions** (array) - A list of fee contributions. - **name** (string) - The name of the contributor. - **amount** (integer) - The amount contributed. - **feeType** (string) - The type of fee. ### Request Example ```bash curl -X GET "https://api.givechariot.com/v1/grants/1e60800e-849b-43d1-870e-57afc8d75473" \ -H "Authorization: Bearer $CHARIOT_API_KEY" ``` ``` -------------------------------- ### Create Connect for Organization (JavaScript) Source: https://github.com/chariot-giving/chariot-openapi/blob/main/fern/versions/v2026-01-15/pages/integrating-dafpay/set-up.mdx Use this JavaScript code to create a Connect for an organization. Provide the organization's ID and a unique contact email. Replace API_KEY with your token. ```javascript const options = { method: 'POST', headers: { accept: 'application/json', 'content-type': 'application/json', authorization: 'Bearer API_KEY' }, body: JSON.stringify({ organization_id: 'ORGANIZATION_ID', contact: { email: 'me@example.com', } }) }; fetch('https://sandboxapi.givechariot.com/v1/connects', options) .then(response => response.json()) .then(response => console.log(response)) .catch(err => console.error(err)); ``` -------------------------------- ### Get Detailed Donation Information Source: https://github.com/chariot-giving/chariot-openapi/blob/main/fern/versions/v2026-01-15/pages/processing/getting-started.mdx Retrieve all attribution and metadata for a specific donation using its ID. ```APIDOC ## GET /v1/donations/{id} ### Description Retrieves detailed information for a specific donation, including all attribution and metadata. ### Method GET ### Endpoint /v1/donations/{id} ### Parameters #### Path Parameters - **id** (string) - Required - The unique identifier of the donation. ``` -------------------------------- ### Get Financial Account Balance Source: https://context7.com/chariot-giving/chariot-openapi/llms.txt Retrieve current and available balances for a financial account (in USD cents). ```APIDOC ## GET /v1/financial_accounts/{account_id}/balance ### Description Retrieves the current and available balances for a specific financial account in USD cents. ### Method GET ### Endpoint https://api.givechariot.com/v1/financial_accounts/{account_id}/balance ### Parameters #### Path Parameters - **account_id** (string) - Required - The ID of the financial account. ### Response #### Success Response (200) - **current_balance** (integer) - The current balance of the account in cents. - **available_balance** (integer) - The available balance of the account in cents. - **timestamp** (string) - The timestamp when the balance was recorded. ``` -------------------------------- ### Create Disbursement Source: https://context7.com/chariot-giving/chariot-openapi/llms.txt Create a disbursement to send funds to a verified nonprofit. Transactions must sum to the disbursement amount, net of fees. Requires `organization_id`, `amount`, `description`, and a list of `transactions`. ```bash curl -X POST "https://api.givechariot.com/v1/disbursements" \ -H "Authorization: Bearer $CHARIOT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "organization_id": "org_01j8rs605a4gctmbm58d87mvsj", "amount": 25000, "description": "Q1 2024 grants batch", "transactions": [ { "amount": 15000, "fee_amount": 0, "description": "Grant from Doe Family Fund", "type": "donor_advised_fund_grant", "donor_advised_fund_grant": { "grant_id": "grant_1234567890", "organization_name": "Miami Charitable", "fund_name": "Doe Family Charitable Fund", "purpose": "General Operating Support", "donors": [{ "first_name": "Jane", "last_name": "Doe", "email": "jane.doe@example.com" }] } }, { "amount": 10000, "fee_amount": 0, "description": "Grant from Smith Family Fund", "type": "donor_advised_fund_grant", "donor_advised_fund_grant": { "organization_name": "LA Charitable", "fund_name": "Smith Family Legacy Fund", "purpose": "Program Support" } } ] }' ``` -------------------------------- ### Get Detailed Donation Information API Source: https://github.com/chariot-giving/chariot-openapi/blob/main/fern/versions/v2026-01-15/pages/processing/getting-started.mdx Retrieve all attribution and metadata for a specific donation using its ID. This is useful for detailed record-keeping. ```bash GET /v1/donations/{id} ``` -------------------------------- ### Sandbox: Simulate Disbursement Completion Source: https://context7.com/chariot-giving/chariot-openapi/llms.txt Force a 'submitted' disbursement to 'completed' status in the sandbox environment for testing. Also includes simulation for failure. ```bash curl -X POST "https://sandboxapi.givechariot.com/v1/simulations/disbursements/disbursement_01jpjen1s23s29kkmnjsb6fzga/complete" \ -H "Authorization: Bearer $SANDBOX_API_KEY" ``` ```bash curl -X POST "https://sandboxapi.givechariot.com/v1/simulations/disbursements/disbursement_01jpjen1s23s29kkmnjsb6fzga/fail" \ -H "Authorization: Bearer $SANDBOX_API_KEY" ``` -------------------------------- ### Create Verification Request Source: https://context7.com/chariot-giving/chariot-openapi/llms.txt Submit an unlisted nonprofit for compliance review so disbursements can be made to it. The status transitions from `needs_review` to `verified` or `failed`. ```bash curl -X POST "https://api.givechariot.com/v1/verification_requests" \ -H "Authorization: Bearer $CHARIOT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "ein": "123456789", "organization_name": "Local Community Foundation", "website": "https://localfoundation.org", "contact_email": "contact@localfoundation.org", "recommended_mailing_address": { "line1": "123 Main St", "city": "San Francisco", "state": "CA", "zip_code": "94105" } }' ``` -------------------------------- ### Sandbox test credentials Source: https://github.com/chariot-giving/chariot-openapi/blob/main/fern/versions/v2026-01-15/pages/integrating-dafpay/faq.mdx use these username and password for testing in the sandbox environment. ```text Username: good-user Password: password123 ``` -------------------------------- ### Get Single Grant by UUID Source: https://context7.com/chariot-giving/chariot-openapi/llms.txt Retrieve details for a specific grant using its unique identifier (UUID). The response includes status history and fee details. ```bash curl -X GET "https://api.givechariot.com/v1/grants/1e60800e-849b-43d1-870e-57afc8d75473" \ -H "Authorization: Bearer $CHARIOT_API_KEY" ``` -------------------------------- ### Create Connect for Organization (cURL) Source: https://github.com/chariot-giving/chariot-openapi/blob/main/fern/versions/v2026-01-15/pages/integrating-dafpay/set-up.mdx This cURL command creates a Connect for a given organization ID. Replace ORGANIZATION_ID with the actual ID and API_KEY with your authorization token. A unique contact email for the nonprofit is required. ```curl curl --request POST \ --url 'https://sandboxapi.givechariot.com/v1/connects' \ --header 'accept: application/json' \ --header 'authorization: Bearer API_KEY' \ --header 'content-type: application/json' \ -d '{ "organization_id": "ORGANIZATION_ID", "contact": { "email": "me@example.com" } }' ``` -------------------------------- ### Create a Verification Request Source: https://github.com/chariot-giving/chariot-openapi/blob/main/fern/versions/v2026-01-15/pages/disbursements/how-it-works.mdx Submit a verification request for an organization not found in Chariot's search. You can track the request status using the GET Verification Request endpoint. ```javascript const verificationRequest = await chariot.verificationRequests.create({ "organization": { "name": "Example Charity", "ein": "12-3456789", "mailing_address": { "street_address": "123 Main St", "city": "Anytown", "state": "CA", "postal_code": "90210", "country_code": "US" } } }); ``` -------------------------------- ### Authenticate API Request with Java Source: https://github.com/chariot-giving/chariot-openapi/blob/main/fern/versions/v2026-01-15/pages/api/authentication-1.mdx This Java snippet uses Unirest to make an authenticated GET request. The API key is passed in the Authorization header as a Bearer token. ```java HttpResponse response = Unirest.get("https://api.givechariot.com/v1/nonprofit/530196605") .header("Authorization", "Bearer sk_test_4eC39HqLyjWDarjtT1zdp7dc") .asString(); ``` -------------------------------- ### Create Connect Source: https://github.com/chariot-giving/chariot-openapi/blob/main/fern/versions/v2026-01-15/pages/integrating-dafpay/set-up.mdx Creates a Connect record for an organization or retrieves it if one already exists. Requires the organization's ID obtained from the search step and a unique contact email address for the nonprofit. ```APIDOC ## Create Connect ### Description Creates a Connect record for an organization or retrieves it if one already exists. Requires the organization's ID and a contact email. ### Method POST ### Endpoint /v1/connects ### Request Body - **organization_id** (string) - Required - The unique identifier of the organization. - **contact** (object) - Required - Information about the organization's contact person. - **email** (string) - Required - The contact email address for the nonprofit. Must be unique to the nonprofit. ### Request Example ```curl curl --request POST \ --url 'https://sandboxapi.givechariot.com/v1/connects' \ --header 'accept: application/json' \ --header 'authorization: Bearer API_KEY' \ --header 'content-type: application/json' \ -d '{ \ "organization_id": "ORGANIZATION_ID", \ "contact": { \ "email": "me@example.com" \ } \ }' ``` ### Response #### Success Response (200) - **id** (string) - The unique identifier for the Connect record. - **organization_id** (string) - The ID of the organization associated with this Connect. - **status** (string) - The current status of the Connect. #### Response Example ```json { "id": "conn_abc", "organization_id": "org_123", "status": "active" } ``` ``` ```APIDOC ## Create Connect (JavaScript) ### Description Creates a Connect record for an organization or retrieves it if one already exists using JavaScript. Requires the organization's ID and a contact email. ### Method POST ### Endpoint /v1/connects ### Request Body - **organization_id** (string) - Required - The unique identifier of the organization. - **contact** (object) - Required - Information about the organization's contact person. - **email** (string) - Required - The contact email address for the nonprofit. Must be unique to the nonprofit. ### Request Example ```javascript const options = { method: 'POST', headers: { accept: 'application/json', 'content-type': 'application/json', authorization: 'Bearer API_KEY' }, body: JSON.stringify({ organization_id: 'ORGANIZATION_ID', contact: { email: 'me@example.com', } }) }; fetch('https://sandboxapi.givechariot.com/v1/connects', options) .then(response => response.json()) .then(response => console.log(response)) .catch(err => console.error(err)); ``` ``` -------------------------------- ### Sandbox: Simulate Inbound Transfer Events Source: https://context7.com/chariot-giving/chariot-openapi/llms.txt Test the complete inbound transfer lifecycle in sandbox without real bank operations. You can simulate both successful completion and failure scenarios. ```APIDOC ## POST /v1/simulations/inbound_transfers/{id}/complete ### Description Simulate the successful completion of an inbound transfer. ### Method POST ### Endpoint /v1/simulations/inbound_transfers/{id}/complete ### Parameters #### Path Parameters - **id** (string) - Required - The ID of the inbound transfer to complete. ### Request Example ```bash curl -X POST "https://sandboxapi.givechariot.com/v1/simulations/inbound_transfers/inbound_transfer_01j8rs605a4gctmbm58d87mvsj/complete" \ -H "Authorization: Bearer $SANDBOX_API_KEY" ``` ### Response #### Success Response (202) - Accepted — status transitions to "completed" ## POST /v1/simulations/inbound_transfers/{id}/fail ### Description Simulate the failure of an inbound transfer (e.g., due to insufficient funds at the originating bank). ### Method POST ### Endpoint /v1/simulations/inbound_transfers/{id}/fail ### Parameters #### Path Parameters - **id** (string) - Required - The ID of the inbound transfer to fail. ### Request Example ```bash curl -X POST "https://sandboxapi.givechariot.com/v1/simulations/inbound_transfers/inbound_transfer_01j8rs605a4gctmbm58d87mvsj/fail" \ -H "Authorization: Bearer $SANDBOX_API_KEY" ``` ### Response #### Success Response (202) - Accepted — status transitions to "failed" ``` -------------------------------- ### Create Chariot Connect Instance Source: https://context7.com/chariot-giving/chariot-openapi/llms.txt Create a new Chariot Connect instance for a nonprofit or retrieve an existing one. The returned `id` (CID) is used to initialize the client-side DAFpay widget. Ensure the `organization_id` is valid. ```bash curl -X POST "https://api.givechariot.com/v1/connects" \ -H "Authorization: Bearer $CHARIOT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "organization_id": "org_01j8rs605a4gctmbm58d87mvsj", "contact": { "email": "ben.give@redcross.org", "first_name": "Ben", "last_name": "Give", "phone": "2025551234" }, "name": "main-website" }' ``` ```json # 200 (existing) or 201 (new) response: # { # "id": "live_xJd0lUrvpDkzeGBWZbuI2wbvEdM", # "name": "main-website", # "apiKey": "live_98235982835", # "active": true, # "createdAt": "2024-03-01T10:00:00Z", # "updatedAt": "2024-03-01T10:00:00Z" # } ``` -------------------------------- ### Authenticate API Request with Ruby Source: https://github.com/chariot-giving/chariot-openapi/blob/main/fern/versions/v2026-01-15/pages/api/authentication-1.mdx This Ruby script demonstrates how to make an authenticated GET request to the Chariot API using Net::HTTP. The Authorization header is configured with the Bearer token. ```ruby require 'uri' require 'net/http' url = URI("https://api.givechariot.com/v1/nonprofit/530196605") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true http.verify_mode = OpenSSL::SSL::VERIFY_NONE request = Net::HTTP::Get.new(url) request["Authorization"] = 'Bearer sk_test_4eC39HqLyjWDarjtT1zdp7dc' response = http.request(request) puts response.read_body ``` -------------------------------- ### List Donor Advised Funds (DAFs) Source: https://context7.com/chariot-giving/chariot-openapi/llms.txt List all DAFs in Chariot's system. Use `supportedOnly=true` to filter for directly integrated DAFs or `query` to search by name. ```bash # List only directly integrated DAFs curl -X GET "https://api.givechariot.com/v1/dafs?supportedOnly=true&pageLimit=20" \ -H "Authorization: Bearer $CHARIOT_API_KEY" ``` ```bash # Search by name curl -X GET "https://api.givechariot.com/v1/dafs?query=Fidelity&pageLimit=10" \ -H "Authorization: Bearer $CHARIOT_API_KEY" ``` -------------------------------- ### Create Grant with application fee Source: https://github.com/chariot-giving/chariot-openapi/blob/main/fern/versions/v2026-01-15/pages/integrating-dafpay/faq.mdx Use the `applicationFeeAmount` parameter in the Create Grant endpoint to pass in a processing fee for the grant. Chariot will handle the deduction or invoicing. ```api POST /apiapi/grants/create ``` -------------------------------- ### Authenticate API Request with cURL Source: https://github.com/chariot-giving/chariot-openapi/blob/main/fern/versions/v2026-01-15/pages/api/authentication-1.mdx Use this command to make an authenticated GET request to the Chariot API using cURL. Ensure your API key is correctly formatted as a Bearer token. ```curl curl https://api.givechariot.com/v1/nonprofit/530196605 \ -H "Authorization: Bearer sk_test_4eC39HqLyjWDarjtT1zdp7dc" ``` -------------------------------- ### Bulk Create Disbursements Source: https://context7.com/chariot-giving/chariot-openapi/llms.txt Create multiple disbursements in a single atomic request. If any disbursement fails validation, the entire batch is rejected. ```bash curl -X POST "https://api.givechariot.com/v1/disbursements/bulk" \ -H "Authorization: Bearer $CHARIOT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "disbursements": [ { "organization_id": "org_01j8rs605a4gctmbm58d87mvsj", "amount": 10000, "transactions": [{ "amount": 10000, "type": "donor_advised_fund_grant" }] }, { "organization_id": "org_02k9st716b5hdtncn69e98nwtk", "amount": 5000, "transactions": [{ "amount": 5000, "type": "donor_advised_fund_grant" }] } ] }' ``` -------------------------------- ### Upload Batch via PUT Request Source: https://github.com/chariot-giving/chariot-openapi/blob/main/fern/versions/v2026-01-15/pages/lockbox-providers/mail-uploads.mdx Upload the prepared ZIP file containing mail items and the index file to the presigned URL obtained from the `/mailbox/upload_url` endpoint using a PUT request. ```APIDOC ## PUT [presigned_url] ### Description Uploads the batch ZIP file to the provided presigned URL. ### Method PUT ### Endpoint [presigned_url] ### Parameters #### Request Body - **batch.zip** (file) - Required - The ZIP file containing TIFF images and the CSV index file. ``` -------------------------------- ### Paginate Through Grants Source: https://context7.com/chariot-giving/chariot-openapi/llms.txt Use this endpoint to retrieve grants with pagination. Specify `pageLimit` and `pageToken` for navigating through results. ```bash curl -X GET "https://api.givechariot.com/v1/grants?connect_id=live_xJd0lUrvpDkzeGBWZbuI2wbvEdM&pageLimit=25&pageToken=c3f685f2-2dda-4956-815b-39867a5e5638" \ -H "Authorization: Bearer $CHARIOT_API_KEY" ``` -------------------------------- ### List Grants Source: https://context7.com/chariot-giving/chariot-openapi/llms.txt Retrieve a paginated list of all grants for a Connect instance. ```APIDOC ## GET /v1/grants ### Description Retrieve a paginated list of all grants for a Connect instance. ### Method GET ### Endpoint /v1/grants #### Query Parameters - **connect_id** (string) - Required - The ID of the Connect instance. - **pageLimit** (integer) - Optional - The maximum number of grants to return per page. Defaults to 25. ### Request Example ```bash curl -X GET "https://api.givechariot.com/v1/grants?connect_id=live_xJd0lUrvpDkzeGBWZbuI2wbvEdM&pageLimit=25" \ -H "Authorization: Bearer $CHARIOT_API_KEY" ``` ``` -------------------------------- ### Bulk Approve Disbursements Source: https://context7.com/chariot-giving/chariot-openapi/llms.txt Approve multiple `pending_approval` disbursements at once. All must be in `pending_approval` state or the entire request fails. ```bash curl -X POST "https://api.givechariot.com/v1/disbursements/approve" \ -H "Authorization: Bearer $CHARIOT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "disbursement_ids": [ "disbursement_01jpjen1s23s29kkmnjsb6fzga", "disbursement_02kqkfo2t34t3alkno7f9gwxlb" ] }' ``` -------------------------------- ### Integrate DAFpay Button with Theme (HTML) Source: https://github.com/chariot-giving/chariot-openapi/blob/main/fern/versions/v2026-01-15/pages/integrating-dafpay/installation.mdx Add the `theme` parameter to the `chariot-connect` component in HTML to apply a pre-defined theme. If no theme is specified, `DefaultTheme` is used. ```html ``` -------------------------------- ### Create a Connect for nonprofit registration Source: https://github.com/chariot-giving/chariot-openapi/blob/main/fern/versions/v2026-01-15/pages/integrating-dafpay/faq.mdx Use this to create a Connect for a nonprofit after searching for it. Ensure the email provided is unique to the nonprofit. ```api POST /api/connects/create ``` -------------------------------- ### Create Event Subscription (Webhook) Source: https://context7.com/chariot-giving/chariot-openapi/llms.txt Subscribe to a specific event category to receive HTTPS POST webhook notifications. A signing secret is strongly recommended for payload verification. ```bash curl -X POST "https://api.givechariot.com/v1/event_subscriptions" \ -H "Authorization: Bearer $CHARIOT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "url": "https://yourapp.com/webhooks/chariot", "category": "grant.updated", "signing_secret": "your-secret-key-for-hmac-verification" }' ``` -------------------------------- ### List Payment Sources Source: https://context7.com/chariot-giving/chariot-openapi/llms.txt List payment sources (ACH bank addresses or lockbox mailing addresses) associated with your financial account. ```bash curl -X GET "https://api.givechariot.com/v1/payment_sources?limit=20" \ -H "Authorization: Bearer $CHARIOT_API_KEY" ``` -------------------------------- ### Pre-populate Donation Data with JavaScript Source: https://github.com/chariot-giving/chariot-openapi/blob/main/fern/versions/v2026-01-15/pages/integrating-dafpay/integration.mdx Use the `onDonationRequest` callback to return a JavaScript object containing donation details. This ensures that fields are correctly recorded and displayed in the DAFpay modal. ```javascript // get the element from the DOM const chariot = document.getElementById("chariot") // provide a callback that returns the donation data chariot.onDonationRequest(async () => { return { amount: 25000, //this is $250.00 USD firstName: "Michael", lastName: "Scott", email: "michaelScott@theoffice.com", address: { line1: "123 Main St", line2: "Suite 4", city: "New York", state: "NY", postalCode: "12345" }, designation: "My Special Designation", metadata: { fundraiserTag: "marathon" }, } }) ``` -------------------------------- ### Search Organization by EIN (JavaScript) Source: https://github.com/chariot-giving/chariot-openapi/blob/main/fern/versions/v2026-01-15/pages/integrating-dafpay/set-up.mdx Implement this JavaScript code to search for an organization using its EIN. Ensure you replace with your actual API key. ```javascript const options = { method: 'GET', headers: { accept: 'application/json', authorization: 'Bearer ' } }; fetch('https://sandboxapi.givechariot.com/v1/organizations/search?ein=123456789', options) .then(response => response.json()) .then(response => console.log(response)) .catch(err => console.error(err)); ```