> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://docs.caresquareapi.com/api-reference/contacts/participants/create-participant/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.caresquareapi.com/_mcp/server. # Create participant POST https://api.caresquareapi.com/api/public/v1/participants Content-Type: application/json Create a new participant. Plan manager scope from X-Plan-Manager-Id header. Reference: https://docs.caresquareapi.com/api-reference/contacts/participants/create-participant ## Authentication - `Authorization` header (bearer token, required) — API key issued for your account. Send as Bearer token in the Authorization header. - `X-Plan-Manager-Id` header (required) — Plan manager UUID. Required on all public API requests to scope data access. ## Request ### Body (application/json) This endpoint expects a ParticipantCreate. - `first_name` (string, optional) - `middle_name` (string, optional) - `last_name` (string, optional) - `participant_number` (string, optional) — NDIS participant number (numeric) - `email` (string, optional) — Contact email (maps to contact_email) - `state` (enum, optional) - Allowed values: `nsw`, `qld`, `vic`, `sa`, `wa`, `tas`, `act`, `nt` - `status` (enum, optional) — Participant status - Allowed values: `Active`, `Inactive`, `Lead` - `service_region_id` (enum, optional) - Allowed values: `remote`, `very_remote` - `postcode` (string, optional) — 4-digit postcode (e.g. '2000') - `approval_required` (boolean, optional) - `date_of_birth` (date, optional) - `phone_number` (string, optional) - `gender` (string, optional) - `title` (string, optional) - `preferred_name` (string, optional) - `approval_timeout` (integer, optional) — Approval timeout (smallint) - `address_line_1` (string, optional) - `address_line_2` (string, optional) - `city` (string, optional) - `bsb` (string, optional) — BSB in XXX-XXX format - `bank_account_number` (string, optional) — 6-10 digit account number - `bank_account_name` (string, optional) - `date_ceased` (date, optional) - `reason_for_leaving` (string, optional) - `exit_reason_category_id` (string, optional) — Exit reason category ID - `exit_reason_subcategory_id` (string, optional) — Exit reason subcategory ID (must belong to exit_reason_category_id) - `aboriginal_torres_strait` (boolean, optional) — Aboriginal/Torres Strait Islander (maps to DB column aboroginal_torres_strait) - `pronouns` (enum, optional) - Allowed values: `they_them`, `he_him`, `she_her`, `she/they` - `participant_approved` (boolean, optional) - `cald` (boolean, optional) — Culturally and linguistically diverse - `interpreter_required` (boolean, optional) - `onboard_date` (date, optional) - `postal_statement` (boolean, optional) - `participant_receives_statements` (boolean, optional) — Whether the participant is emailed statements ## Response ### 201 Participant created - `id` (string, optional) — Unique identifier for the participant - `first_name` (string, optional) - `middle_name` (string, optional) - `last_name` (string, optional) - `participant_number` (string, optional) — NDIS participant number - `email` (string, optional) — Contact email - `state` (string, optional) - `status` (string, optional) - `service_region_id` (string, optional) - `postcode` (string, optional) - `approval_required` (boolean, optional) - `date_of_birth` (date, optional) - `phone_number` (string, optional) - `gender` (string, optional) - `title` (string, optional) - `preferred_name` (string, optional) - `approval_timeout` (integer, optional) - `address_line_1` (string, optional) - `address_line_2` (string, optional) - `city` (string, optional) - `bsb` (string, optional) - `bank_account_number` (string, optional) - `bank_account_name` (string, optional) - `date_ceased` (date, optional) - `reason_for_leaving` (string, optional) - `aboriginal_torres_strait` (boolean, optional) - `pronouns` (string, optional) - `participant_approved` (boolean, optional) - `cald` (boolean, optional) - `interpreter_required` (boolean, optional) - `onboard_date` (date, optional) - `postal_statement` (boolean, optional) - `participant_receives_statements` (boolean, optional) — Whether the participant is emailed statements - `exit_reason_category` (ExitReasonRef, optional) — Reference to an exit reason category/subcategory (present only when set). - `exit_reason_subcategory` (ExitReasonRef, optional) — Reference to an exit reason category/subcategory (present only when set). - `status_changes` (map from string to any, optional) — History of status changes (read-only) ## Errors ### 400 Bad Request Error Invalid request parameters - `success` (boolean, optional) - `error` (string, optional) — Error type or code - `detail` (string, optional) — Human-readable error message ### 403 Forbidden Error Access denied for plan manager - `success` (boolean, optional) - `error` (string, optional) — Error type or code - `detail` (string, optional) — Human-readable error message ### 500 Internal Server Error Internal server error - `success` (boolean, optional) - `error` (string, optional) — Error type or code - `detail` (string, optional) — Human-readable error message ## Types ### ExitReasonRef Reference to an exit reason category/subcategory (present only when set). - `id` (string, optional) - `name` (string, optional) — Friendly name ## Examples **Request** ```json {} ``` **Response** ```json { "id": "string", "first_name": "string", "middle_name": "string", "last_name": "string", "participant_number": "string", "email": "string", "state": "string", "status": "string", "service_region_id": "string", "postcode": "string", "approval_required": true, "date_of_birth": "2023-01-15", "phone_number": "string", "gender": "string", "title": "string", "preferred_name": "string", "approval_timeout": 1, "address_line_1": "string", "address_line_2": "string", "city": "string", "bsb": "string", "bank_account_number": "string", "bank_account_name": "string", "date_ceased": "2023-01-15", "reason_for_leaving": "string", "aboriginal_torres_strait": true, "pronouns": "string", "participant_approved": true, "cald": true, "interpreter_required": true, "onboard_date": "2023-01-15", "postal_statement": true, "participant_receives_statements": true, "exit_reason_category": { "id": "string", "name": "string" }, "exit_reason_subcategory": { "id": "string", "name": "string" }, "status_changes": {} } ``` **SDK Code** ```python import requests url = "https://api.caresquareapi.com/api/public/v1/participants" payload = {} headers = { "Authorization": "Bearer ", "Content-Type": "application/json" } response = requests.post(url, json=payload, headers=headers) print(response.json()) ``` ```javascript const url = 'https://api.caresquareapi.com/api/public/v1/participants'; const options = { method: 'POST', headers: {Authorization: 'Bearer ', 'Content-Type': 'application/json'}, body: '{}' }; 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://api.caresquareapi.com/api/public/v1/participants" payload := strings.NewReader("{}") req, _ := http.NewRequest("POST", url, payload) req.Header.Add("Authorization", "Bearer ") 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://api.caresquareapi.com/api/public/v1/participants") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Post.new(url) request["Authorization"] = 'Bearer ' request["Content-Type"] = 'application/json' request.body = "{}" response = http.request(request) puts response.read_body ``` ```java import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.post("https://api.caresquareapi.com/api/public/v1/participants") .header("Authorization", "Bearer ") .header("Content-Type", "application/json") .body("{}") .asString(); ``` ```php request('POST', 'https://api.caresquareapi.com/api/public/v1/participants', [ 'body' => '{}', 'headers' => [ 'Authorization' => 'Bearer ', 'Content-Type' => 'application/json', ], ]); echo $response->getBody(); ``` ```csharp using RestSharp; var client = new RestClient("https://api.caresquareapi.com/api/public/v1/participants"); var request = new RestRequest(Method.POST); request.AddHeader("Authorization", "Bearer "); request.AddHeader("Content-Type", "application/json"); request.AddParameter("application/json", "{}", ParameterType.RequestBody); IRestResponse response = client.Execute(request); ``` ```swift import Foundation let headers = [ "Authorization": "Bearer ", "Content-Type": "application/json" ] let parameters = [] as [String : Any] let postData = JSONSerialization.data(withJSONObject: parameters, options: []) let request = NSMutableURLRequest(url: NSURL(string: "https://api.caresquareapi.com/api/public/v1/participants")! 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() ```