Skip to main content
People are the members of your district — candidates, mentors, board members, and administrators.

List people

GET /api/people
Returns all active people in your district. Query parameters:
ParameterTypeDescription
archivedbooleanSet to true to include archived people
Example:
curl https://app.credentialsportal.com/api/people \
  -H "Authorization: Bearer ck_your_api_key"
Response:
[
  {
    "id": "abc12",
    "first": "Jane",
    "last": "Doe",
    "email": "jane@example.com",
    "language": "en",
    "roles": { "1c": 1 },
    "tags": ["1a"],
    "archived": 0,
    "avatar_url": null,
    "district_id": "xyz99",
    "created_at": 1709942400000
  }
]

Get a person

GET /api/people/:id
Query parameters:
ParameterTypeDescription
includestringComma-separated list: files, interviews, tags, photo_url
Example:
curl "https://app.credentialsportal.com/api/people/abc12?include=files,interviews" \
  -H "Authorization: Bearer ck_your_api_key"
Response:
{
  "id": "abc12",
  "first": "Jane",
  "last": "Doe",
  "email": "jane@example.com",
  "language": "en",
  "roles": { "1c": 1 },
  "tags": ["1a"],
  "archived": 0,
  "avatar_url": "https://...",
  "district_id": "xyz99",
  "created_at": 1709942400000,
  "files": [...],
  "interviews": [...]
}

Create a person

POST /api/people
Requires People (edit) permission. Request body:
first
string
required
First name
last
string
required
Last name
email
string
required
Email address (must be unique within the district)
language
string
BCP 47 language code (default: "en")
roles
object
Role assignments as { roleId: 1 } (1 = primary, 2 = secondary)
tags
array
Array of tag IDs
Example:
curl -X POST https://app.credentialsportal.com/api/people \
  -H "Authorization: Bearer ck_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "first": "John",
    "last": "Smith",
    "email": "john@example.com",
    "language": "en",
    "roles": { "1c": 1 }
  }'
Response:
{
  "id": "def34",
  "first": "John",
  "last": "Smith",
  "email": "john@example.com",
  "language": "en",
  "roles": { "1c": 1 },
  "tags": [],
  "archived": 0,
  "district_id": "xyz99",
  "created_at": 1709942400000
}

Update a person

PATCH /api/people/:id
Requires People (edit) permission. Send only the fields you want to change. Example — update roles and add a tag:
curl -X PATCH https://app.credentialsportal.com/api/people/def34 \
  -H "Authorization: Bearer ck_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "roles": { "1b": 1, "1c": 1 },
    "tags": ["1a"]
  }'

Delete a person

DELETE /api/people/:id
Requires People (edit) permission. This permanently deletes the person and all their associated data.
Deletion is permanent. Archive people instead of deleting them if you may need their records.

Send an invitation

POST /api/people/:id/invite
Sends a login invitation email to the person. Example:
curl -X POST https://app.credentialsportal.com/api/people/def34/invite \
  -H "Authorization: Bearer ck_your_api_key"
Response:
{ "ok": true }

List files for a person

GET /api/people/:id/uploads
Returns all files uploaded for this person.

Upload a file for a person

POST /api/people/:id/uploads
Multipart form data upload. Form fields:
FieldDescription
fileThe file to upload
nameDisplay name for the file

Delete a file

DELETE /api/people/:id/uploads/:uploadId