API Documentation
Testimonials ¶
Overview
Testimonials are user-submitted reviews or endorsements that belong to a brand. They can optionally be linked to email threads (when captured from email conversations). Each testimonial is connected to a contact.
Testimonial
A Testimonial's data model is described in the table below:
| Field | Type | Association | Description |
|---|---|---|---|
| id | uuid | Internal identifier of the object | |
| created_at | number | Unix timestamp of creation | |
| updated_at | number | Unix timestamp of last update | |
| brand | uuid | The brand this testimonial belongs to | |
| user | User | testimonial.user |
The user associated with this testimonial |
| email_thread | EmailThread | testimonial.email_thread |
Optional email thread this was captured from |
| contact | Contact | testimonial.contact |
The contact who gave the testimonial |
| content | string | The testimonial text content | |
| rating | integer | Rating from 1-5 (optional) | |
| created_by | uuid | User who created this record | |
| updated_by | uuid | User who last updated this record |
TestimonialSettings
A TestimonialSettings's data model is described in the table below:
| Field | Type | Association | Description |
|---|---|---|---|
| id | uuid | Internal identifier of the object | |
| created_at | number | Unix timestamp of creation | |
| updated_at | number | Unix timestamp of last update | |
| brand | uuid | The brand these settings belong to | |
| template_instance | TemplateInstance | testimonial_settings.template_instance |
The template instance used for the Rechat capture form |
| collection_method | string | Optional pin — Rechat, Google, or Zillow. When set, the public capture page skips the chooser and goes straight to that destination. |
|
| zillow_reviewee | uuid | Linked Zillow reviewee, when Zillow is connected | |
| google_business_account | string | GBP account resource name, when Google is connected | |
| google_business_location | string | GBP location resource name (drives the review redirect on the capture page) |
Endpoints
Get all testimonials for a brand ¶
Get all testimonials for a brandGET/brands/:id/testimonials
Example URI
- id
string(required) Example: 500b5876-5466-4f9c-888d-45b8bdf98e92
200Body
{
"code": "OK",
"data": [
{
"id": "edab9d40-3c3f-4c43-8aff-ecba3dd643ab",
"brand": "500b5876-5466-4f9c-888d-45b8bdf98e92",
"content": "This is an amazing real estate service! They helped us find our dream home.",
"rating": 5,
"created_at": 1778872337.006007,
"updated_at": 1778872337.006007,
"deleted_at": null,
"created_by": "80a227b2-29a0-11e7-b636-e4a7a08e15d4",
"updated_by": null,
"captured_at": 1778872337.006007,
"tags": [],
"source": "Manual",
"zillow_review": null,
"google_review": null,
"type": "testimonial"
},
{
"id": "4256d612-f852-402b-a62c-e7854d5ec8e7",
"brand": "500b5876-5466-4f9c-888d-45b8bdf98e92",
"content": "This is an amazing real estate service! They helped us find our dream home.",
"rating": 5,
"created_at": 1778872337.006007,
"updated_at": 1778872337.006007,
"deleted_at": null,
"created_by": "80a227b2-29a0-11e7-b636-e4a7a08e15d4",
"updated_by": null,
"captured_at": 1778872337.006007,
"tags": [],
"source": "Manual",
"zillow_review": null,
"google_review": null,
"type": "testimonial"
},
{
"id": "5de33c9d-0f11-4d16-a782-a23f6041fdde",
"brand": "500b5876-5466-4f9c-888d-45b8bdf98e92",
"content": "Great service!",
"rating": null,
"created_at": 1778872337.006007,
"updated_at": 1778872337.006007,
"deleted_at": null,
"created_by": "80a227b2-29a0-11e7-b636-e4a7a08e15d4",
"updated_by": null,
"captured_at": 1778872337.006007,
"tags": [],
"source": "Manual",
"zillow_review": null,
"google_review": null,
"type": "testimonial"
}
],
"info": {
"count": 3,
"total": 0
}
}Get a specific testimonial ¶
Get a specific testimonialGET/brands/:id/testimonials/:testimonial
Example URI
- id
string(required) Example: 500b5876-5466-4f9c-888d-45b8bdf98e92- testimonial
string(required) Example: edab9d40-3c3f-4c43-8aff-ecba3dd643ab- associations
string(required) Example: testimonial.contact
200Body
{
"code": "OK",
"data": {
"id": "edab9d40-3c3f-4c43-8aff-ecba3dd643ab",
"brand": "500b5876-5466-4f9c-888d-45b8bdf98e92",
"contact": {
"id": "43450275-8d50-4343-b061-0c0c64f33a8b",
"display_name": "Johnny",
"partner_name": "Jane Doe",
"brand": "f4d3503d-6646-4319-9c45-324ab0176ffd",
"brand_id": "f4d3503d-6646-4319-9c45-324ab0176ffd",
"user_id": "80a227b2-29a0-11e7-b636-e4a7a08e15d4",
"sort_field": "Johnny",
"last_touch": null,
"last_touch_action": null,
"next_touch": null,
"touch_freq": null,
"ios_address_book_id": null,
"android_address_book_id": null,
"created_at": 1778872338.660905,
"updated_at": 1778872337.006007,
"deleted_at": null,
"created_for": "direct_request",
"updated_for": "direct_request",
"deleted_for": null,
"title": null,
"first_name": "John",
"partner_first_name": "Jane",
"middle_name": "M.",
"last_name": "Doe",
"partner_last_name": "Doe",
"marketing_name": null,
"nickname": "Johnny",
"email": "[email protected]",
"primary_email": "[email protected]",
"emails": [
"[email protected]"
],
"parked": false,
"partner_email": "[email protected]",
"phone_number": "+989124834198",
"primary_phone_number": "+989124834198",
"phone_numbers": [
"+989124834198"
],
"company": "Rechat",
"birthday": "1970-01-12T00:00:00.000Z",
"profile_image_url": "https://inomics.com/sites/default/files/pictures/picture-95970-1460131169.png",
"cover_image_url": "https://inomics.com/sites/default/files/pictures/picture-95970-1460131169.png",
"job_title": "Contact Test Subject",
"source_type": "ExplicitlyCreated",
"source": null,
"website": [
"http://www.gholi.com"
],
"tags": [
"poo",
"foo",
"New"
],
"address": [
{
"city": "Dallas",
"full": "Street, Dallas Texas 72890",
"name": "Street",
"type": "stdaddr",
"extra": "Office",
"line1": "Street",
"line2": "Dallas Texas 72890",
"state": "Texas",
"country": "US",
"postcode": "72890"
}
],
"type": "contact"
},
"content": "This is an amazing real estate service! They helped us find our dream home.",
"rating": 5,
"created_at": 1778872337.006007,
"updated_at": 1778872337.006007,
"deleted_at": null,
"created_by": "80a227b2-29a0-11e7-b636-e4a7a08e15d4",
"updated_by": null,
"captured_at": 1778872337.006007,
"tags": [],
"source": "Manual",
"zillow_review": null,
"google_review": null,
"type": "testimonial"
}
}Create a testimonial ¶
Create a testimonialPOST/brands/:id/testimonials
Example URI
- id
string(required) Example: 500b5876-5466-4f9c-888d-45b8bdf98e92- associations
string(required) Example: testimonial.contact
Body
{
"content": "This is an amazing real estate service! They helped us find our dream home.",
"contact": "43450275-8d50-4343-b061-0c0c64f33a8b",
"rating": 5
}200Body
{
"code": "OK",
"data": {
"id": "edab9d40-3c3f-4c43-8aff-ecba3dd643ab",
"brand": "500b5876-5466-4f9c-888d-45b8bdf98e92",
"contact": {
"id": "43450275-8d50-4343-b061-0c0c64f33a8b",
"display_name": "Johnny",
"partner_name": "Jane Doe",
"brand": "f4d3503d-6646-4319-9c45-324ab0176ffd",
"brand_id": "f4d3503d-6646-4319-9c45-324ab0176ffd",
"user_id": "80a227b2-29a0-11e7-b636-e4a7a08e15d4",
"sort_field": "Johnny",
"last_touch": null,
"last_touch_action": null,
"next_touch": null,
"touch_freq": null,
"ios_address_book_id": null,
"android_address_book_id": null,
"created_at": 1778872338.660905,
"updated_at": 1778872337.006007,
"deleted_at": null,
"created_for": "direct_request",
"updated_for": "direct_request",
"deleted_for": null,
"title": null,
"first_name": "John",
"partner_first_name": "Jane",
"middle_name": "M.",
"last_name": "Doe",
"partner_last_name": "Doe",
"marketing_name": null,
"nickname": "Johnny",
"email": "[email protected]",
"primary_email": "[email protected]",
"emails": [
"[email protected]"
],
"parked": false,
"partner_email": "[email protected]",
"phone_number": "+989124834198",
"primary_phone_number": "+989124834198",
"phone_numbers": [
"+989124834198"
],
"company": "Rechat",
"birthday": "1970-01-12T00:00:00.000Z",
"profile_image_url": "https://inomics.com/sites/default/files/pictures/picture-95970-1460131169.png",
"cover_image_url": "https://inomics.com/sites/default/files/pictures/picture-95970-1460131169.png",
"job_title": "Contact Test Subject",
"source_type": "ExplicitlyCreated",
"source": null,
"website": [
"http://www.gholi.com"
],
"tags": [
"poo",
"foo",
"New"
],
"address": [
{
"city": "Dallas",
"full": "Street, Dallas Texas 72890",
"name": "Street",
"type": "stdaddr",
"extra": "Office",
"line1": "Street",
"line2": "Dallas Texas 72890",
"state": "Texas",
"country": "US",
"postcode": "72890"
}
],
"type": "contact"
},
"content": "This is an amazing real estate service! They helped us find our dream home.",
"rating": 5,
"created_at": 1778872337.006007,
"updated_at": 1778872337.006007,
"deleted_at": null,
"created_by": "80a227b2-29a0-11e7-b636-e4a7a08e15d4",
"updated_by": null,
"captured_at": 1778872337.006007,
"tags": [],
"source": "Manual",
"zillow_review": null,
"google_review": null,
"type": "testimonial"
}
}Update a testimonial ¶
Update a testimonialPUT/brands/:id/testimonials/:testimonial
Example URI
- id
string(required) Example: 500b5876-5466-4f9c-888d-45b8bdf98e92- testimonial
string(required) Example: edab9d40-3c3f-4c43-8aff-ecba3dd643ab- associations
string(required) Example: testimonial.contact
Body
{
"content": "Updated testimonial content - even better service!",
"contact": "43450275-8d50-4343-b061-0c0c64f33a8b",
"rating": 4
}200Body
{
"code": "OK",
"data": {
"id": "edab9d40-3c3f-4c43-8aff-ecba3dd643ab",
"brand": "500b5876-5466-4f9c-888d-45b8bdf98e92",
"contact": {
"id": "43450275-8d50-4343-b061-0c0c64f33a8b",
"display_name": "Johnny",
"partner_name": "Jane Doe",
"brand": "f4d3503d-6646-4319-9c45-324ab0176ffd",
"brand_id": "f4d3503d-6646-4319-9c45-324ab0176ffd",
"user_id": "80a227b2-29a0-11e7-b636-e4a7a08e15d4",
"sort_field": "Johnny",
"last_touch": null,
"last_touch_action": null,
"next_touch": null,
"touch_freq": null,
"ios_address_book_id": null,
"android_address_book_id": null,
"created_at": 1778872338.660905,
"updated_at": 1778872337.006007,
"deleted_at": null,
"created_for": "direct_request",
"updated_for": "direct_request",
"deleted_for": null,
"title": null,
"first_name": "John",
"partner_first_name": "Jane",
"middle_name": "M.",
"last_name": "Doe",
"partner_last_name": "Doe",
"marketing_name": null,
"nickname": "Johnny",
"email": "[email protected]",
"primary_email": "[email protected]",
"emails": [
"[email protected]"
],
"parked": false,
"partner_email": "[email protected]",
"phone_number": "+989124834198",
"primary_phone_number": "+989124834198",
"phone_numbers": [
"+989124834198"
],
"company": "Rechat",
"birthday": "1970-01-12T00:00:00.000Z",
"profile_image_url": "https://inomics.com/sites/default/files/pictures/picture-95970-1460131169.png",
"cover_image_url": "https://inomics.com/sites/default/files/pictures/picture-95970-1460131169.png",
"job_title": "Contact Test Subject",
"source_type": "ExplicitlyCreated",
"source": null,
"website": [
"http://www.gholi.com"
],
"tags": [
"poo",
"foo",
"New"
],
"address": [
{
"city": "Dallas",
"full": "Street, Dallas Texas 72890",
"name": "Street",
"type": "stdaddr",
"extra": "Office",
"line1": "Street",
"line2": "Dallas Texas 72890",
"state": "Texas",
"country": "US",
"postcode": "72890"
}
],
"type": "contact"
},
"content": "Updated testimonial content - even better service!",
"rating": 4,
"created_at": 1778872337.006007,
"updated_at": 1778872337.006007,
"deleted_at": null,
"created_by": "80a227b2-29a0-11e7-b636-e4a7a08e15d4",
"updated_by": "80a227b2-29a0-11e7-b636-e4a7a08e15d4",
"captured_at": 1778872337.006007,
"tags": [],
"source": "Manual",
"zillow_review": null,
"google_review": null,
"type": "testimonial"
}
}Delete a testimonial ¶
Delete a testimonialDELETE/brands/:id/testimonials/:testimonial
Example URI
- id
string(required) Example: 500b5876-5466-4f9c-888d-45b8bdf98e92- testimonial
string(required) Example: edab9d40-3c3f-4c43-8aff-ecba3dd643ab
204Get testimonial settings ¶
Get testimonial settingsGET/brands/:id/testimonials/settings
Returns the testimonial capture settings for a brand, including the template instance used for the capture form.
Example URI
- id
string(required) Example: 500b5876-5466-4f9c-888d-45b8bdf98e92- associations
string(required) Example: testimonial_settings.template_instance
200Body
{
"code": "OK",
"data": {
"id": "bb1f3048-7677-40c6-89e6-75a39b52ff36",
"brand": "500b5876-5466-4f9c-888d-45b8bdf98e92",
"template_instance": {
"id": "df18b76d-3c4f-46c3-a666-0df766e27ff7",
"created_at": 1778872337.006007,
"html": "SOME HTML",
"file": {
"id": "a495d623-2d63-400e-924b-c4542b0c56cf",
"created_at": 1778872340.597857,
"updated_at": 1778872340.597857,
"deleted_at": null,
"created_by": "80a227b2-29a0-11e7-b636-e4a7a08e15d4",
"path": "templates/instances/ff1f7e10-5091-11f1-8248-cf8ab660e2ca.png",
"name": "image.png",
"public": true,
"type": "file",
"url": "https://test.cloudfront.net/templates/instances/ff1f7e10-5091-11f1-8248-cf8ab660e2ca.png",
"preview_url": "https://test.cloudfront.net/templates/instances/ff1f7e10-5091-11f1-8248-cf8ab660e2ca.png",
"mime": "image/png"
},
"created_by": "80a227b2-29a0-11e7-b636-e4a7a08e15d4",
"branch": "http://mock-branch-url",
"updated_at": 1778872337.006007,
"deleted_at": null,
"type": "template_instance"
},
"created_at": 1778872337.006007,
"updated_at": 1778872337.006007,
"collection_method": null,
"user": "80a227b2-29a0-11e7-b636-e4a7a08e15d4",
"google_business_account": null,
"google_business_location": null,
"type": "testimonial_settings"
}
}Upsert testimonial settings ¶
Upsert testimonial settingsPUT/brands/:id/testimonials/settings
Creates or updates the testimonial capture settings for the authenticated user. At least one of template_instance or collection_method must be provided.
Body fields:
| Field | Type | Required | Description |
|---|---|---|---|
| template_instance | uuid | no* | Template instance for the Rechat capture form |
| collection_method | string | no* | One of Rechat, Google, or Zillow. Pins the public capture page to that destination — required dependencies are enforced (e.g. Google needs both google_business_account and google_business_location). |
* one of the two is required.
Example URI
- id
string(required) Example: 500b5876-5466-4f9c-888d-45b8bdf98e92- associations
string(required) Example: testimonial_settings.template_instance
Body
{
"template_instance": "df18b76d-3c4f-46c3-a666-0df766e27ff7"
}200Body
{
"code": "OK",
"data": {
"id": "bb1f3048-7677-40c6-89e6-75a39b52ff36",
"brand": "500b5876-5466-4f9c-888d-45b8bdf98e92",
"template_instance": {
"id": "df18b76d-3c4f-46c3-a666-0df766e27ff7",
"created_at": 1778872337.006007,
"html": "SOME HTML",
"file": {
"id": "a495d623-2d63-400e-924b-c4542b0c56cf",
"created_at": 1778872340.597857,
"updated_at": 1778872340.597857,
"deleted_at": null,
"created_by": "80a227b2-29a0-11e7-b636-e4a7a08e15d4",
"path": "templates/instances/ff1f7e10-5091-11f1-8248-cf8ab660e2ca.png",
"name": "image.png",
"public": true,
"type": "file",
"url": "https://test.cloudfront.net/templates/instances/ff1f7e10-5091-11f1-8248-cf8ab660e2ca.png",
"preview_url": "https://test.cloudfront.net/templates/instances/ff1f7e10-5091-11f1-8248-cf8ab660e2ca.png",
"mime": "image/png"
},
"created_by": "80a227b2-29a0-11e7-b636-e4a7a08e15d4",
"branch": "http://mock-branch-url",
"updated_at": 1778872337.006007,
"deleted_at": null,
"type": "template_instance"
},
"created_at": 1778872337.006007,
"updated_at": 1778872337.006007,
"collection_method": null,
"user": "80a227b2-29a0-11e7-b636-e4a7a08e15d4",
"google_business_account": null,
"google_business_location": null,
"type": "testimonial_settings"
}
}Search Zillow reviewees ¶
Search Zillow revieweesGET/zillow/reviewees/search{?q}
Searches the global Zillow reviewees catalog. Used by the web client to populate the picker UI before calling [PUT /brands/:id/testimonials/zillow]. The match is a case-insensitive substring (ILIKE '%q%') OR’d across screen_name, full_name, business_name, and email.
Query parameters:
| Field | Type | Required | Description |
|---|---|---|---|
| q | string | yes | Search term — minimum 2 characters |
| limit | integer | no | Max results (default 20, capped at 50) |
Example URI
- q
string(required) Example: testagent
200Body
{
"code": "OK",
"data": [
{
"id": "d3b155f4-68fc-4a49-a76c-396e3e1dc9bb",
"reviewee_key": "test-reviewee-key-1",
"account_id": "test-account-1",
"screen_name": "testagent",
"full_name": "Test Agent",
"title": "Real Estate Agent",
"email": "[email protected]",
"business_name": "Test Realty",
"profile_url": "https://www.zillow.com/profile/testagent",
"review_request_url": "https://www.zillow.com/profile/testagent/review",
"review_count": 0,
"average_review_rating": null,
"bridge_modification_timestamp": "2026-01-01T00:00:00.000Z",
"created_at": 1778872337.006007,
"updated_at": 1778872337.006007,
"deleted_at": null,
"type": "zillow_reviewee"
}
],
"info": {
"count": 1,
"total": 0
}
}Connect Zillow ¶
Connect ZillowPUT/brands/:id/testimonials/zillow
Links a Zillow reviewee to the authenticated user’s testimonial settings for the brand and, by default, imports existing reviews as testimonials.
Body fields:
| Field | Type | Required | Description |
|---|---|---|---|
| zillow_reviewee | uuid | yes | The Zillow reviewee to associate with the user’s settings |
| import | boolean | no | Whether to import existing Zillow reviews (defaults to true) |
Example URI
- id
string(required) Example: 500b5876-5466-4f9c-888d-45b8bdf98e92
Body
{
"zillow_reviewee": "d3b155f4-68fc-4a49-a76c-396e3e1dc9bb",
"import": false
}200Body
{
"code": "OK",
"data": {
"id": "bb1f3048-7677-40c6-89e6-75a39b52ff36",
"brand": "500b5876-5466-4f9c-888d-45b8bdf98e92",
"created_at": 1778872337.006007,
"updated_at": 1778872337.006007,
"collection_method": null,
"user": "80a227b2-29a0-11e7-b636-e4a7a08e15d4",
"google_business_account": null,
"google_business_location": null,
"type": "testimonial_settings"
}
}Disconnect Zillow ¶
Disconnect ZillowDELETE/brands/:id/testimonials/zillow
Clears the Zillow reviewee from the authenticated user’s testimonial settings for the brand. If collection_method was pinned to Zillow, it is also cleared so the row remains valid against the database constraint. Idempotent — returns 204 even if no settings row exists or Zillow was never connected. Previously imported testimonials are kept.
Example URI
- id
string(required) Example: 500b5876-5466-4f9c-888d-45b8bdf98e92
204Connect Google Business Profile ¶
Connect Google Business ProfilePUT/brands/:id/testimonials/google
Links a Google Business Profile account to the authenticated user’s testimonial settings for the brand and, by default, imports existing reviews as testimonials. Reviews from every location under the selected account are pulled. A recurring background sync job is also scheduled.
The caller identifies which Google credential to use via gcid. Use [GET /users/self/google] to list the user’s connected Google accounts, and [GET /users/google/:gcid/business-profile-accounts] to list the GBP accounts available under a given credential.
Returns 412 GoogleBusinessProfileAuthenticationRequired when the credential does not include the business_profile scope.
Body fields:
| Field | Type | Required | Description |
|---|---|---|---|
| gcid | uuid | yes | The Google credential to use. Must belong to the authenticated user and have the business_profile scope. |
| google_business_account | string | yes | Resource name of the GBP account (e.g. accounts/12345). Must be one of the accounts returned by the picker endpoint. |
| google_business_location | string | no | Resource name of a location under the account (e.g. locations/67890). Required to expose the Google option on the public capture page — its metadata.newReviewUri is what users are redirected to. |
| import | boolean | no | Whether to pull and import existing reviews now (defaults to true). When false, only the recurring sync job is scheduled. |
Example URI
- id
string(required) Example: 500b5876-5466-4f9c-888d-45b8bdf98e92
Body
{
"gcid": "f2ed88ad-7785-487c-9acb-0ed2339fdd59",
"google_business_account": "accounts/111",
"google_business_location": "locations/222"
}200Body
{
"code": "OK",
"data": {
"id": "bb1f3048-7677-40c6-89e6-75a39b52ff36",
"brand": "500b5876-5466-4f9c-888d-45b8bdf98e92",
"created_at": 1778872337.006007,
"updated_at": 1778872337.006007,
"collection_method": null,
"user": "80a227b2-29a0-11e7-b636-e4a7a08e15d4",
"google_business_account": "accounts/111",
"google_business_location": "locations/222",
"type": "testimonial_settings"
}
}Disconnect Google Business Profile ¶
Disconnect Google Business ProfileDELETE/brands/:id/testimonials/google
Clears the Google Business Profile account and location from the authenticated user’s testimonial settings for the brand. If collection_method was pinned to Google, it is also cleared so the row remains valid against the database constraint. Idempotent — returns 204 even if no settings row exists or Google was never connected. Previously imported testimonials and the recurring sync job are kept.
Example URI
- id
string(required) Example: 500b5876-5466-4f9c-888d-45b8bdf98e92
204Testimonial capture form ¶
Testimonial capture formGET/brands/:id/testimonials/:user/capture{?method}
Public endpoint (no authentication required). Behavior:
-
If
collection_methodis set on the user’s settings, that wins — the request is treated as if?method=matched it (Zillow/Google → 302 redirect, Rechat → rendered form). The?method=query parameter is ignored in this case. -
Otherwise, if
?method=zillow|google|rechatis provided, route accordingly. -
Otherwise, if at least one external destination (Google or Zillow) is connected, render a chooser page listing the available options plus
None(Rechat). Each link re-hits this endpoint with?method=.... -
Otherwise, render the Rechat capture form HTML (uses the stored template instance, or falls back to the brand’s
TestimonialCapturetemplate).
Method semantics:
-
method=zillow—302redirect to the Zillow reviewee’sreview_request_url. -
method=google— looks up the connected location’smetadata.newReviewUrivia the Business Information API (using the user’s stored credential) and302redirects to it. -
method=rechat— renders the Rechat capture form HTML.
Optional query parameter contact (uuid) can be passed to pre-populate contact data in the Rechat form.
Example URI
- method
string(required) Example: google- id
string(required) Example: 500b5876-5466-4f9c-888d-45b8bdf98e92- user
string(required) Example: 80a227b2-29a0-11e7-b636-e4a7a08e15d4
200Body
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Leave a testimonial</title>
</head>
<body>
<h1>Leave a testimonial</h1>
<p>Choose where you'd like to leave your review:</p>
<ul>
<li><a href="/brands/500b5876-5466-4f9c-888d-45b8bdf98e92/testimonials/80a227b2-29a0-11e7-b636-e4a7a08e15d4/capture?method=google">Google</a></li>
<li><a href="/brands/500b5876-5466-4f9c-888d-45b8bdf98e92/testimonials/80a227b2-29a0-11e7-b636-e4a7a08e15d4/capture?method=zillow">Zillow</a></li>
<li><a href="/brands/500b5876-5466-4f9c-888d-45b8bdf98e92/testimonials/80a227b2-29a0-11e7-b636-e4a7a08e15d4/capture?method=rechat">None</a></li>
</ul>
</body>
</html>302302302Capture a testimonial ¶
Capture a testimonialPOST/brands/:id/testimonials/:user
Public endpoint (no authentication required). Submits a testimonial from a client on behalf of the agent identified by :user. On success, the created testimonial is returned and the agent is notified via email asynchronously.
Body fields:
| Field | Type | Required | Description |
|---|---|---|---|
| contact | uuid | yes | The contact who is giving the testimonial |
| content | string | yes | The testimonial text content |
| rating | integer | no | Rating from 1-5 |
Example URI
- id
string(required) Example: 500b5876-5466-4f9c-888d-45b8bdf98e92- user
string(required) Example: 80a227b2-29a0-11e7-b636-e4a7a08e15d4
Body
{
"contact": "43450275-8d50-4343-b061-0c0c64f33a8b",
"content": "Best agent ever — highly recommend!",
"rating": 5
}200Body
{
"code": "OK",
"data": {
"id": "94adeaed-5b33-486e-a401-67a0b402aa6f",
"brand": "500b5876-5466-4f9c-888d-45b8bdf98e92",
"content": "Best agent ever — highly recommend!",
"rating": 5,
"created_at": 1778872337.006007,
"updated_at": 1778872337.006007,
"deleted_at": null,
"created_by": null,
"updated_by": null,
"captured_at": 1778872337.006007,
"tags": [],
"source": "Rechat",
"zillow_review": null,
"google_review": null,
"type": "testimonial"
}
}