Invite your customers to give feedback on your services to identify promoters and detractors of your product.
Send your first NPS Feedback Survey form
You can manually send NPS Feedback Survey forms without using the API.
All relative URLs in this document have the following base https://snja.io/1.0
POST /feedbacks
Make a HTTP POST request to the /feedbacks endpoint with the customers email address to send them a NPS Feedback Survey Form.
This endpoint requires your API_KEY_ID and API_SECRET to access.
Parameter | Required | Description | Example |
---|---|---|---|
YES | STRING The customer's Email Address | hello@example.com | |
full_name | NO | STRING The customer's Full Name | John Smith |
Example of a request.
curl https://snja.io/1.0/feedbacks/ \
--header "X-Api-Id: <API_KEY_ID>" \
--header "X-Api-Secret: <API_SECRET>" \
--data "email=<EMAIL>"
$url = "https://snja.io/1.0/feedbacks/";
$headers = ["X-Api-Id: <API_KEY_ID>", "X-Api-Secret: <API_SECRET>"];
$data = ["email" => "<EMAIL>", "full_name" => "<FULL_NAME>"];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_exec($ch);
curl_close($ch);
Example of a successful response.
{
"response": {
"error": 0,
"message": "Feedback invite sent successfully",
"feedback": {
"id": 1,
"email": "penny.jones@example.com",
"full_name": "Penny Jones",
"created": "2018-01-06T00:19:34+00:00",
"modified": "2018-01-06T00:19:34+00:00"
}
}
}
GET /feedbacks
Make a HTTP GET request to the /feedbacks endpoint to list NPS Feedback Survey Forms.
This endpoint requires your API_KEY_ID and API_SECRET to access.
Parameter | Required | Description | Example |
---|---|---|---|
page | NO | INTEGER The page number when using pagination | 1 |
limit | NO | INTEGER The limit of returned resources when using pagination | 50 |
Example of a request.
curl "https://snja.io/1.0/feedbacks?_id=<API_KEY_ID>&_secret=<API_SECRET>"
var https = require('https');
console.log(https.get("https://snja.io/1.0/feedbacks?_id=<API_KEY_ID>&_secret=<API_SECRET>"));
echo file_get_contents("https://snja.io/1.0/feedbacks?_id=<API_KEY_ID>&_secret=<API_SECRET>");
import requests
print(requests.get("https://snja.io/1.0/feedbacks?_id=<API_KEY_ID>&_secret=<API_SECRET>"))
Example of a successful response.
{
"feedbacks": [
{
"id": 1,
"email": "penny.jones@example.com",
"full_name": "Penny Jones",
"score": 10,
"content": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
"completed": "2018-01-06T00:23:30+00:00",
"created": "2018-01-06T00:22:30+00:00",
"modified": "2018-01-06T00:22:30+00:00"
},
{
"id": 2,
"email": "john.smith@example.com",
"full_name": "John Smith",
"score": null,
"content": null,
"completed": null,
"created": "2018-01-06T00:19:34+00:00",
"modified": "2018-01-06T00:19:34+00:00"
}
]
}
GET /feedbacks/<ID>
Make a HTTP GET request to the /feedbacks/<ID> endpoint with the ID of the NPS Feedback Survey Form.
This endpoint requires your API_KEY_ID and API_SECRET to access.
Parameter | Required | Description | Example |
---|---|---|---|
id | YES | INTEGER The NPS Feedback Survey Form ID | 1001 |
Example of a request.
curl "https://snja.io/1.0/feedbacks/<ID>?_id=<API_KEY_ID>&_secret=<API_SECRET>"
var https = require('https');
console.log(https.get("https://snja.io/1.0/feedbacks/<ID>?_id=<API_KEY_ID>&_secret=<API_SECRET>"));
echo file_get_contents("https://snja.io/1.0/feedbacks/<ID>?_id=<API_KEY_ID>&_secret=<API_SECRET>");
import requests
print(requests.get("https://snja.io/1.0/feedbacks/<ID>?_id=<API_KEY_ID>&_secret=<API_SECRET>"))
Example of a successful response.
{
"feedback": {
"id": 1,
"email": "penny.jones@example.com",
"full_name": "Penny Jones",
"score": 9,
"content": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
"completed": "2018-01-06T00:23:30+00:00",
"created": "2018-01-06T00:22:30+00:00",
"modified": "2018-01-06T00:23:30+00:00"
}
}
DELETE /feedbacks/<ID>
Make a HTTP DELETE request to the /feedbacks/<ID> endpoint with the ID of the NPS Feedback Survey Form.
This endpoint requires your API_KEY_ID and API_SECRET to access.
Parameter | Required | Description | Example |
---|---|---|---|
id | YES | INTEGER The NPS Feedback Survey Form ID | 1001 |
Example of a request.
curl https://snja.io/1.0/feedbacks/<ID> \
--header "X-Api-Id: <API_KEY_ID>" \
--header "X-Api-Secret: <API_SECRET>" \
-X "DELETE"
$url = "https://snja.io/1.0/feedbacks/<ID>";
$headers = ["X-Api-Id: <API_KEY_ID>", "X-Api-Secret: <API_SECRET>"];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_exec($ch);
curl_close($ch);
Example of a successful response.
{
"response": {
"error": 0,
"message": "Deleted successfully"
}
}
GET /feedbacks/nps
Make a HTTP GET request to the /feedbacks/nps endpoint to recieve the NPS score for your business.
This endpoint requires your API_KEY_ID and API_SECRET to access.
This endpoint doesn't accept any params.
Example of a request.
curl "https://snja.io/1.0/feedbacks/nps?_id=<API_KEY_ID>&_secret=<API_SECRET>"
var https = require('https');
console.log(https.get("https://snja.io/1.0/feedbacks/nps?_id=<API_KEY_ID>&_secret=<API_SECRET>"));
echo file_get_contents("https://snja.io/1.0/feedbacks/nps?_id=<API_KEY_ID>&_secret=<API_SECRET>");
import requests
print(requests.get("https://snja.io/1.0/feedbacks/nps?_id=<API_KEY_ID>&_secret=<API_SECRET>"))
Example of a successful response.
{
"feedbacks": {
"nps_score": "75.00",
"nps_score_30": "85.00",
"nps_score_30_comparison": "85.00",
"nps_score_30_change": "0.00",
"nps_score_90": "50.00",
"nps_score_90_comparison": "80.00",
"nps_score_90_change": "-30.00"
}
}
Showing all time, 30 day & 90 day Net Promoter Scores.
You'll need to authenticate using your API Key.
There are two ways to authenticate:
Request Headers:
$ curl -H "X-Api-Id: <API_KEY_ID>" -H "X-Api-Secret: <API_SECRET>" 'https://snja.io'
URL Parameters:
$ curl 'https://snja.io/foo?_id=<API_KEY_ID>&_secret=<API_SECRET>'
API Keys can be created and managed in the API Keys section.
API Keys are rate limited to ensure fair delivery of services. You can view the current Rate Limit and Remaining Requests in the returned Response Headers from the API. Below is a description of the Response Headers.
Header | Description |
---|---|
X-RateLimit-Limit | The maximum number of requests per time window. |
X-RateLimit-Remaining | The number of requests remaining before reset. |
X-RateLimit-Reset | The time at which the current rate limit window resets in UTC Epoch seconds. |
The following HTTP response codes are used.
Code | Message | Description |
---|---|---|
200 | OK | The request has succeeded. |
400 | Bad Request | The request could not be understood by the server due to malformed syntax. |
401 | Unauthorised | This indicates that you have not passed a valid API key, the key has expired, or the Authorization header is not formatted correctly. |
404 | Not Found | The server has not found anything matching the Request-URI. |
405 | Method Not Allowed | This indicates that the request method is known by the server but has been disabled and cannot be used. |
429 | Too Many Requests | We have recieved too many requests from your API Key in a given amount of time. Wait a while and try again. |
Easily mock-up your app screenshots onto different devices for marketing
Login on a TV or Pi and ring an audible bell every time the team makes a sale
Your Net Promoter Score measures brand loyalty and forecasts business growth
Get notified instantly when your website is down and not responding to requests
Get notified when your cron jobs fail or benchmark their performance
Keep your customers informed during scheduled or unplanned outages
Lookup Country, Language & Currency Information from an IP address
Track DNS changes on your domains & get notified of expiring certificates
Monitor your competitors' websites and get notified when they change
Cross-platform Hybrid App build service for Cordova, React Native & Flutter
Generate swimlane charts of your customer's journey through your product
Capture & inspect HTTP requests. Replay the request to your local machine