NAV
shell ruby python csharp php

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

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
email email
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:

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

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:

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:

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

Permissions

One of the following roles is required to call this method:

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

Permissions

One of the following roles is required to call this method:

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:

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:

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

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:

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:

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: