Vendasta Templates API
The Templates API from Vendasta — 2 operation(s) for templates.
The Templates API from Vendasta — 2 operation(s) for templates.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/vendasta-templates-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Customer Voice REST Templates API
version: '1.0'
description: APIs for gathering authentic reviews via email or text using Customer Voice.
servers:
- url: https://prod.apigateway.co/products/reviews
description: Production
- url: https://demo.apigateway.co/products/reviews
description: Demo
- url: '{local}/products/reviews'
description: Local
- url: http://localhost:11001/products/reviews
description: Localhost
security:
- OAuth2Demo:
- reviews
- OAuth2Prod:
- reviews
tags:
- name: Templates
paths:
/reviewRequestTemplates:
post:
summary: Create Template
operationId: post-templates
responses:
'201':
description: Created
content:
application/vnd.api+json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/reviewRequestTemplates'
description: 'Status: `Trusted Tester`
Used to create a new template within Customer Voice. Dynamic content can be inserted via substitution variables.
The follow variables are supported within an email template:
- `{{.customerName}}`: The first and last name of the customer.
- `{{.customerFirstName}}`: The first name of the customer.
- `{{.businessName}}`: The business location name.
- `{{.buttonUrl}}`: The review request button URL.
Can be used for dynamic content visibility within an email template:
- `{{.displaySource1}}`: Whether or not to display source 1.
- `{{.displaySource2}}`: Whether or not to display source 2.
- `{{.displaySource3}}`: Whether or not to display source 3.
Used to render images within an email template:
- ``
- ``
- ``
Used to render links within an email template:
- `{{.sourceName1}}`
- `{{.sourceName2}}`
- `{{.sourceName3}}`
The following members must be populated during creation:
- `relationships.businessLocation.data.id`'
x-lifecycle:
status: trustedTester
security:
- OAuth2Demo:
- reviews
- OAuth2Prod:
- reviews
parameters:
- schema:
type: string
pattern: ^Bearer\s\S+
in: header
name: Authorization
description: A Bearer access token to identify the user the app is acting on behalf of. See the Authorization guide for details.
required: true
- schema:
type: string
default: application/vnd.api+json
example: application/vnd.api+json
in: header
name: Content-Type
description: Indicates the format of the request body being sent. In most cases you will want `application/vnd.api+json`
required: true
requestBody:
content:
application/vnd.api+json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/reviewRequestTemplates'
examples:
Example Email Request:
value:
data:
type: reviewRequestTemplates
attributes:
name: My Preferred Sites Review Request
content: 'Hi {{.customerName}},
<br>
<br>
Thank you for your business! We''d love to know more about your latest experience with us.
<br>
<br>
{{.buttonUrl}}
<br>
<br>
Thank you,
<br>
John Doe'
metadata:
subject: Thank you for choosing us!
replyEmail: jondoe@mail.com
languageLocaleCode: en-US
type: email
relationships:
businessLocation:
data:
id: AG-12345
Example SMS Request:
value:
data:
type: reviewRequestTemplates
attributes:
name: My Preferred Sites Review Request
content: We'd love to hear about your recent experience with us. Leave us a review here.
metadata:
customUrl: https://www.yourcustomerexperience.com/reviews/
greeting: Hi {first_name}
reviewType: custom
type: sms
relationships:
businessLocation:
data:
id: AG-12345
tags:
- Templates
get:
summary: List Templates
operationId: get-templates
responses:
'200':
description: OK
content:
application/vnd.api+json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/reviewRequestTemplates'
links:
type: object
properties:
self:
type: string
format: uri
first:
type: string
description: Provides a link back to the first page of results
format: uri
next:
type: string
description: The URI at which the next batch of templates can be gotten from
format: uri
description: 'Status: `Trusted Tester`
Produces a list of templates'
parameters:
- schema:
type: string
in: header
name: Authorization
description: A Bearer access token to identify the user the app is acting on behalf of. See the Authorization guide for details.
required: true
- schema:
type: string
in: query
name: filter[businessLocation.id]
description: Return templates for the specified business location
required: true
- schema:
type: string
in: query
description: The cursor stores all your filters and current location in the list to allow paging over the results in smaller batches. The value will be provided in the response links. [Pagination Docs](https://developers.vendasta.com/platform/ZG9jOjEwMTkzMDg0-overview#paging).
name: page[cursor]
- schema:
type: string
in: query
description: The maximum number of tasks you would like returned in a single batch. Use the links.next member in the response to get the remainder. [Pagination Docs](https://developers.vendasta.com/platform/ZG9jOjEwMTkzMDg0-overview#paging).
name: page[limit]
security:
- OAuth2Demo:
- reviews
- OAuth2Prod:
- reviews
tags:
- Templates
x-lifecycle:
status: trustedTester
x-internal: false
options:
summary: List valid HTTP verbs for /reviewRequestTemplates
operationId: options-templates
responses:
'204':
description: No Content
description: Used solely for CORS the OPTIONS request returns the list of possible HTTP methods and other headers that browsers use to protect user's security. You should not call this operation directly.
tags:
- Templates
/reviewRequestTemplates/{id}:
parameters:
- schema:
type: string
name: id
in: path
required: true
security:
- OAuth2Demo:
- reviews
- OAuth2Prod:
- reviews
get:
summary: Get Template
tags:
- Templates
responses:
'200':
description: OK
content:
application/vnd.api+json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/reviewRequestTemplates'
links:
type: object
properties:
self:
type: string
operationId: get-templates-id
x-lifecycle:
status: trustedTester
description: 'Status: `Trusted Tester`
Fetch the current values for the specified template.'
parameters:
- schema:
type: string
example: Bearer <Access Token>
pattern: ^Bearer\s\S+
in: header
name: Authorization
description: A Bearer access token to identify the user the app is acting on behalf of. See the Authorization guide for details.
required: true
delete:
summary: Delete Template
tags:
- Templates
responses:
'204':
description: No Content
operationId: delete-templates-id
x-lifecycle:
status: trustedTester
description: 'Status: `Trusted Tester`
Delete the specified template.'
parameters:
- schema:
type: string
example: Bearer <Access Token>
pattern: ^Bearer\s\S+
in: header
name: Authorization
description: A Bearer access token to identify the user the app is acting on behalf of. See the Authorization guide for details.
required: true
security:
- OAuth2Demo:
- reviews
- OAuth2Prod:
- reviews
patch:
summary: Update Template
operationId: patch-templates-id
tags:
- Templates
description: 'Status: `Trusted Tester`
Update the existing template.
Only the root ID and type fields are required. All others are optional and will keep their original value if omitted.'
x-lifecycle:
status: trustedTester
parameters:
- schema:
type: string
example: Bearer <Access Token>
pattern: ^Bearer\s\S+
in: header
name: Authorization
description: A Bearer access token to identify the user the app is acting on behalf of. See the Authorization guide for details.
required: true
- schema:
type: string
default: application/vnd.api+json
enum:
- application/vnd.api+json
in: header
name: Content-Type
required: true
description: Indicates the format of the request body being sent. In most cases you will want `application/vnd.api+json`
security:
- OAuth2Demo:
- reviews
- OAuth2Prod:
- reviews
responses:
'200':
description: Ok
content:
application/vnd.api+json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/reviewRequestTemplates'
links:
type: object
properties:
self:
type: string
format: uri
description: The address of the updated template
headers: {}
requestBody:
content:
application/vnd.api+json:
schema:
type: object
properties:
data:
$ref: '#/components/schemas/reviewRequestTemplates'
options:
summary: List valid HTTP verbs for /reviewRequestTemplates/{id}
operationId: options-templates-id
description: Used solely for CORS the OPTIONS request returns the list of possible HTTP methods and other headers that browsers use to protect user's security. You should not call this operation directly.
responses:
'204':
description: No Content
tags:
- Templates
components:
schemas:
reviewRequestTemplates:
title: Templates
description: '[Status](https://developers.vendasta.com/platform/ZG9jOjEwMTU2NTYy-versioning): `Trusted Tester`
Templates that can be used for emails and other messaging services.'
type: object
x-examples:
Example Template:
type: reviewRequestTemplates
id: AG-12345/type/email/template-id/TEM-12345
attributes:
name: My Preferred Sites Review Request
content: 'Hi {{.customerName}},
<br>
<br>
Thank you for your business! We''d love to know more about your latest experience with us.
<br>
<br>
{{.buttonUrl}}
<br>
<br>
Thank you,
<br>
John Doe'
emailMetadata:
attributes:
subject: Thank you for choosing us!
replyEmail: jondoe@mail.com
languageLocaleCode: en-US
type: email
relationships:
businessLocation:
data:
id: AG-12345
x-lifecycle:
status: trustedTester
x-tags:
- Templates
properties:
id:
type: string
example: AG-12345/type/email/template-id/TEM-12345
readOnly: true
type:
type: string
default: reviewRequestTemplates
enum:
- reviewRequestTemplates
readOnly: true
attributes:
type: object
properties:
name:
type: string
description: A user friendly description for the template.
example: My Preferred Sites Review Request
emailMetadata:
type: object
description: Additional information about the template.
properties:
subject:
type: string
description: The subject line of the email.
example: Thank you for choosing us!
replyTo:
type: string
description: The email address to which the customer should reply.
example: jondoe@mail.com
format: email
smsMetadata:
type: object
description: Additional information about the template.
properties:
url:
type: string
description: The url that will customer will be sent to.
example: https://www.yoursite.com/reviews/customer-123
format: uri
greeting:
type: string
description: The sms message prefix. `{first_name}` is an optional template variable that can be used within the greeting.
example: Hi {first_name}
prefix:
type: string
description: Generally a shortened version of the company name.
templateType:
type: string
enum:
- myListing
- preferredReviewSites
- custom
description: '- `myListing`: The link within the sms message will direct the customer to the my listing page.
- `preferredReviewSites`: The link within the sms message will direct the customer to the preferred review sites.
- `custom`: The link within the sms message will direct the customer to the custom url configured within the metadata.'
content:
type: string
description: The content of the template.
example: 'Hi {{.customerName}},
<br>
<br>
Thank you for your business! We''d love to know more about your latest experience with us.
<br>
<br>
{{.buttonUrl}}
<br>
<br>
Thank you,
<br>
John Doe'
languageLocaleCode:
type: string
pattern: ^[a-z]{2}-[A-Z]{2}$
example: en-US
description: 'The local language that the template was written in.
Note: We currently have a limited set of allowed languages but expect to support many more in the future. When the requested language is not supported US English will be used.
It should be a single BCP47/RFC5646 language tag. This is an [ISO 639-1 Alpha-2](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) language code in lowercase and an [ISO 3166-1 Alpha-2](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes) country code in uppercase, separated by a dash.
Examples:
- `en-US` English (US)
- `fr-FR` French (France)'
templateType:
type: string
enum:
- email
- sms
description: The type of the template.
example: email
relationships:
type: object
properties:
businessLocation:
type: object
properties:
data:
type: object
properties:
id:
type: string
minLength: 1
description: The ID of the business location the template belongs to.
type:
type: string
default: businessLocation
enum:
- businessLocation
readOnly: true
required:
- id
securitySchemes:
JWT:
type: http
scheme: bearer
bearerFormat: JWT
OAuth2Demo:
type: oauth2
flows:
authorizationCode:
authorizationUrl: https://sso-api-demo.apigateway.co/oauth2/auth
tokenUrl: https://sso-api-demo.apigateway.co/oauth2/token
scopes:
reviews: Read-write access to review request APIs
OAuth2Prod:
type: oauth2
flows:
authorizationCode:
authorizationUrl: https://sso-api-prod.apigateway.co/oauth2/auth
tokenUrl: https://sso-api-prod.apigateway.co/oauth2/token
scopes:
reviews: Read-write access to review request APIs