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

# Create a fundraising campaign

POST https://ssuccessv2.com/app/api/v1/fundraising/campaign/create
Content-Type: application/json

Creates an active USD fundraising campaign for the authenticated user's active school, assigns the resolved merchant account and creator, and optionally creates donation types. The response is the complete campaign resource, including its generated id and hash.

Reference: https://docs.schoolset.io/api-reference/school-set-api/fundraising/create-fundraising-campaign

## Authentication

- `Authorization` header (bearer token, required) — The signed-in SchoolSet user token sent by the frontend.

## Request

### Body (application/json)

This endpoint expects an object.

- `fundraising_fund_id` (integer, required)
- `campaign_name` (string, required)
- `legal_name` (string, required)
- `tax_id` (string, required)
- `description` (string, optional, nullable)
- `start_date` (datetime, optional, nullable)
- `end_date` (datetime, optional, nullable)
- `total_amount` (double, optional)
- `success_payment_message` (string, optional, nullable)
- `show_amount` (boolean, optional, nullable)
- `email` (string, optional, nullable)
- `phone` (string, optional, nullable)
- `fundraising_donation_type_sort` (list of integer, optional, nullable)
- `fundraising_donation_types` (list of map from string to any, optional, nullable)
- `file_manager_id` (integer, optional, nullable)

## Response

### 200

Campaign created.

- `status` (string, required)
- `message` (string, required)
- `data` (ApiV1FundraisingCampaignCreatePostResponsesContentApplicationJsonSchemaData, required)

## Errors

### 401 Unauthorized Error

- `any`

### 403 Forbidden Error

- `any`

### 422 Unprocessable Entity Error

- `any`

## Types

### ApiV1FundraisingCampaignCreatePostResponsesContentApplicationJsonSchemaData

- `id` (integer, required)
- `fund` (ApiV1FundraisingCampaignCreatePostResponsesContentApplicationJsonSchemaDataFund, required)
- `campaign_name` (string, required)
- `status` (ApiV1FundraisingCampaignCreatePostResponsesContentApplicationJsonSchemaDataStatus, required)
- `hash` (string, required)
- `donation_types` (list of map from string to any, required)
- `batch_id` (integer, optional, nullable)
- `description` (string, optional, nullable)
- `legal_name` (string, optional)
- `tax_id` (string, optional)
- `school_id` (integer, optional)
- `merchant_account_id` (integer, optional)
- `start_date` (datetime, optional, nullable)
- `end_date` (datetime, optional, nullable)
- `total_amount` (double, optional)
- `balance_amount` (double, optional)
- `success_payment_message` (string, optional, nullable)
- `file_manager_id` (integer, optional, nullable)
- `image` (string, optional, nullable)
- `show_amount` (boolean, optional)
- `email` (string, optional, nullable)
- `phone` (string, optional, nullable)
- `currency` (string, optional)
- `fundraising_donation_type_sort` (list of integer, optional)
- `open_pledges` (double, optional)

### ApiV1FundraisingCampaignCreatePostResponsesContentApplicationJsonSchemaDataFund

- `id` (integer, optional)
- `name` (string, optional)

### ApiV1FundraisingCampaignCreatePostResponsesContentApplicationJsonSchemaDataStatus

- `id` (integer, optional)
- `title` (string, optional)

## Examples

**Request**

```json
{
  "fundraising_fund_id": 7,
  "campaign_name": "Spring Giving Drive",
  "legal_name": "SchoolSet Academy Foundation",
  "tax_id": "12-3456789"
}
```

**Response**

```json
{
  "status": "success",
  "message": "",
  "data": {
    "id": 42,
    "fund": {
      "id": 7,
      "name": "Annual Fund"
    },
    "campaign_name": "Spring Giving Drive",
    "status": {
      "id": 1,
      "title": "Active"
    },
    "hash": "q7m2x9k4p1",
    "donation_types": [
      {}
    ],
    "batch_id": 2026,
    "description": "Help students attend enrichment programs.",
    "legal_name": "SchoolSet Academy Foundation",
    "tax_id": "12-3456789",
    "school_id": 12,
    "merchant_account_id": 3,
    "start_date": "2024-01-15T09:30:00Z",
    "end_date": "2024-01-15T09:30:00Z",
    "total_amount": 25000,
    "balance_amount": 7250,
    "success_payment_message": "string",
    "file_manager_id": 1,
    "image": "string",
    "show_amount": true,
    "email": "string",
    "phone": "string",
    "currency": "USD",
    "fundraising_donation_type_sort": [
      1
    ],
    "open_pledges": 1200
  }
}
```

**SDK Code**

```python
import requests

url = "https://ssuccessv2.com/app/api/v1/fundraising/campaign/create"

payload = {
    "fundraising_fund_id": 7,
    "campaign_name": "Spring Giving Drive",
    "legal_name": "SchoolSet Academy Foundation",
    "tax_id": "12-3456789"
}
headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript
const url = 'https://ssuccessv2.com/app/api/v1/fundraising/campaign/create';
const options = {
  method: 'POST',
  headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
  body: '{"fundraising_fund_id":7,"campaign_name":"Spring Giving Drive","legal_name":"SchoolSet Academy Foundation","tax_id":"12-3456789"}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://ssuccessv2.com/app/api/v1/fundraising/campaign/create"

	payload := strings.NewReader("{\n  \"fundraising_fund_id\": 7,\n  \"campaign_name\": \"Spring Giving Drive\",\n  \"legal_name\": \"SchoolSet Academy Foundation\",\n  \"tax_id\": \"12-3456789\"\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Authorization", "Bearer <token>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://ssuccessv2.com/app/api/v1/fundraising/campaign/create")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"fundraising_fund_id\": 7,\n  \"campaign_name\": \"Spring Giving Drive\",\n  \"legal_name\": \"SchoolSet Academy Foundation\",\n  \"tax_id\": \"12-3456789\"\n}"

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://ssuccessv2.com/app/api/v1/fundraising/campaign/create")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"fundraising_fund_id\": 7,\n  \"campaign_name\": \"Spring Giving Drive\",\n  \"legal_name\": \"SchoolSet Academy Foundation\",\n  \"tax_id\": \"12-3456789\"\n}")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://ssuccessv2.com/app/api/v1/fundraising/campaign/create', [
  'body' => '{
  "fundraising_fund_id": 7,
  "campaign_name": "Spring Giving Drive",
  "legal_name": "SchoolSet Academy Foundation",
  "tax_id": "12-3456789"
}',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://ssuccessv2.com/app/api/v1/fundraising/campaign/create");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"fundraising_fund_id\": 7,\n  \"campaign_name\": \"Spring Giving Drive\",\n  \"legal_name\": \"SchoolSet Academy Foundation\",\n  \"tax_id\": \"12-3456789\"\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = [
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = [
  "fundraising_fund_id": 7,
  "campaign_name": "Spring Giving Drive",
  "legal_name": "SchoolSet Academy Foundation",
  "tax_id": "12-3456789"
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://ssuccessv2.com/app/api/v1/fundraising/campaign/create")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```