Contacts¶
A contact is a mobile number, an email address, or the identifier of an external feedback request. The contact endpoints collect what InstantFeedback stores about one contact across all campaigns of your account, anonymise it on request, and show who has looked at it.
A contact matches the feedback requests whose phone, email, or identifier equals it,
ignoring case. Mobile numbers are normalised to international format, so +38641279757 and
0038641279757 name the same contact. Put the contact in the path as is, or URL-encoded;
+ and %2B both work.
Get a contact¶
GET /contacts/:contact returns the data stored about one contact.
GET https://app.instantfeedback.si/api/contacts/+38641279757
Example response:
{
"contact": "+38641279757",
"num_appeals": 11,
"num_feedback": 8,
"avg_grade": [{
"scale": "1-5",
"avg": 4.125
}],
"index_csat": 87.5,
"index_nps": null,
"last_appeal": "2026-03-18T14:00:00+01:00",
"last_grade": "2026-03-18T14:18:56.842105+01:00",
"last_comment": null,
"last_survey": null,
"blacklist": {
"entry": "+38641279757",
"date_added": "2026-02-25T12:24:21.501701+01:00"
},
"graylist": {
"entry": "+38641279757",
"campaigns": [{
"id": 17,
"name": "Webshop – after order pickup",
"date_added": "2026-02-25T12:24:21.501701+01:00"
}]
}
}
| Field | Meaning |
|---|---|
contact |
The contact that was queried, normalised. |
num_appeals |
Number of feedback requests sent to the contact. |
num_feedback |
Number of grades received from the contact. |
avg_grade |
Average grade per grading scale, one object per scale the contact was graded on, with the scale's name in scale and the average in avg. |
index_csat |
CSAT index in percent over the contact's CSAT grades, or null when there are none. |
index_nps |
Net Promoter Score over the contact's NPS grades, or null when there are none. |
last_appeal |
When the last feedback request was scheduled. |
last_grade |
When the last grade was received, or null. |
last_comment |
When the last comment was received, or null. |
last_survey |
When the last survey was completed, or null. |
blacklist |
The contact's blacklist entry, with entry (the contact) and date_added, or null when the contact is not on the blacklist. |
graylist |
The contact's graylist entries, with entry and campaigns (one object per campaign where the contact is on the graylist, with id, name, and date_added), or null when the contact is on no graylist. |
The feedback requests themselves are not part of this response. Export them per campaign with List feedback requests.
A contact with no feedback requests in your account returns HTTP 404.
Mask a contact's data¶
POST /contacts/:contact/mask masks, that is anonymises, the personal data stored about one
contact. Use it to honour a customer's request to be forgotten.
POST https://app.instantfeedback.si/api/contacts/+38641279757/mask
On every feedback request of the contact, the mobile number, email address, identifier, and IP address are replaced with a masked value, as are the values of custom fields marked as personal data and the phone numbers on the SMS messages. Grades, comments, and statistics are kept. Masking cannot be undone, and a masked contact can no longer be looked up.
Example response:
{
"contact": "+38641279757",
"masked": {
"appeals": 11
}
}
| Field | Meaning |
|---|---|
contact |
The contact whose data was masked. |
masked |
What was masked: appeals is the number of feedback requests masked by this call. Empty when every request was already masked. |
A contact with no feedback requests in your account returns HTTP 404.
Access log¶
GET /contacts/:contact/access-log returns the audit trail of access to one contact's data
in the web app, newest entry first.
GET https://app.instantfeedback.si/api/contacts/+38641279757/access-log
Example response:
{
"count": 1,
"next": null,
"previous": null,
"results": [{
"user": "Nina Kovač",
"action": "app-contact-detail",
"date_accessed": "2026-03-28T14:58:52.682913+01:00"
}]
}
| Field | Meaning |
|---|---|
user |
The InstantFeedback user who accessed the data. |
action |
Where and how the data was accessed, for example app-contact-detail for the contact page in the web app. |
date_accessed |
When the data was accessed. |
The log records access by signed-in users of the web app. Requests made with an API key are not recorded.
Troubleshooting¶
| Message or symptom | What to do |
|---|---|
HTTP 404 Not found. |
No feedback request in your account has this phone number, email address, or identifier. Check the spelling, and remember that masked contacts cannot be found. |
avg_grade is an empty list. |
The contact has received feedback requests but has not graded any of them. |
masked is an empty object. |
All of the contact's feedback requests were masked by an earlier call. |