Person
The Person object
The Person object looks like this in JSON:
{
"object": "person",
"id": 1,
"first_name": "Elizabeth",
"last_name": "Fox",
"middle_name": null,
"prefix": "Miss",
"suffix": null,
"preferred_name": null,
"display_name": "Elizabeth Fox",
"salutation": "Miss Elizabeth Fox",
"addressee": "Miss Elizabeth Fox",
"gender": "female",
"other_gender": null,
"image_file_id": null,
"birth_date": null,
"status": "active",
"social_security_number": null,
"alien_registration_number": null,
"social_insurance_number": null,
"home_city": null,
"home_state": null,
"home_country": null,
"former_name": null,
"license_plate": null,
"bio": null,
"hispanic_latino": false,
"resident_alien": false,
"localization_id": null,
"notification_email_id": null,
"deceased_date": null,
"import_id": null,
"staff_id": null,
"faculty_id": null,
"degree_level_id": null,
"added_at": null,
"added_by_id": null,
"updated_at": null,
"private_profile": false,
"is_user": true,
"sandbox": true
}
| Attribute | Required | Data Type |
|---|---|---|
| id | Yes | int |
| first_name | Yes | text (50) |
| last_name | Yes | text (50) |
| middle_name | Yes | text (50) |
| prefix | Yes | text (20) |
| suffix | Yes | text (20) |
| preferred_name | Yes | text (255) |
| display_name | Yes | text (255) |
| salutation | Yes | text (255) |
| addressee | Yes | text (255) |
| gender | Yes | enum (male, female, unknown, other) |
| other_gender | No | text (50) |
| image_file_id | No | int |
| birth_date | Yes | date |
| status | Yes | enum (active, deleted, deceased) |
| social_security_number | Yes | text (15) |
| alien_registration_number | Yes | text (30) |
| social_insurance_number | Yes | text (30) |
| home_city | Yes | text (50) |
| home_state | Yes | text (50) |
| home_country | Yes | text (50) |
| former_name | Yes | text (50) |
| license_plate | No | text (50) |
| bio | No | text (1000) |
| hispanic_latino | No | bool |
| resident_alien | No | bool |
| localization_id | No | int |
| notification_email_id | No | int |
| deceased_date | No | date |
| import_id | No | int |
| staff_id | No | text (255) |
| faculty_id | No | text (255) |
| degree_level_id | No | int |
| added_at | No | datetime |
| added_by_id | No | int |
| updated_at | No | datetime |
| private_profile | No | bool |
| is_user | No | bool |
| sandbox | No | bool |
index
Example code to call this method:
curl "https://yourschool.populiweb.com/api2/people" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_POPULI_API_KEY" \
-X GET
-d '{
"filter": {"0":{"logic":"ALL","fields":[{"name":"last_name","value":{"type":"CONTAINS","text":"blah"},"positive":1}]}}
}' \
require 'httparty'
response = HTTParty.get(
'https://yourschool.populiweb.com/api2/people',
headers: {
'Authorization' => 'Bearer YOUR_POPULI_API_KEY'
},
)
puts response.body
import requests
response = requests.get(
'https://yourschool.populiweb.com/api2/people',
headers={
'Authorization': 'Bearer YOUR_POPULI_API_KEY'
},
)
print(response.json())
using Newtonsoft.Json;
using RestSharp;
var client = new RestClient();
var request = new RestRequest(new Uri("https://yourschool.populiweb.com/api2/people"), Method.Get);
request.AddHeader("Authorization", "Bearer YOUR_POPULI_API_KEY");
var response = client.Execute(request);
var response_object = JsonConvert.DeserializeObject(response.Content);
Console.Write(response_object);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://yourschool.populiweb.com/api2/people');
curl_setopt($curl, CURLOPT_HTTPHEADER, ['Authorization: Bearer YOUR_POPULI_API_KEY']);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET');
$response = curl_exec($curl);
$response_decoded = json_decode($response);
var_dump($response_decoded);
Example response:
{
"object": "list",
"count": 42,
"results": 42,
"results_per_page": 200,
"pages": 1,
"page": 1,
"offset": 0,
"has_more": false,
"data": [
{
"object": "person",
"id": 1022,
"first_name": "Test",
"last_name": "Admissions Auditor",
"middle_name": null,
"prefix": null,
"suffix": null,
"preferred_name": null,
"display_name": "Test Admissions Auditor",
"salutation": "Test Admissions Auditor",
"addressee": "Test Admissions Auditor",
"gender": "male",
"other_gender": null,
"image_file_id": null,
"birth_date": null,
"status": "active",
"social_security_number": null,
"alien_registration_number": null,
"social_insurance_number": null,
"home_city": null,
"home_state": null,
"home_country": null,
"former_name": null,
"license_plate": null,
"bio": null,
"hispanic_latino": false,
"resident_alien": false,
"localization_id": null,
"notification_email_id": null,
"deceased_date": null,
"import_id": null,
"staff_id": null,
"faculty_id": null,
"degree_level_id": null,
"added_at": null,
"added_by_id": null,
"updated_at": null,
"report_data": {
"person_id": 1022,
"active_roles": "28",
"username": "test.admissions_auditor",
"primary_address_street": null,
"primary_address_city": null,
"primary_address_state": null,
"primary_address_country": null,
"is_alum": 0,
"primary_org_title": null,
"primary_org_name": null,
"contact_primary_email": null,
"contact_primary_phone": null,
"visible_student_id": null,
"row_id": 1022
},
"private_profile": false,
"is_user": true
}
],
"sandbox": true
}
Retrieves all Person objects that match given filter conditions.
HTTP Request
GET /people
Parameters
| Name | Required | Data Type | Description |
|---|---|---|---|
| filter | No | mixed | See available filter conditions |
| page | No | int | The page of results to return if more than 200 records are found. |
Expandable Properties
- enrollments
- addresses
- phone_numbers
- email_addresses
- websites
- student
- races
- user
- roles
- tags
- locks
- relationships
- communicationplans
- aid_authorizations
- profile_picture_file
- notes
- student_programs
- student_degrees
- student_specializations
- degree_level
- leaves_of_absence
- contact_organization_members
Filter Condition Parameters
These conditions can be used to narrow the results returned.
| Name | Type |
|---|---|
| address | address |
| addressee | text |
| age | integer |
| alien_registration_number | text |
| alumni | bool |
| birthdate | date |
| birthday | month_day |
| citizenship | country |
| currently_enrolled | bool |
| custom_field | custom |
| have_lawful_basis | bool |
| deceased | bool |
| deceased_date | date |
| deleted | bool |
| faculty_id | text |
| first_name | text |
| former_name | text |
| gender | enum (male, female, unknown, other) |
| has_profile_picture | bool |
| has_verified_email | bool |
| has_verified_text_messaging_number | bool |
| home_city | text |
| home_country | country |
| home_state | state |
| import | object id |
| info_changed | datetime |
| last_active | date |
| last_name | text |
| license_plate | text |
| localization | localization |
| lock_type | locktype |
| login_approvals_enabled | bool |
| middle_name | text |
| organization | personcontactorganization |
| phone | phone |
| populi_name | text |
| preferred_name | text |
| prefix | text |
| private_profile | bool |
| race_ethnicity | raceethnicity |
| race_ethnicity_ipeds | object id |
| relationship_count | integer |
| resident_alien | bool |
| role | role |
| salutation | text |
| sin | text |
| ssn | text |
| staff_id | text |
| student_housing | student_housing |
| student_id | text |
| suffix | text |
| tag | tag |
| user_account | choice |
| user_added_at | datetime |
| username | text |
| website | website |
Permissions
One of the following roles is required to call this method:
- Academic Auditor
- Financial Auditor
- Admissions Auditor
- Staff
index (campus life)
Example code to call this method:
curl "https://yourschool.populiweb.com/api2/campuslife/students" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_POPULI_API_KEY" \
-X GET
-d '{
"academic_term_id": 8,
"filter": []
}' \
require 'httparty'
response = HTTParty.get(
'https://yourschool.populiweb.com/api2/campuslife/students',
headers: {
'Authorization' => 'Bearer YOUR_POPULI_API_KEY'
},
body: {
:academic_term_id => 8
}.to_json
)
puts response.body
import requests
response = requests.get(
'https://yourschool.populiweb.com/api2/campuslife/students',
headers={
'Authorization': 'Bearer YOUR_POPULI_API_KEY'
},
json={
'academic_term_id': 8
}
)
print(response.json())
using Newtonsoft.Json;
using RestSharp;
var client = new RestClient();
var request = new RestRequest(new Uri("https://yourschool.populiweb.com/api2/campuslife/students"), Method.Get);
request.AddHeader("Authorization", "Bearer YOUR_POPULI_API_KEY");
request.AddJsonBody(new {
academic_term_id = 8
});
var response = client.Execute(request);
var response_object = JsonConvert.DeserializeObject(response.Content);
Console.Write(response_object);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://yourschool.populiweb.com/api2/campuslife/students');
curl_setopt($curl, CURLOPT_HTTPHEADER, ['Authorization: Bearer YOUR_POPULI_API_KEY']);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode([
'academic_term_id' => 8
]));
$response = curl_exec($curl);
$response_decoded = json_decode($response);
var_dump($response_decoded);
Example response:
{
"object": "list",
"count": 2,
"results": 2,
"results_per_page": 200,
"pages": 1,
"page": 1,
"offset": 0,
"has_more": false,
"data": [
{
"object": "person",
"id": 16,
"first_name": "Abby",
"last_name": "Admin",
"middle_name": null,
"prefix": null,
"suffix": null,
"preferred_name": null,
"display_name": "Abby Admin",
"salutation": "Abby Admin",
"addressee": "Abby Admin",
"gender": "female",
"other_gender": null,
"image_file_id": null,
"birth_date": null,
"status": "active",
"social_security_number": null,
"alien_registration_number": null,
"social_insurance_number": null,
"home_city": null,
"home_state": null,
"home_country": null,
"former_name": null,
"license_plate": null,
"bio": null,
"hispanic_latino": false,
"resident_alien": false,
"localization_id": null,
"notification_email_id": null,
"deceased_date": null,
"import_id": null,
"staff_id": null,
"faculty_id": null,
"degree_level_id": null,
"added_at": null,
"added_by_id": null,
"updated_at": "2026-07-25T16:24:11+00:00",
"report_data": {
"person_id": 16,
"program_names": null,
"standing_names": null,
"room_plan_name": "Palace",
"room_name": null,
"room_id": null,
"meal_plan_name": "Gold",
"num_violations": 1,
"num_consequences": 1,
"campus_names": "Main Campus",
"visible_student_id": "20220xx001",
"row_id": 16
},
"private_profile": false,
"is_user": true
}
],
"sandbox": true
}
Retrieves all Person objects that match given filter conditions.
HTTP Request
GET /campuslife/students
Parameters
| Name | Required | Data Type | Description |
|---|---|---|---|
| academic_term_id | Yes | int | |
| filter | No | mixed | See available filter conditions |
| page | No | int | The page of results to return if more than 200 records are found. |
Expandable Properties
- enrollments
- addresses
- phone_numbers
- email_addresses
- websites
- student
- races
- user
- roles
- tags
- locks
- relationships
- communicationplans
- aid_authorizations
- profile_picture_file
- notes
- student_programs
- student_degrees
- student_specializations
- degree_level
- leaves_of_absence
- contact_organization_members
Filter Condition Parameters
These conditions can be used to narrow the results returned.
| Name | Type |
|---|---|
| first_name | text |
| last_name | text |
| gender | enum (male, female, unknown, other) |
| campus | object id |
| room_plan | object id |
| room | text |
| meal_plan | object id |
| program | text |
| violations | integer |
| consequences | integer |
| has_room_plan | bool |
| has_meal_plan | bool |
| tag | tag |
| custom_field | custom |
| student_housing | student_housing |
Permissions
One of the following roles is required to call this method:
- Academic Admin
- Registrar
- Financial Admin
- Campus Life
create
Example code to call this method:
curl "https://yourschool.populiweb.com/api2/people" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_POPULI_API_KEY" \
-X POST
-d '{
"first_name": "Tsedey",
"last_name": "Smith"
}' \
require 'httparty'
response = HTTParty.post(
'https://yourschool.populiweb.com/api2/people',
headers: {
'Authorization' => 'Bearer YOUR_POPULI_API_KEY'
},
body: {
:first_name => 'Tsedey',
:last_name => 'Smith'
}.to_json
)
puts response.body
import requests
response = requests.post(
'https://yourschool.populiweb.com/api2/people',
headers={
'Authorization': 'Bearer YOUR_POPULI_API_KEY'
},
json={
'first_name': 'Tsedey',
'last_name': 'Smith'
}
)
print(response.json())
using Newtonsoft.Json;
using RestSharp;
var client = new RestClient();
var request = new RestRequest(new Uri("https://yourschool.populiweb.com/api2/people"), Method.Post);
request.AddHeader("Authorization", "Bearer YOUR_POPULI_API_KEY");
request.AddJsonBody(new {
first_name = "Tsedey",
last_name = "Smith"
});
var response = client.Execute(request);
var response_object = JsonConvert.DeserializeObject(response.Content);
Console.Write(response_object);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://yourschool.populiweb.com/api2/people');
curl_setopt($curl, CURLOPT_HTTPHEADER, ['Authorization: Bearer YOUR_POPULI_API_KEY']);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode([
'first_name' => 'Tsedey',
'last_name' => 'Smith'
]));
$response = curl_exec($curl);
$response_decoded = json_decode($response);
var_dump($response_decoded);
Example response:
{
"object": "person",
"id": 1024,
"first_name": "Tsedey",
"last_name": "Smith",
"middle_name": null,
"prefix": null,
"suffix": null,
"preferred_name": null,
"display_name": "Tsedey Smith",
"salutation": "Tsedey Smith",
"addressee": "Tsedey Smith",
"gender": null,
"other_gender": null,
"image_file_id": null,
"birth_date": null,
"status": "active",
"social_security_number": null,
"alien_registration_number": null,
"social_insurance_number": null,
"home_city": null,
"home_state": null,
"home_country": null,
"former_name": null,
"license_plate": null,
"bio": null,
"hispanic_latino": false,
"resident_alien": false,
"localization_id": null,
"notification_email_id": null,
"deceased_date": null,
"import_id": null,
"staff_id": null,
"faculty_id": null,
"degree_level_id": null,
"added_at": "2026-07-25T16:24:10+00:00",
"added_by_id": 22,
"updated_at": "2026-07-25T16:24:10+00:00",
"private_profile": false,
"is_user": false,
"sandbox": true
}
Creates a new Person object.
HTTP Request
POST /people
Parameters
| Name | Required | Data Type | Description |
|---|---|---|---|
| first_name | Yes | text (50) | |
| last_name | Yes | text (50) | |
| middle_name | No | text (50) | |
| prefix | No | text (20) | |
| suffix | No | text (20) | |
| preferred_name | No | text (255) | |
| display_name | No | text (255) | |
| gender | No | enum (male, female, unknown, other) | |
| birth_date | No | date | |
| social_security_number | No | text (15) | |
| alien_registration_number | No | text (30) | |
| social_insurance_number | No | text (30) | |
| home_city | No | text (50) | |
| home_state | No | text (50) | |
| home_country | No | text (50) | |
| former_name | No | text (50) | |
| salutation | No | text (255) | |
| addressee | No | text (255) | |
| license_plate | No | text (50) | |
| bio | No | text (1000) | |
| resident_alien | No | bool | |
| localization_id | No | int | |
| is_private | No | bool | |
| deceased_date | No | date | |
| import_id | No | int | |
| staff_id | No | text (255) | |
| faculty_id | No | text (255) |
Action Parameters
| Name | Data Type | Description |
|---|---|---|
| duplicate_prevention_level | enum (none, low, high) | "low" prevents people with the SSN or SIN of an existing person to be created. "high" prevents people with identical name and birthdate from being created as well. Default is none. |
| response_on_duplicate | enum (existing, error) | If using a duplication_prevention_level, if a duplicate is found, return the found existing Person object, or return an error. Default is existing. |
Permissions
One of the following roles is required to call this method:
- Staff
by_student_id
Example code to call this method:
curl "https://yourschool.populiweb.com/api2/people/by_student_id" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_POPULI_API_KEY" \
-X GET
-d '{
"student_id": "20220xx001"
}' \
require 'httparty'
response = HTTParty.get(
'https://yourschool.populiweb.com/api2/people/by_student_id',
headers: {
'Authorization' => 'Bearer YOUR_POPULI_API_KEY'
},
body: {
:student_id => '20220xx001'
}.to_json
)
puts response.body
import requests
response = requests.get(
'https://yourschool.populiweb.com/api2/people/by_student_id',
headers={
'Authorization': 'Bearer YOUR_POPULI_API_KEY'
},
json={
'student_id': '20220xx001'
}
)
print(response.json())
using Newtonsoft.Json;
using RestSharp;
var client = new RestClient();
var request = new RestRequest(new Uri("https://yourschool.populiweb.com/api2/people/by_student_id"), Method.Get);
request.AddHeader("Authorization", "Bearer YOUR_POPULI_API_KEY");
request.AddJsonBody(new {
student_id = "20220xx001"
});
var response = client.Execute(request);
var response_object = JsonConvert.DeserializeObject(response.Content);
Console.Write(response_object);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://yourschool.populiweb.com/api2/people/by_student_id');
curl_setopt($curl, CURLOPT_HTTPHEADER, ['Authorization: Bearer YOUR_POPULI_API_KEY']);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode([
'student_id' => '20220xx001'
]));
$response = curl_exec($curl);
$response_decoded = json_decode($response);
var_dump($response_decoded);
Example response:
{
"object": "person",
"id": 16,
"first_name": "Abby",
"last_name": "Admin",
"middle_name": null,
"prefix": null,
"suffix": null,
"preferred_name": null,
"display_name": "Abby Admin",
"salutation": "Abby Admin",
"addressee": "Abby Admin",
"gender": "female",
"other_gender": null,
"image_file_id": null,
"birth_date": null,
"status": "active",
"social_security_number": null,
"alien_registration_number": null,
"social_insurance_number": null,
"home_city": null,
"home_state": null,
"home_country": null,
"former_name": null,
"license_plate": null,
"bio": null,
"hispanic_latino": false,
"resident_alien": false,
"localization_id": null,
"notification_email_id": null,
"deceased_date": null,
"import_id": null,
"staff_id": null,
"faculty_id": null,
"degree_level_id": null,
"added_at": null,
"added_by_id": null,
"updated_at": "2026-07-25T16:24:07+00:00",
"private_profile": false,
"is_user": true,
"sandbox": true
}
Get a single person by their visible student ID rather than their Populi ID.
HTTP Request
GET /people/by_student_id
Parameters
| Name | Required | Data Type | Description |
|---|---|---|---|
| student_id | Yes | text | visible student id |
Expandable Properties
- enrollments
- addresses
- phone_numbers
- email_addresses
- websites
- student
- races
- user
- roles
- tags
- locks
- relationships
- communicationplans
- aid_authorizations
- profile_picture_file
- notes
- student_programs
- student_degrees
- student_specializations
- degree_level
- leaves_of_absence
- contact_organization_members
Permissions
One of the following roles is required to call this method:
- Staff
show
Example code to call this method:
curl "https://yourschool.populiweb.com/api2/people/(person)" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_POPULI_API_KEY" \
-X GET
-d '{
"expand": [
"tags",
"addresses"
]
}' \
require 'httparty'
response = HTTParty.get(
'https://yourschool.populiweb.com/api2/people/(person)',
headers: {
'Authorization' => 'Bearer YOUR_POPULI_API_KEY'
},
body: {
:expand => ['tags', 'addresses']
}.to_json
)
puts response.body
import requests
response = requests.get(
'https://yourschool.populiweb.com/api2/people/(person)',
headers={
'Authorization': 'Bearer YOUR_POPULI_API_KEY'
},
json={
'expand': ['tags', 'addresses']
}
)
print(response.json())
using Newtonsoft.Json;
using RestSharp;
var client = new RestClient();
var request = new RestRequest(new Uri("https://yourschool.populiweb.com/api2/people/(person)"), Method.Get);
request.AddHeader("Authorization", "Bearer YOUR_POPULI_API_KEY");
request.AddJsonBody(new {
expand = new List<string> {"tags", "addresses"}
});
var response = client.Execute(request);
var response_object = JsonConvert.DeserializeObject(response.Content);
Console.Write(response_object);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://yourschool.populiweb.com/api2/people/(person)');
curl_setopt($curl, CURLOPT_HTTPHEADER, ['Authorization: Bearer YOUR_POPULI_API_KEY']);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode([
'expand' => ['tags', 'addresses']
]));
$response = curl_exec($curl);
$response_decoded = json_decode($response);
var_dump($response_decoded);
Example response:
{
"object": "person",
"id": 12,
"first_name": "Alice",
"last_name": "Admin",
"middle_name": null,
"prefix": "Mrs.",
"suffix": null,
"preferred_name": null,
"display_name": "Alice Admin",
"salutation": "Mrs. Alice Admin",
"addressee": "Mrs. Alice Admin",
"gender": "female",
"other_gender": null,
"image_file_id": null,
"birth_date": null,
"status": "active",
"social_security_number": null,
"alien_registration_number": null,
"social_insurance_number": null,
"home_city": null,
"home_state": null,
"home_country": null,
"former_name": null,
"license_plate": null,
"bio": null,
"hispanic_latino": false,
"resident_alien": false,
"localization_id": null,
"notification_email_id": null,
"deceased_date": null,
"import_id": null,
"staff_id": null,
"faculty_id": null,
"degree_level_id": null,
"addresses": [
{
"object": "address",
"id": 801,
"owner_id": 12,
"owner_type": "person",
"street": "123 Street",
"city": "Seattle",
"state": "WA",
"postal": "89000",
"country": "US",
"type": "other",
"primary": false,
"most_recent_by_type": false,
"old": false,
"public": true,
"synced_from": null,
"import_id": null,
"added_at": null,
"added_by_id": 20
}
],
"tags": [
{
"object": "tag",
"id": 600,
"name": "Special",
"autogenerated": null,
"added_at": null,
"added_by_id": null
}
],
"added_at": null,
"added_by_id": null,
"updated_at": "2026-07-25T16:24:07+00:00",
"private_profile": false,
"is_user": true,
"sandbox": true
}
Retrieves a specific Person object.
HTTP Request
GET /people/(person)
Parameters
No additional parameters are needed beyond the ID of the object being requested that appears in the URL.
Expandable Properties
- enrollments
- addresses
- phone_numbers
- email_addresses
- websites
- student
- races
- user
- roles
- tags
- locks
- relationships
- communicationplans
- aid_authorizations
- profile_picture_file
- notes
- student_programs
- student_degrees
- student_specializations
- degree_level
- leaves_of_absence
- contact_organization_members
Permissions
One of the following roles is required to call this method:
- Staff
update
Example code to call this method:
curl "https://yourschool.populiweb.com/api2/people/(person)" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_POPULI_API_KEY" \
-X PUT
-d '{
"first_name": "Taylor",
"last_name": "Forest"
}' \
require 'httparty'
response = HTTParty.put(
'https://yourschool.populiweb.com/api2/people/(person)',
headers: {
'Authorization' => 'Bearer YOUR_POPULI_API_KEY'
},
)
puts response.body
import requests
response = requests.put(
'https://yourschool.populiweb.com/api2/people/(person)',
headers={
'Authorization': 'Bearer YOUR_POPULI_API_KEY'
},
)
print(response.json())
using Newtonsoft.Json;
using RestSharp;
var client = new RestClient();
var request = new RestRequest(new Uri("https://yourschool.populiweb.com/api2/people/(person)"), Method.Put);
request.AddHeader("Authorization", "Bearer YOUR_POPULI_API_KEY");
var response = client.Execute(request);
var response_object = JsonConvert.DeserializeObject(response.Content);
Console.Write(response_object);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://yourschool.populiweb.com/api2/people/(person)');
curl_setopt($curl, CURLOPT_HTTPHEADER, ['Authorization: Bearer YOUR_POPULI_API_KEY']);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'PUT');
$response = curl_exec($curl);
$response_decoded = json_decode($response);
var_dump($response_decoded);
Example response:
{
"object": "person",
"id": 12,
"first_name": "Taylor",
"last_name": "Forest",
"middle_name": null,
"prefix": "Mrs.",
"suffix": null,
"preferred_name": null,
"display_name": "Taylor Forest",
"salutation": "Mrs. Alice Admin",
"addressee": "Mrs. Alice Admin",
"gender": "female",
"other_gender": null,
"image_file_id": null,
"birth_date": null,
"status": "active",
"social_security_number": null,
"alien_registration_number": null,
"social_insurance_number": null,
"home_city": null,
"home_state": null,
"home_country": null,
"former_name": null,
"license_plate": null,
"bio": null,
"hispanic_latino": false,
"resident_alien": false,
"localization_id": null,
"notification_email_id": null,
"deceased_date": null,
"import_id": null,
"staff_id": null,
"faculty_id": null,
"degree_level_id": null,
"added_at": null,
"added_by_id": null,
"updated_at": "2026-07-25T16:24:10+00:00",
"private_profile": false,
"is_user": true,
"sandbox": true
}
Updates an existing Person object.
HTTP Request
PUT /people/(person)
Parameters
| Name | Required | Data Type | Description |
|---|---|---|---|
| first_name | No | text (50) | |
| last_name | No | text (50) | |
| middle_name | No | text (50) | |
| prefix | No | text (20) | |
| suffix | No | text (20) | |
| preferred_name | No | text (255) | |
| display_name | No | text (255) | |
| former_name | No | text (50) | |
| salutation | No | text (255) | |
| addressee | No | text (255) | |
| gender | No | enum (male, female, unknown, other) | |
| birth_date | No | date | |
| social_security_number | No | text (15) | |
| alien_registration_number | No | text (30) | |
| social_insurance_number | No | text (30) | |
| home_city | No | text (50) | |
| home_state | No | text (50) | |
| home_country | No | text (50) | |
| license_plate | No | text (50) | |
| bio | No | text (1000) | |
| resident_alien | No | bool | |
| localization_id | No | int | |
| is_private | No | bool | |
| staff_id | No | text (255) | |
| faculty_id | No | text (255) |
Permissions
One of the following roles is required to call this method:
- Staff
update_profile_picture
Example code to call this method:
curl "https://yourschool.populiweb.com/api2/people/(person)/update_profile_picture" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_POPULI_API_KEY" \
-X POST
-F 'file=@/path/to/file.jpg' \
require 'httparty'
response = HTTParty.post(
'https://yourschool.populiweb.com/api2/people/(person)/update_profile_picture',
headers: {
'Authorization' => 'Bearer YOUR_POPULI_API_KEY'
},
)
puts response.body
import requests
response = requests.post(
'https://yourschool.populiweb.com/api2/people/(person)/update_profile_picture',
headers={
'Authorization': 'Bearer YOUR_POPULI_API_KEY'
},
)
print(response.json())
using Newtonsoft.Json;
using RestSharp;
var client = new RestClient();
var request = new RestRequest(new Uri("https://yourschool.populiweb.com/api2/people/(person)/update_profile_picture"), Method.Post);
request.AddHeader("Authorization", "Bearer YOUR_POPULI_API_KEY");
var response = client.Execute(request);
var response_object = JsonConvert.DeserializeObject(response.Content);
Console.Write(response_object);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://yourschool.populiweb.com/api2/people/(person)/update_profile_picture');
curl_setopt($curl, CURLOPT_HTTPHEADER, ['Authorization: Bearer YOUR_POPULI_API_KEY']);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
$response = curl_exec($curl);
$response_decoded = json_decode($response);
var_dump($response_decoded);
Example response:
"Example response not available."
Updates the profile_picture attribute of an existing Person object.
HTTP Request
POST /people/(person)/update_profile_picture
Parameters
This routes requires a file upload with the request. Use a form post parameter called "file".
delete
Example code to call this method:
curl "https://yourschool.populiweb.com/api2/people/(person)" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_POPULI_API_KEY" \
-X DELETE
require 'httparty'
response = HTTParty.delete(
'https://yourschool.populiweb.com/api2/people/(person)',
headers: {
'Authorization' => 'Bearer YOUR_POPULI_API_KEY'
},
)
puts response.body
import requests
response = requests.delete(
'https://yourschool.populiweb.com/api2/people/(person)',
headers={
'Authorization': 'Bearer YOUR_POPULI_API_KEY'
},
)
print(response.json())
using Newtonsoft.Json;
using RestSharp;
var client = new RestClient();
var request = new RestRequest(new Uri("https://yourschool.populiweb.com/api2/people/(person)"), Method.Delete);
request.AddHeader("Authorization", "Bearer YOUR_POPULI_API_KEY");
var response = client.Execute(request);
var response_object = JsonConvert.DeserializeObject(response.Content);
Console.Write(response_object);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://yourschool.populiweb.com/api2/people/(person)');
curl_setopt($curl, CURLOPT_HTTPHEADER, ['Authorization: Bearer YOUR_POPULI_API_KEY']);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'DELETE');
$response = curl_exec($curl);
$response_decoded = json_decode($response);
var_dump($response_decoded);
Example response:
{
"object": "person",
"id": 21,
"deleted": true
}
Deletes an existing Person object.
HTTP Request
DELETE /people/(person)
Parameters
No additional parameters are needed beyond the ID of the object to delete that appears in the URL.
Permissions
One of the following roles is required to call this method:
- Staff
mark_deceased
Example code to call this method:
curl "https://yourschool.populiweb.com/api2/people/(person)/mark_deceased" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_POPULI_API_KEY" \
-X POST
require 'httparty'
response = HTTParty.post(
'https://yourschool.populiweb.com/api2/people/(person)/mark_deceased',
headers: {
'Authorization' => 'Bearer YOUR_POPULI_API_KEY'
},
)
puts response.body
import requests
response = requests.post(
'https://yourschool.populiweb.com/api2/people/(person)/mark_deceased',
headers={
'Authorization': 'Bearer YOUR_POPULI_API_KEY'
},
)
print(response.json())
using Newtonsoft.Json;
using RestSharp;
var client = new RestClient();
var request = new RestRequest(new Uri("https://yourschool.populiweb.com/api2/people/(person)/mark_deceased"), Method.Post);
request.AddHeader("Authorization", "Bearer YOUR_POPULI_API_KEY");
var response = client.Execute(request);
var response_object = JsonConvert.DeserializeObject(response.Content);
Console.Write(response_object);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://yourschool.populiweb.com/api2/people/(person)/mark_deceased');
curl_setopt($curl, CURLOPT_HTTPHEADER, ['Authorization: Bearer YOUR_POPULI_API_KEY']);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
$response = curl_exec($curl);
$response_decoded = json_decode($response);
var_dump($response_decoded);
Example response:
{
"object": "person",
"id": 14,
"first_name": "Josephine",
"last_name": "Student",
"middle_name": null,
"prefix": null,
"suffix": null,
"preferred_name": null,
"display_name": "Josephine Student",
"salutation": "Josephine Student",
"addressee": "Josephine Student",
"gender": "female",
"other_gender": null,
"image_file_id": null,
"birth_date": null,
"status": "deceased",
"social_security_number": null,
"alien_registration_number": null,
"social_insurance_number": null,
"home_city": null,
"home_state": null,
"home_country": null,
"former_name": null,
"license_plate": null,
"bio": null,
"hispanic_latino": false,
"resident_alien": false,
"localization_id": null,
"notification_email_id": null,
"deceased_date": null,
"import_id": null,
"staff_id": null,
"faculty_id": null,
"degree_level_id": null,
"added_at": null,
"added_by_id": null,
"updated_at": "2026-07-25T16:24:14+00:00",
"private_profile": false,
"is_user": false,
"sandbox": true
}
HTTP Request
POST /people/(person)/mark_deceased
Parameters
| Name | Required | Data Type | Description |
|---|---|---|---|
| deceased_date | No | date |
portal_links
Example code to call this method:
curl "https://yourschool.populiweb.com/api2/people/(person)/portal_links" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_POPULI_API_KEY" \
-X GET
require 'httparty'
response = HTTParty.get(
'https://yourschool.populiweb.com/api2/people/(person)/portal_links',
headers: {
'Authorization' => 'Bearer YOUR_POPULI_API_KEY'
},
)
puts response.body
import requests
response = requests.get(
'https://yourschool.populiweb.com/api2/people/(person)/portal_links',
headers={
'Authorization': 'Bearer YOUR_POPULI_API_KEY'
},
)
print(response.json())
using Newtonsoft.Json;
using RestSharp;
var client = new RestClient();
var request = new RestRequest(new Uri("https://yourschool.populiweb.com/api2/people/(person)/portal_links"), Method.Get);
request.AddHeader("Authorization", "Bearer YOUR_POPULI_API_KEY");
var response = client.Execute(request);
var response_object = JsonConvert.DeserializeObject(response.Content);
Console.Write(response_object);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://yourschool.populiweb.com/api2/people/(person)/portal_links');
curl_setopt($curl, CURLOPT_HTTPHEADER, ['Authorization: Bearer YOUR_POPULI_API_KEY']);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET');
$response = curl_exec($curl);
$response_decoded = json_decode($response);
var_dump($response_decoded);
Example response:
{
"object": "person_portal_links",
"person_id": 12,
"admissions_portal_link": "https:\/\/deployment.populi.co\/router\/portal\/g890da453556c9061e2db598ecc4cd5ad597bf1aa982e2ca871fde37f4b9d27df4bd310069c0d839afe95e55fa263931f9f0e057750c01a6fafdcd787436fc5baefb4104b2ecc18cf2251df4dedd789f45a036971a5c02e0a44459c34d9fd616451d5fb8381a307334b\/admissions",
"donors_portal_link": "https:\/\/deployment.populi.co\/router\/portal\/g8cc41cbfb848e2a498d30092794fa07ac3ba0530725f7937100a69a13a403fa55d067724290a6d0138b37ba65dd4855061247df1b7aabdec1bd41b726b6e48f735dee135e93d89c2e43e26b6d98d07a45e42788b1b9eeecddfa421df8dbe4fa7ebd2af3a5a\/donors",
"sponsor_payments_portal_link": "https:\/\/deployment.populi.co\/router\/portal\/g22eb4183ac7159f3e4704f474616f0d327eb5d27ac748097236566647cfb028025d844ca7ff1dd280bf8ab50d0c04c67e147ae8a10f44dcf849ef140114c000d2d05f6af28bd264c36aa0f10d777613244b4e38d2cc99eff558b147dc51fef1a9d28b21be81274\/payments"
}
HTTP Request
GET /people/(person)/portal_links
Parameters
None
restore
Example code to call this method:
curl "https://yourschool.populiweb.com/api2/people/(person)/restore" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_POPULI_API_KEY" \
-X POST
require 'httparty'
response = HTTParty.post(
'https://yourschool.populiweb.com/api2/people/(person)/restore',
headers: {
'Authorization' => 'Bearer YOUR_POPULI_API_KEY'
},
)
puts response.body
import requests
response = requests.post(
'https://yourschool.populiweb.com/api2/people/(person)/restore',
headers={
'Authorization': 'Bearer YOUR_POPULI_API_KEY'
},
)
print(response.json())
using Newtonsoft.Json;
using RestSharp;
var client = new RestClient();
var request = new RestRequest(new Uri("https://yourschool.populiweb.com/api2/people/(person)/restore"), Method.Post);
request.AddHeader("Authorization", "Bearer YOUR_POPULI_API_KEY");
var response = client.Execute(request);
var response_object = JsonConvert.DeserializeObject(response.Content);
Console.Write(response_object);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://yourschool.populiweb.com/api2/people/(person)/restore');
curl_setopt($curl, CURLOPT_HTTPHEADER, ['Authorization: Bearer YOUR_POPULI_API_KEY']);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
$response = curl_exec($curl);
$response_decoded = json_decode($response);
var_dump($response_decoded);
Example response:
{
"object": "person",
"id": 12,
"first_name": "Taylor",
"last_name": "Forest",
"middle_name": null,
"prefix": "Mrs.",
"suffix": null,
"preferred_name": null,
"display_name": "Taylor Forest",
"salutation": "Mrs. Alice Admin",
"addressee": "Mrs. Alice Admin",
"gender": "female",
"other_gender": null,
"image_file_id": null,
"birth_date": null,
"status": "active",
"social_security_number": null,
"alien_registration_number": null,
"social_insurance_number": null,
"home_city": null,
"home_state": null,
"home_country": null,
"former_name": null,
"license_plate": null,
"bio": null,
"hispanic_latino": true,
"resident_alien": false,
"localization_id": null,
"notification_email_id": null,
"deceased_date": null,
"import_id": null,
"staff_id": null,
"faculty_id": null,
"degree_level_id": null,
"added_at": null,
"added_by_id": null,
"updated_at": "2026-07-25T16:24:14+00:00",
"private_profile": false,
"is_user": true,
"sandbox": true
}
HTTP Request
POST /people/(person)/restore
Parameters
None
Permissions
One of the following roles is required to call this method:
- Staff
upload_file
Example code to call this method:
curl "https://yourschool.populiweb.com/api2/people/(person)/upload_file" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_POPULI_API_KEY" \
-X POST
-F 'file=@/path/to/file.jpg' \
-F 'parameters={"custom_info_field_id":"2","academic_term_id":"470","visibility_role_ids":"[7, 10, 15]"}' \
require 'httparty'
response = HTTParty.post(
'https://yourschool.populiweb.com/api2/people/(person)/upload_file',
headers: {
'Authorization' => 'Bearer YOUR_POPULI_API_KEY'
},
body: {
:visibility_role_ids => '[7, 10, 15]'
}.to_json
)
puts response.body
import requests
response = requests.post(
'https://yourschool.populiweb.com/api2/people/(person)/upload_file',
headers={
'Authorization': 'Bearer YOUR_POPULI_API_KEY'
},
json={
'visibility_role_ids': '[7, 10, 15]'
}
)
print(response.json())
using Newtonsoft.Json;
using RestSharp;
var client = new RestClient();
var request = new RestRequest(new Uri("https://yourschool.populiweb.com/api2/people/(person)/upload_file"), Method.Post);
request.AddHeader("Authorization", "Bearer YOUR_POPULI_API_KEY");
request.AddJsonBody(new {
visibility_role_ids = "[7, 10, 15]"
});
var response = client.Execute(request);
var response_object = JsonConvert.DeserializeObject(response.Content);
Console.Write(response_object);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://yourschool.populiweb.com/api2/people/(person)/upload_file');
curl_setopt($curl, CURLOPT_HTTPHEADER, ['Authorization: Bearer YOUR_POPULI_API_KEY']);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode([
'visibility_role_ids' => '[7, 10, 15]'
]));
$response = curl_exec($curl);
$response_decoded = json_decode($response);
var_dump($response_decoded);
Example response:
"Example response not available."
HTTP Request
POST /people/(person)/upload_file
Parameters
| Name | Required | Data Type | Description |
|---|---|---|---|
| custom_info_field_id | No | int | |
| academic_term_id | No | int | |
| visibility_role_ids | Yes | array of Role ids |
This routes requires a file upload with the request. Use a form post parameter called "file". Read about request and response format to see how parameters need to be specified differently when there is a file upload.
Permissions
One of the following roles is required to call this method:
- Staff
possible_duplicates
Example code to call this method:
curl "https://yourschool.populiweb.com/api2/people/possibleduplicates" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_POPULI_API_KEY" \
-X GET
-d '{
"first_name": "dolce",
"last_name": "miller"
}' \
require 'httparty'
response = HTTParty.get(
'https://yourschool.populiweb.com/api2/people/possibleduplicates',
headers: {
'Authorization' => 'Bearer YOUR_POPULI_API_KEY'
},
)
puts response.body
import requests
response = requests.get(
'https://yourschool.populiweb.com/api2/people/possibleduplicates',
headers={
'Authorization': 'Bearer YOUR_POPULI_API_KEY'
},
)
print(response.json())
using Newtonsoft.Json;
using RestSharp;
var client = new RestClient();
var request = new RestRequest(new Uri("https://yourschool.populiweb.com/api2/people/possibleduplicates"), Method.Get);
request.AddHeader("Authorization", "Bearer YOUR_POPULI_API_KEY");
var response = client.Execute(request);
var response_object = JsonConvert.DeserializeObject(response.Content);
Console.Write(response_object);
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'https://yourschool.populiweb.com/api2/people/possibleduplicates');
curl_setopt($curl, CURLOPT_HTTPHEADER, ['Authorization: Bearer YOUR_POPULI_API_KEY']);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET');
$response = curl_exec($curl);
$response_decoded = json_decode($response);
var_dump($response_decoded);
Example response:
{
"object": "list",
"count": 1,
"results": 1,
"results_per_page": null,
"pages": 1,
"page": 1,
"offset": 0,
"has_more": false,
"data": [
{
"object": "person",
"id": 35,
"first_name": "Dolce",
"last_name": "Miller",
"middle_name": null,
"prefix": null,
"suffix": null,
"preferred_name": null,
"display_name": "Dolce Miller",
"salutation": "Dolce Miller",
"addressee": "Dolce Miller",
"gender": "female",
"other_gender": null,
"image_file_id": null,
"birth_date": null,
"status": "active",
"social_security_number": null,
"alien_registration_number": null,
"social_insurance_number": null,
"home_city": null,
"home_state": null,
"home_country": null,
"former_name": null,
"license_plate": null,
"bio": null,
"hispanic_latino": false,
"resident_alien": false,
"localization_id": null,
"notification_email_id": null,
"deceased_date": null,
"import_id": null,
"staff_id": null,
"faculty_id": null,
"degree_level_id": null,
"added_at": null,
"added_by_id": null,
"updated_at": null,
"private_profile": false,
"is_user": false
}
],
"sandbox": true
}
HTTP Request
GET /people/possibleduplicates
Parameters
| Name | Required | Data Type | Description |
|---|---|---|---|
| first_name | No | text (50) | |
| last_name | No | text (50) | |
| preferred_name | No | text (255) | |
| gender | No | enum (male, female, unknown, other) |
Permissions
One of the following roles is required to call this method:
- Staff