Get Satisfaction’s REST API provides a technical way to access community data, which lets third-party tools interact with our platform. The API follows REST conventions for URL construction, and can return data in JSON format. Acceptable use of the service and API are covered in our Terms of Service.
For general discussion about the API, please join the Get Satisfaction developer community at: /devcommunity. For direct contact, email support@getsatisfaction.com.
All calls to the API must be prepended with http://api.getsatisfaction.com, and can be appended with .json to choose JSON formatting for the API output. Errors are reported with standard HTML error codes, and results are paginated.
A topic is the general name for any new posting in a community. There are four varieties of topics: Questions, Ideas, Problems, and Praise. There is a fifth topic type available only to employees of communities, called "Company Update", which is used to make general announcements for the community.
The topic response payload contains the following data:
| Data Object | Description | ||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
"at_sfn": |
URL for the topic page | ||||||||||||||||||||||||
"follower_count": |
The number of people following the topic | ||||||||||||||||||||||||
"created_at": |
The date and time topic was created | ||||||||||||||||||||||||
"last_active_at": |
The date and time of last topic activity | ||||||||||||||||||||||||
"status": |
The topic status. Values are:
|
||||||||||||||||||||||||
"user_defined_code": |
The user defined code if there is one. If there isn't one, it returns "false" | ||||||||||||||||||||||||
"most_recent_activity": |
The most recent action taken on the topic. Values are "create", "comment", and "follow". | ||||||||||||||||||||||||
"employee": |
Whether the topic was created by an employee or not. Returns "true" or "false". | ||||||||||||||||||||||||
"champion:" |
Whether the topic was created by a champion or not. Returns "true" or "false". | ||||||||||||||||||||||||
"subject": |
The subject line for the topic | ||||||||||||||||||||||||
"company_id": |
The id for the company in Get Satisfaction | ||||||||||||||||||||||||
"emotitag": |
|
||||||||||||||||||||||||
"author": |
Returns the following data block for the author of the post (see the people object for more information):
|
||||||||||||||||||||||||
"has_promoted_replies": |
Whether the topic has any replies promoted, either through stars or as a company answer. Returns "true" or "false" | ||||||||||||||||||||||||
"content": |
The body of the topic | ||||||||||||||||||||||||
"style": |
The type of topic: possible values are "question", "problem", "praise", "idea", and "update". | ||||||||||||||||||||||||
"url": |
The API endpoint that returns the topic object | ||||||||||||||||||||||||
"slug": |
The URL slug for the particular topic | ||||||||||||||||||||||||
"following": |
Whether the topic is being followed by the user who is authenticating the API call. Returns "true" or "false" | ||||||||||||||||||||||||
"me_too": |
The URL slug for the particular topic | ||||||||||||||||||||||||
"me_too_count": |
The count of people who have clicked the +1 button (including the original poster) | ||||||||||||||||||||||||
"id": |
The topic ID | ||||||||||||||||||||||||
"reply_count": |
The number of replies and comments for this topic | ||||||||||||||||||||||||
| "active_replies": | The number of replies (but not comments) that are associated with the topic and have not been archived or deleted. |
| Data | API Endpoint |
|---|---|
| Get a specific topic | /topics/[topic slug or id] |
| Get all topics in all public Get Satisfaction communities | /topics |
| Get all topics in a particular community | /companies/[company_name or company_ID]/topics |
| Get all topics related to a specific product in a particular community | /companies/[company name or ID]/products/[product_name]/topics |
| Get all topics tagged with a specific tag within a particular community | /companies/[company name or company ID]/tags/[tag]/topics |
| Get all topics that a particular user has posted (*there is a question about how these numbers are calculated) | /people/[user ID]/topics |
| Get all topics that a particular user is following | /people/[user ID]/followed/topics |
| Get all topics identified with a specific product | /products/[product name]/topics |
| Search | ||
|---|---|---|
| Search for a particular string | ?query=[search string] or ?q=[search string] |
|
| Sort | ||
| Sort by the most recently created topic | ?sort=recently_created |
|
| Sort topics by most recent activity | ?sort=recently_active |
|
| Sort by the highest number of topic replies | ?sort=most_replies |
|
| Sort by the highest number of me too votes | ?sort=most_me_toos |
|
| Filter out all answered questions | ?sort=unanswered |
|
| Style | ||
| Filter by style |
|
|
| Community Activity | ||
| Filter by the time of the last activity in the community. Time is set in seconds since epoch. | ?active_since=[epoch time] |
|
| User | ||
| Filter by user ID | ?user=[user ID] |
|
| Company | ||
| Filter by company ID | ?company=[company ID] |
|
| Product | ||
| Filter by product name in API queries where the company is specified (for example, /companies/[company name or company ID]/topics) | ?product=[product name] or use a comma separated list (?product=[product1],[product2]) for filtering by multiple products. |
|
| Tag | ||
| Filter by tag | ?tag=[tag] |
|
| Status | ||
| Filter by status |
Status filter values are "none", "pending", "active", "complete", and "rejected". These apply to Problem, Idea, and Question topics. Praise and Updates have a status of "None." These statuses map to different properties for different kinds of topics: None -- No Status Rejected-- Not a Problem, Doesn't need Answer, Not Planned, Pending -- Acknowledged, Under Consideration Active -- In Progress, Planned Complete -- Solved, Answered, Implemented |
|
| User Defined Code | ||
| Filter by User Defined Code (in communities with UDCs enabled) | ?user_defined_code=[UDC] or use a comma separated list (?user=[UDC1],[UDC2]) for filtering by User Defined Codes. |
Replies are made to topics or to other replies. Replies can be promoted when either users or community moderators decide that a reply represents the best answer to a particular question or problem. Users can promote a reply by awarding the topic at least three stars; community moderators (for communities with paid accounts) can elevate a reply to official status directly.
The Reply response payload contains the following data:
| Data Object | Description | ||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
"created_at:" |
The date and time reply was created | ||||||||||||||||||||||||
"employee:" |
Whether the reply was created by an employee or not. Returns "true" or "false". | ||||||||||||||||||||||||
"champion:" |
Whether the reply was created by a champion or not. Returns "true" or "false". | ||||||||||||||||||||||||
"author:" |
Returns the following data block for the author of the reply:
|
||||||||||||||||||||||||
"url:" |
The API endpoint that returns the reply object. | ||||||||||||||||||||||||
"content:" |
The body of the reply. | ||||||||||||||||||||||||
"star_count:" |
The number of stars the reply has earned. | ||||||||||||||||||||||||
"star_promoted:" |
Whether the reply has been promoted by earning 3 stars from users. Returns "true" or "false". | ||||||||||||||||||||||||
"starred:" |
Whether the reply has been starred by the user who is authenticating the API call. Returns "true" or "false" | ||||||||||||||||||||||||
"topic_id:" |
The ID of the associated topic | ||||||||||||||||||||||||
"company_promoted:" |
Whether the reply has been promoted manually by a company employee. Returns "true" or "false" | ||||||||||||||||||||||||
"comment_count:" |
The number of comments that are associated with this reply. | ||||||||||||||||||||||||
"comments_url" |
The URL to query for all comments associated with this reply. | ||||||||||||||||||||||||
"id:" |
The reply ID. |
| Data | API Endpoint |
|---|---|
| Get all replies to all topics in all public Get Satisfaction communities | /replies |
| Get all replies from the specified topic | /topics/[topic ID or slug]/replies |
| Get all replies that a particular user has posted | /people/[user ID]/replies |
| Filter | |
|---|---|
| Return promoted replies (both star promoted and company chosen replies) | ?filter=best |
| Return only star promoted replies | ?filter=star_promoted |
| Return only company promoted replies | ?filter=company_promoted |
| Return all company and star promoted replies | ?type=flat_promoted |
| Exclude comments from the returned replies | ?include_comments=false |
Comments are children of replies, posted in response to a reply in a topic.
The Comment response payload contains the following data:
| Data Object | Description | ||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
"created_at:" |
The date and time comment was created | ||||||||||||||||||||||||
"employee:" |
Whether the comment was created by an employee or not. Returns "true" or "false". | ||||||||||||||||||||||||
"champion:" |
Whether the comment was created by a champion or not. Returns "true" or "false". | ||||||||||||||||||||||||
"author:" |
Returns the following data block for the author of the comment:
|
||||||||||||||||||||||||
"url:" |
The API endpoint that returns the comment object. | ||||||||||||||||||||||||
"content:" |
The body of the comment. | ||||||||||||||||||||||||
"topic_id:" |
The ID of the associated topic | ||||||||||||||||||||||||
"id:" |
The comment ID. |
| Data | API Endpoint |
|---|---|
| Get all comments from the specified topic | /topics/[topic ID or slug]/comments |
| Get all comments from the specified reply | /replies/[reply ID or slug]/comments |
The companies object generally returns the following information. When a particular community is specified, all of this information is returned. When no particular community is specified in the API call, several of the elements are not included, as noted below with an asterisk:
| Data Object | Description |
|---|---|
"description": * |
The Description from the basic information description field. |
"people": |
The API endpoint for people in the community |
"products": |
The API endpoint for products related to the company |
"logo": |
The URL path to the company’s uploaded logo image |
"topics": |
The API endpoint for company topics |
"url": |
The API endpoint for the company information |
"featured_people": * |
The featured people object contains people and topic information for the people who appear in the "community members" area in most communities. This includes information for both a new user’s first topic and also information for a user who answered a recent topic. More detail about the information in each block can be found in the person object and the topic object. |
"approximate_topic_count:" |
The number of topics in the community |
"approximate_people_count": |
The number of people in the community |
"name": |
The community name |
"domain": |
The community domain |
"id": |
The community id |
"approximate_employee_count": |
The number of employees in the community |
| Data | API Endpoint |
|---|---|
| Get all the public Get Satisfaction communities | /companies |
| Get all the public Get Satisfaction communities created by the specified user | /people/[user name or ID]/companies |
| Get all the public Get Satisfaction communities related to the specified product | /products/[product name or ID]/companies |
| Get the date and time of the last activity in the specified community | /companies/[company name or ID]/last_activity_at |
| Search | ||
|---|---|---|
| Search for a particular string | ?query=[search string] or ?q=[search string] |
|
| Show | ||
| Show communities that are indexible by search engines, and that also have activity | ?show=public |
|
| Show all communities that are indexible by search engines | ?show=not_hidden |
|
| Show communities that are either not indexible by search engines, or that have no activity | ?show=private |
|
| Show all communities | ?show=not_hidden |
|
| Sort | ||
| Sort by the most recently created community | ?sort=recently_created |
|
| Sort topics by most recent activity | ?sort=recently_active |
|
| Sort alphabetically by the name of the community | ?sort=alpha |
| URL | Resource |
|---|---|
/people |
People with accounts in communities at Get Satisfaction |
/people?page=3&limit=10 |
Goes to page 3 of the people list, showing 10 people. (A limit of 30 is max.) |
/companies/[company_name]/employees |
Employees of [company_name] |
/companies/ [company_name]/people |
People who have been active in the [company_name] community |
/people?query=[query_string] |
Full text search for [query_string]. |
/topics/openid_support/people |
People participating in the OpenId Support topic |
/people?filter=[variable] |
Filter the people returned by these vairables: "Visitor" - Has visited the community. "Contributor" - Has posted a topic or reply in the community. "Employees" - Is an employee of the community. |
| Data Object | Description | ||||||||
|---|---|---|---|---|---|---|---|---|---|
"links": |
Returns the following data block for each of the links that are related to the product:
|
||||||||
"created_at": |
The date and time that the product was created | ||||||||
"description": |
The product description | ||||||||
"company": |
The company name as it appears in the URL slug | ||||||||
"name": |
The product name | ||||||||
"url": |
The API endpoint for the product | ||||||||
"image": |
The url for the image associated with the product | ||||||||
"id": |
The product id |
| URL | Resource |
|---|---|
/products |
All of the products in Get Satisfaction |
/products?page=3&limit=10 |
Goes to page 3 of the product list, showing 10 products. (A limit of 30 is max.) |
/products?sort=recently_created |
Products sorted by most recently created. |
/products?sort=most_popular |
Products sorted by most popular. |
/products?sort=least_popular |
Products sorted by least popular. |
/products?sort=alpha |
Products sorted alphabetically. |
/products?query=macbook |
Full text search for macbook. |
/companies/[company_name]/products |
Products in the [company_name] community |
/people/scott/products |
Products scott created |
/topics/openid_support/products |
Products that the OpenId Support topic is about |
| URL | Resource |
|---|---|
/tags |
All of the tags in Get Satisfaction |
/tags?page=3&limit=10 |
Goes to page 3 of the tag list, showing 10 tags. (A limit of 30 is max.) |
/topics/[topic name or ID]/tags |
Tags applied to the specified topic |
/companies/[company name or ID]/tags |
Return all the tags used on topics in the community |
Topics can be created using the API using the POST method, and modified using the PUT method. All calls need to be authenticated using either Basic Auth or OAuth, depending on whether the community is public or private. Topics cannot be created or modified by a user other than the one whose credentials are validating the API call.
To create a topic on Get Satisfaction, submit an HTTP POST request to http://api.getsatisfaction.com/topics with the required subject parameter and any of the following optional parameters. Similarly, to modify a topic on Get Satisfaction, submit a PUT request with the parameters you want to modify.
Required Parameters for the companies/[your company]/topics endpoint |
|||||||
|---|---|---|---|---|---|---|---|
subject |
The subject line for the topic | ||||||
Optional Parameters for the companies/[your company]/topics endpoint |
|||||||
style |
Specifies the type of topic: possible values are "question", "problem", "praise", "idea", and "update". | ||||||
keywords |
A comma-separated list of tags that are to be associated with topic. Using the PUT command will add the keyword(s) to the list of tags associated with the topic. To overwrite the existing keyword(s), the keywords list needs to be followed with "overwrite_keywords": true. |
||||||
additional_detail |
A full description of the topic. The same as the topic content. | ||||||
products |
A comma-separated list of product names that should be associated with this topic. | ||||||
emotitag |
|
||||||
{
"topic":
{
"subject": "test for product affiliate",
"style": "praise",
"keywords": "keyword",
"additional_detail": "additional detail goes here",
"products": "thingamajig",
"emotitag":
{
"face": "happy",
"feeling": "very happy",
"intensity": 2
}
}
}
|
To post a reply to a topic, you make an HTTP POST to the replies sub-resource of a topic. To find this URL, you should look at the <link rel="replies"> element of a topic's Atom entry. Alternatively, if you know the URL of a topic, you can add "/replies" onto the end of it to manually form the URL.
Required POST parameters:
reply[content]Optional POST parameters:
reply[emotitag][face]reply[emotitag][feeling]reply[emotitag][intensity]All response codes are included in the HTTP Status response header. Possible status codes include:
| Code | Event Type | Meaning |
|---|---|---|
| 200 - OK | All Events | The Topic Create or Topic Update Push API call has been received and successfully processed. The end-point can optionally send a response containing updated "mapping" information. |
| 201 - Created | Topic Create Reply/Comment Create | The Topic Create or Reply/Comment Create Push API call is received and a corresponding object in the external system has been created. The end-point can optionally send a response containing updated "mapping" information. |
| 202 - Accepted | All Events | The Topic Create or Topic Update Push API calls have been received, but they have not been processed in real-time and instead batched to be processed at a later time. The processing later may or may not be successful. |
| 400 - Bad Request | All Events | The Push API call is malformed or contains invalid or incomplete information. |
| 401 - Unauthorized | All Events | An authenticated call is made, but the credentials are invalid. |
| 500 - Internal Server Error | All Events | An internal error occurred while processing the Push API call. |
| 503 - Service Unavailable | All Events | The end-point is unable to handle the API call. For example, there is scheduled downtime for the end-point back-end systems. The Push API will retry three times, and then suspend the call. |
Successful POST requests (e.g., to create a new record) will return a status code of 201, and include the JSON representation of the resource in the body of the response. Successful PUT requests (e.g., to update an existing record) will return a status code of 200, and include the JSON representation of the resource in the body of the response. Successful DELETE requests (e.g., to delete an existing record) will return a status code of 200 and no body.
By default, all data that comes as a result of a GET request comes in a page load of thirty data objects. The following query parameters can be used to modify the page load or specify a particular page.
| Pagination | ||
|---|---|---|
| Show the data from the specified page. In general, there are 30 data blocks per page, by default. | ?page=[n] |
|
| Limiting | ||
| Set the limit for data blocks per page. | ?limit=[n] |