Why use the Savio API?
You can use the Savio API to:
- Send feedback to Savio programmatically.
- Connect Savio with integration services like Zapier.
- Sync customer data from system Savio doesn't integrate with so you can easily assign and filter feedback.
Authentication
The Savio API uses token based authentication. You can find your API token on your API Settings page.
When using the API as a webhook target in Zapier or similar service you need to include your API Token as an HTTP header:
HTTP Header | Value |
---|---|
Authorization |
Token YOUR_TOKEN_VALUE |
Note that the value of the Authorization
header must include the word Token
followed by a space and then your API token.
API Reference
Feedback
Feedback can be created.
Create Feedback
Feedback can be created via a POST
to https://www.savio.io/app/api/create-feedback/
.
HTTP Response Codes
Result | Response Code | Value |
---|---|---|
Success | 201 | {"id": id_of_new_feedback} |
Failed to authenticate | 401 | |
Failed to create feedback | 400 |
Parameters
Parameter | Required | Description |
---|---|---|
problem | Yes | The text describing the problem the user is having. |
feedback_type | No |
The type of customer that provided the feedback. Valid values are:
|
state | No Defaults to ACTIVE |
The triage state of this piece of feedback. Valid values are:
|
source_url | No | An optional URL that links back to the original source of the feedback. |
source_username | No | An optional name of the user who added the feedback piece. |
person_email | No | The email address of the person the feedback came from. If there is an existing person with that email address the feedback will be linked to that person. If there isn't an existing person with that email address a new person will be created. |
person_name | No | The full name of the person the feedback came from. If there isn't a person with that a new person will be created. |
company_name | No | The name of the company the person is associated with. If there is an existing company with that name the person will be linked to that company. If there isn't an existing company with that name a new company will be created. If person_name or person_email isn't included company_name will be ignored. |
feature_request_title | No | The title of the feature request to link the new piece of feedback to. If a feature request with that title already exists the existing feature request will be used. Otherwise a new feature request will be created. |
tags | No | A list of strings that are the titles of the tags you link to the new piece of feedback. If the tags don't exist they will be created. |
Example
curl https://www.savio.io/app/api/create-feedback/ \
-X POST \
-H 'Authorization:Token REPLACE_WITH_YOUR_API_TOKEN' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' -d '
{
"problem": "You need a Zapier integration so I can wire up Google Forms.",
"feedback_type": "ACTIVE",
"person_email": "bob@example.com",
"state": "ACTIVE",
"feature_request_title": "Feedback API",
"tags": ["red", "green"]
}'
Contacts
curl https://www.savio.io/app/api/create-feedback/ \ -X POST \ -H 'Authorization:Token REPLACE_WITH_YOUR_API_TOKEN' \ -H 'Accept: application/json' \ -H 'Content-Type: application/json' -d ' { "problem": "You need a Zapier integration so I can wire up Google Forms.", "feedback_type": "ACTIVE", "person_email": "bob@example.com", "state": "ACTIVE", "feature_request_title": "Feedback API", "tags": ["red", "green"] }'
Contacts
Contacts can be listed, created and updated.
Contact model
Attribute | Type | Description |
---|---|---|
id | integer | The unique identifier for the Contact which is given by Savio. |
string | The Contact's email. | |
name | string | The Contact's name. |
company | integer | The unique identifier for the associated Company which is given by Savio. |
company_name | string | The name of the associated company. |
filterable_attributes | Object | The user supplied attributes which are set for this Contact. |
created | String | The date the Contact was created in Savio. |
updated | String | The date the Contact was created in Savio |
List Contacts
You can get a paged list of Contacts by issuing a GET
to https://www.savio.io/app/api/users/
.
Response
Returns a paginated list of Contact Objects.
Attribute | Type | Description |
---|---|---|
count | integer | The total number of results available. |
next | url | A url to the next page or results or null. |
previous | url | A url to the previous page of results or null. |
results | list | A list of Contact objects. |
HTTP Response Codes
Result | Response Code | Value |
---|---|---|
Success | 201 | |
Failed to authenticate | 401 |
Parameters
Parameter | Required | Description |
---|---|---|
search | No | Filters list of Contacts by email or name |
ordering | No |
Order the results by the specified field. Prefix the field name with `-` to sort descending.
Allowed values are:
|
Example
curl 'https://www.savio.io/app/api/users/?search=example.com&ordering=-updated' \
-X GET \
-H 'Authorization:Token REPLACE_WITH_YOUR_API_TOKEN' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json'
Upsert Contact
curl 'https://www.savio.io/app/api/users/?search=example.com&ordering=-updated' \ -X GET \ -H 'Authorization:Token REPLACE_WITH_YOUR_API_TOKEN' \ -H 'Accept: application/json' \ -H 'Content-Type: application/json'
Upsert Contact
You can create or update a Contact by issuing a POST
to https://www.savio.io/app/api/users/
.
If a contact with that email address or internal_id already exists in Savio the contact will be updated.
Response
Returns the newly created Contact.
Attribute | Type | Required | Description |
---|---|---|---|
string | No | The Contact's email. | |
internal_id | string | Yes | The id for the Contact in your system. |
name | string | Yes | The Contact's full name. |
company | integer | No | The id of the Company assocated with this contact in Savio. |
company_internal_id | string | No | The id of the Company associated with this contact in your system. |
filterable_attributes | object | No | The contact supplied attributes which are set for this Contact. |
HTTP Response Codes
Result | Response Code | Value |
---|---|---|
Success | 201 | |
Failed to authenticate | 401 |
Example
curl https://www.savio.io/app/api/users/ \
-X POST \
-H 'Authorization:Token REPLACE_WITH_YOUR_API_TOKEN' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' -d '
{
"name": "New Contact",
"email": "new.contact@example.com",
"internal_id": "1234567",
"company_internal_id": "6",
"filterable_attributes": {
"region": "na"
}
}'
Companies
curl https://www.savio.io/app/api/users/ \ -X POST \ -H 'Authorization:Token REPLACE_WITH_YOUR_API_TOKEN' \ -H 'Accept: application/json' \ -H 'Content-Type: application/json' -d ' { "name": "New Contact", "email": "new.contact@example.com", "internal_id": "1234567", "company_internal_id": "6", "filterable_attributes": { "region": "na" } }'
Companies
Companies can be listed, created and updated.
Company model
Attribute | Type | Description |
---|---|---|
id | integer | The unique identifier for the Company which is given by Savio. |
name | string | The Company's name. |
internal_id | string | The id of the Company in your system. |
filterable_attributes | Object | The user supplied attributes which are set for this Company. |
created | String | The date the Company was created in Savio. |
updated | String | The date the Company was created in Savio |
List Companies
You can get a paged list of Companies by issuing a GET
to https://www.savio.io/app/api/companies/
.
Response
Returns a paginated list of Company Objects.
Attribute | Type | Description |
---|---|---|
count | integer | The total number of results available. |
next | url | A url to the next page or results or null. |
previous | url | A url to the previous page of results or null. |
results | list | A list of Company objects. |
HTTP Response Codes
Result | Response Code | Value |
---|---|---|
Success | 201 | |
Failed to authenticate | 401 |
Parameters
Parameter | Required | Description |
---|---|---|
search | No | Filters list of Companies by name |
ordering | No |
Order the results by the specified field. Prefix the field name with `-` to sort descending.
Allowed values are:
|
Example
curl 'https://www.savio.io/app/api/companies/?search=acme&ordering=-updated' \
-X GET \
-H 'Authorization:Token REPLACE_WITH_YOUR_API_TOKEN' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json'
Upsert Company
curl 'https://www.savio.io/app/api/companies/?search=acme&ordering=-updated' \ -X GET \ -H 'Authorization:Token REPLACE_WITH_YOUR_API_TOKEN' \ -H 'Accept: application/json' \ -H 'Content-Type: application/json'
Upsert Company
You can create or update a Company by issuing a POST
to https://www.savio.io/app/api/companies/
.
If a company with that internal_id already exists in Savio the Company will be updated.
Response
Returns the newly created Company.
Attribute | Type | Required | Description |
---|---|---|---|
name | string | Yes | The Company's name. |
internal_id | string | Yes | The id for the Compnay in your system. |
filterable_attributes | object | No | The user supplied attributes which are set for this Company. |
HTTP Response Codes
Result | Response Code | Value |
---|---|---|
Success | 201 | |
Failed to authenticate | 401 |
Example
curl https://www.savio.io/app/api/companies/ \
-X POST \
-H 'Authorization:Token REPLACE_WITH_YOUR_API_TOKEN' \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' -d '
{
"name": "Acme Corp",
"internal_id": "1234567",
"filterable_attributes": {
"region": "na"
}
}'
curl https://www.savio.io/app/api/companies/ \ -X POST \ -H 'Authorization:Token REPLACE_WITH_YOUR_API_TOKEN' \ -H 'Accept: application/json' \ -H 'Content-Type: application/json' -d ' { "name": "Acme Corp", "internal_id": "1234567", "filterable_attributes": { "region": "na" } }'