How can we help? 👋

REST API

Build custom workflows for testimonial collection and sharing, or integrate Senja with tools that we currently do not have 1st party integrations for.

Please note, access to the Senja API is part of our Pro plan. See more about plans here. Welcome to the Senja REST API documentation 👋

 

With Senja’s API, you can easily build custom workflows for testimonial collection and sharing, or integrate Senja with tools that we currently do not have 1st party integrations for.

Getting started

Senja’s API is organized around REST. Our API has predictable resource-oriented URLs, accepts form-encoded request bodies, returns JSON-encoded responses, and uses standard HTTP response codes, authentication, and verbs.

Endpoint

https://api.senja.io/v1

Authentication

You can find your API in the Integrations tab of your project settings.

Notion image
 

To authenticate your requests, you need to pass the newly created key as an Authorization header:

curl "https://api.senja.io/v1/testimonials" \
  -H "Content-Type: application/json" \
  -H "Authorization: <Replace this with your API Key>" \

Endpoints

  • GET /testimonials: Retrieves all the testimonials in your Senja project.
  • POST /testimonials: Creates a new testimonial.
  • GET /testimonials/[id]: Retrieves a specific testimonial from your Senja project.

List all testimonials in your Senja project

Endpoint: GET /testimonials

This endpoint returns a list of all the testimonials in your Senja project. You can also filter the testimonials by tags, type, rating and integration.

By default, it returns the most recent testimonials first (date), but you can sort by rating (rating). You can also change the direction of the sort (asc/desc)

 

Example Request

curl "https://api.senja.io/v1/testimonials"
  -H "Authorization: Bearer API_KEY"

Query Parameters

Parameter
Possible options
Default
Description
sort
date rating
date
Sort by date or rating.
order
asc desc
desc
Order in ascending order (oldest testimonials first/lowest rated first) or descending order (newest testimonials first/lowest rated first).
approved
true false
NULL
List approved testimonials or unapproved testimonials. If left empty, both are retrieved.
rating
int
NULL
List testimonials matching a rating
type
text video
NULL
List text or video testimonials
integration
Integration
NULL
List testimonials matching a specific integration. If left empty all are retrieved. See supported integrations
tags
string[]
[]
List testimonials matching specific tags. Use the names of the tags, not their ids.
lang
ISO 639 language code
NULL
Find testimonials that are written in a specified language or have been translated to a specific language
limit
int between 1 and 1000
100
Limit testimonials returned by the API
page
int
NULL
Use this to paginate between responses

Example Response

