Skip to main content
Interviews capture a candidate’s board meeting — form responses, audio recordings, file attachments, and the board’s recommendation.

List interviews

GET /api/interviews
Returns interviews based on the caller’s role:
  • Admin / Board: all interviews in the district
  • Mentor: published interviews for assigned candidates
  • Candidate: their own published interviews
Example:
curl https://app.credentialsportal.com/api/interviews \
  -H "Authorization: Bearer ck_your_api_key"
Response:
[
  {
    "id": "int01",
    "person_id": "abc12",
    "district_id": "xyz99",
    "date": "2026-02-15",
    "board_id": "1a",
    "form_id": "1a",
    "profile_id": "1a",
    "published": 1,
    "created_at": 1739577600000,
    "updated_at": 1739577600000
  }
]

List interviews for a person

GET /api/interviews/:personId
Returns all interviews for a specific person (subject to role-based access).

Get an interview

GET /api/interviews/:personId/:id
Returns the full interview record including form responses and audio.
Private form fields (marked p: 1) are filtered out for candidates and mentors. Only admins and board members see private fields.
Response:
{
  "id": "int01",
  "person_id": "abc12",
  "district_id": "xyz99",
  "date": "2026-02-15",
  "board_id": "1a",
  "form_id": "1a",
  "profile_id": "1a",
  "published": 1,
  "responses": {
    "1a": 1,
    "1b": { "en": "The candidate showed great enthusiasm" },
    "1c": { "en": "Continue studying Scripture" },
    "1f": 1
  },
  "audio": {
    "rec01": {
      "name": { "en": "Interview recording" },
      "url": "https://...",
      "transcript": { "en": "Full transcript text..." },
      "summary": { "en": "The candidate demonstrated strong theological foundations..." }
    }
  },
  "created_at": 1739577600000,
  "updated_at": 1739577600000
}

Create an interview

POST /api/interviews/:personId
Requires Interviews (edit) permission. Request body:
date
string
required
Interview date in YYYY-MM-DD format
board_id
string
ID of the board conducting the interview
form_id
string
ID of the interview form to use
profile_id
string
ID of the interview profile to use
Example:
curl -X POST https://app.credentialsportal.com/api/interviews/abc12 \
  -H "Authorization: Bearer ck_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "date": "2026-03-10",
    "board_id": "1a",
    "form_id": "1a",
    "profile_id": "1a"
  }'
Response:
{
  "id": "int02",
  "person_id": "abc12",
  "district_id": "xyz99",
  "date": "2026-03-10",
  "board_id": "1a",
  "form_id": "1a",
  "profile_id": "1a",
  "published": 0,
  "responses": {},
  "audio": {},
  "created_at": 1741564800000,
  "updated_at": 1741564800000
}

Update an interview

PATCH /api/interviews/:personId/:id
Use this endpoint to save form responses, publish the interview, or update the date. Request body:
responses
object
Form responses keyed by field ID. Values depend on field type:
  • Dropdown: integer (option index, 1-based)
  • Text: multilingual object { "en": "text" }
  • Checkbox: 0 or 1
  • File: object of file records
published
integer
Set to 1 to publish the interview (makes it visible to the candidate and mentor)
date
string
Update the interview date
Example — save form responses:
curl -X PATCH https://app.credentialsportal.com/api/interviews/abc12/int02 \
  -H "Authorization: Bearer ck_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "responses": {
      "1a": 1,
      "1b": { "en": "Excellent understanding of theology" },
      "1c": { "en": "Develop pastoral care skills" },
      "1f": 1
    }
  }'
Example — publish an interview:
curl -X PATCH https://app.credentialsportal.com/api/interviews/abc12/int02 \
  -H "Authorization: Bearer ck_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{ "published": 1 }'

Delete an interview

DELETE /api/interviews/:personId/:id
Requires Interviews (edit) permission. Permanently deletes the interview and all its responses, audio, and attachments. Example:
curl -X DELETE https://app.credentialsportal.com/api/interviews/abc12/int02 \
  -H "Authorization: Bearer ck_your_api_key"
Response:
{ "ok": true }