REST API

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.

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

ParameterPossible optionsDefaultDescription
sortdate ratingdateSort by date or rating.
orderasc descdescOrder in ascending order (oldest testimonials first/lowest rated first) or descending order (newest testimonials first/lowest rated first).
approvedtrue false NULLList approved testimonials or unapproved testimonials. If left empty, both are retrieved.
ratingintNULLList testimonials matching a rating
typetext videoNULLList text or video testimonials
integrationIntegrationNULLList testimonials matching a specific integration. If left empty all are retrieved. See supported integrations
tagsstring[][]List testimonials matching specific tags. Use the names of the tags, not their ids.
langISO 639 language codeNULLFind testimonials that are written in a specified language or have been translated to a specific language
limitint between 1 and 1000100Limit testimonials returned by the API
pageintNULLUse 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

ParameterTypeRequiredDescription
typestringYesThe type of testimonial. Possible values: "text" or "video".
titlestringNoThe title of the testimonial.
textstringNoThe text content of the testimonial.
ratingnumberNoThe rating of the testimonial (e.g., 1-5).
urlstringNoThe URL of the testimonial.
datestringNoThe date of the testimonial (ISO 8601 format).
approvedbooleanNoThe approval status of the testimonial. If true, the testimonial is approved; if false, it is unapproved.
thumbnail_urlstringNoThe URL of the testimonial's thumbnail image.
form_idstringNoThe ID of the form associated with the testimonial.
customer_namestringYesThe name of the customer.
customer_emailstringNoThe email address of the customer.
customer_avatarstringNoThe URL of the customer’s avatar.
customer_company_logostringNoThe URL of the customer’s company logo.
customer_companystringNoThe customer’s company.
customer_taglinestringNoThe customer’s tagline.
customer_usernamestringNoThe customer’s username.
customer_urlstringNoThe URL of the customer’s website or social media profile.
integrationIntegrationNoThe integration associated with the testimonial. See all supported values
tagsstring[]NoAn array of strings representing tags associated with the testimonial.
video_urlstringNoThe 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[].altstringNoThe alternative text for the media.
media[].urlstringNoThe URL of the media.
media[].typeimage videoNoThe 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

Was this helpful?