{
  "testimonials": [
		 {
      "id": "5f6dca95-b19b-4de6-a104-885462a7e5e9",
      "type": "text",
      "integration": null,
      "title": null,
      "text": "I was so surprised how easily Senja could do what I hoped it to be able to that <mark>I subscribed within the first hour</mark> and I'm gonna port it to my other company during the day 😅",
      "rating": 5,
      "media": [],
      "url": null,
      "date": "2023-03-07T00:00:00.000Z",
      "approved": true,
      "project_id": "13c8e79b-dc26-4f12-aebd-908c01d440ca",
      "thumbnail_url": null,
      "form_id": "fe097815-9f08-4268-898d-789a0e1af571",
			"customer_name": "Georg R.",
      "customer_email": "georg@statuslink.io",
      "customer_avatar": "https://senjaio.b-cdn.net/public/avatar/05765ede-0522-43ce-bc35-205096cc5ebc_2A3520FF-FD48-442D-BF66-554C809E1912-8377-000003EA11D0E6A3.jpg",
      "customer_tagline": "Founder of StatusLink",
      "customer_username": null,
      "customer_url": "https://statuslink.io",
			"customer_company_logo": null,
			"customer_company": null,
      "created_at": "2023-03-07T07:22:48.67+00:00",
      "tags": [],
      "lang": "en",
      "translations": [
        {
          "id": "417bdd2e-fbba-4633-a3a4-e0aca1d0cc7d",
          "customer_tagline": "Responsable marketing, Hubhouse",
          "created_at": "2024-03-14T17:50:06.187+00:00",
          "lang": "fr",
          "review_id": "513fe6ca-fed4-4e1b-a161-325ec2191d80",
          "text": "Je travaille ici depuis plus de 15 ans, d'abord dans un rôle junior. L'entreprise m'a toujours poussé à acquérir de nouvelles compétences et à relever de nouveaux défis. Mes collègues sont intelligents et travailleurs, mais aussi agréables à travailler. Je recommande de postuler.",
          "title": "",
          "updated_at": "2024-03-14T17:50:09.341311+00:00",
        }
      ],
    },
    {
      "id": "4757564f-7ea7-4e31-bfd3-06249f828f84",
      "type": "video",
      "integration": null,
      "title": null,
      "text": "",
      "rating": 5,
      "media": [],
      "url": null,
      "date": "2023-01-14T20:04:08.503Z",
      "approved": true,
      "project_id": "13c8e79b-dc26-4f12-aebd-908c01d440ca",
      "thumbnail_url": null,
      "form_id": "96392896-6f2c-43da-866d-95c7c33efd67",
      "customer_name": "Zack Swire",
      "customer_email": "zack@topcoachclub.com",
      "customer_avatar": "https://senjaio.b-cdn.net/public/avatar/d1880ba0-b0ea-44f1-9e13-392113f3c62e_Untitled%20design%20%2845%29.png",
      "customer_tagline": "Coach & Founder",
      "customer_username": null,
      "customer_url": "https://www.topcoachclub.com"
			"customer_company_logo": null,
			"customer_company": null,
      "created_at": "2023-01-14T20:04:08.503+00:00",
      "tags": [],
      "video_url": "https://stream.mux.com/u2aVhj3KA2IjPpLg9hK00CKPFMd9kfXZVFU7mrAw2YiU/low.mp4",
      "video": {
        "duration": 89.709333,
        "aspect_ratio": "16:9",
        "mp4_urls": {
          "high": "https://stream.mux.com/u2aVhj3KA2IjPpLg9hK00CKPFMd9kfXZVFU7mrAw2YiU/high.mp4",
          "medium": "https://stream.mux.com/u2aVhj3KA2IjPpLg9hK00CKPFMd9kfXZVFU7mrAw2YiU/medium.mp4",
          "low": "https://stream.mux.com/u2aVhj3KA2IjPpLg9hK00CKPFMd9kfXZVFU7mrAw2YiU/low.mp4"
        },
        "hls_url": "https://stream.mux.com/u2aVhj3KA2IjPpLg9hK00CKPFMd9kfXZVFU7mrAw2YiU.m3u8"
      },
      "lang": "en",
      "translations": []
    },
    {
      "id": "5d0be321-89d6-4eb6-b20a-7d869642e6a3",
      "type": "text",
      "integration": "twitter",
      "title": null,
      "text": "I've been using Senja for a few months and I genuinely don't think there's any testimonial tool that even comes close to how good it is.\n\nSenja to the mooon 🚀",
      "rating": 0,
      "media": [],
      "url": "https://twitter.com/Jobsager/status/1634956105897086976",
      "date": "2023-03-12T00:00:00.000Z",
      "approved": true,
      "project_id": "13c8e79b-dc26-4f12-aebd-908c01d440ca",
      "thumbnail_url": null,
      "form_id": null,
      "customer_name": "Moi",
      "customer_email": null,
      "customer_avatar": "https://senjaio.b-cdn.net/public/media/5iSPwfACEB3xtigdUheRzGXt.jpeg",
      "customer_tagline": "Hi 👋",
      "customer_username": "Jobsager",
      "customer_url": "https://twitter.com/Jobsager"
      "created_at": "2023-03-12T16:37:16.16+00:00",
      "tags": [],
      "lang": "en",
      "translations": []
    }
  ]
}

Add a testimonial to your Senja Project

Endpoint: POST /testimonials

This endpoint allows you to add a new testimonial to your Senja project. You must provide the required information in the form of a JSON payload in the request body.

Example Request

bashCopy code
curl -X POST "https://api.senja.io/v1/testimonials"
  -H "Authorization: Bearer API_KEY"
  -H "Content-Type: application/json"
  -d '{
    "type": "text",
    "title": "Amazing product!",
    "text": "This product has changed my life!",
    "rating": 5,
    "endorser": {
      "name": "John Doe",
      "email": "john@example.com"
    }
  }'

 

JSON Body Parameters

Parameter
Type
Required
Description
type
string
Yes
The type of testimonial. Possible values: "text" or "video".
title
string
No
The title of the testimonial.
text
string
No
The text content of the testimonial.
rating
number
No
The rating of the testimonial (e.g., 1-5).
url
string
No
The URL of the testimonial.
date
string
No
The date of the testimonial (ISO 8601 format).
approved
boolean
No
The approval status of the testimonial. If true, the testimonial is approved; if false, it is unapproved.
thumbnail_url
string
No
The URL of the testimonial's thumbnail image.
form_id
string
No
The ID of the form associated with the testimonial.
customer_name
string
Yes
The name of the customer.
customer_email
string
No
The email address of the customer.
customer_avatar
string
No
The URL of the customer’s avatar.
customer_company_logo
string
No
The URL of the customer’s company logo.
customer_company
string
No
The customer’s company.
customer_tagline
string
No
The customer’s tagline.
customer_username
string
No
The customer’s username.
customer_url
string
No
The URL of the customer’s website or social media profile.
integration
Integration
No
The integration associated with the testimonial. See all supported values
tags
string[]
No
An array of strings representing tags associated with the testimonial.
video_url
string
No
The URL of the video testimonial. This field is required if the testimonial type is "video".
media[]
{ url: string; type: "image"; alt?: string; }[]
A list of images associated with the testimonial.
media[].alt
string
No
The alternative text for the media.
media[].url
string
No
The URL of the media.
media[].type
image video
No
The type of media.

Supported integrations

twitter product_hunt google facebook reddit appsumo capterra g2 linkedin app_store trustpilot shopify play_store yelp slack discord apple_podcasts telegram whatsapp youtube instagram apple_podcasts youtube tiktok instagram

 
Did this answer your question?
😞
😐
🤩