documentation.synthetix.com Open in urlscan Pro
52.71.47.67  Public Scan

Submitted URL: http://api.synthetix.com/
Effective URL: https://documentation.synthetix.com/
Submission: On September 25 via api from DE — Scanned from DE

Form analysis 0 forms found in the DOM

Text Content

Public


Documentation Settings

ENVIRONMENT
No Environment

LAYOUT
Double Column

LANGUAGE
cURL - cURL



Synthetix API Documentation
Introduction
Overview
Getting Started
Whitelisting
Session Management
Rate Limiting
Webhooks
Penetration Testing Policy
Use Cases
Website Widgets
Channel Codes
Error Codes
Support
Restrictions and Limitations
Terms of Service
environment
external
helper
metrics
internal
livechat


SYNTHETIX API DOCUMENTATION

Welcome to the Synthetix API documentation. Synthetix is a leading provider of
SaaS Business to Business customer service software. Our platform offers a
complete online customer service solution, combining automated and
agent-assisted Customer Experience (CX) channels to revolutionize the way
businesses interact with their customers.

Our API provides developers with the tools to integrate our services into their
own applications, allowing for seamless access to our features such as real-time
messaging, knowledge base, and chatbot capabilities. This enables businesses to
boost their customer service efficiency by up to 20%, delivering a superior
customer experience.

Whether you're looking to integrate our services into your existing systems,
develop new applications, or simply explore the possibilities of our platform,
this documentation will guide you through the process. It includes detailed
explanations of our endpoints, example requests and responses, and
troubleshooting tips.

We're committed to helping you make the most of our API, and we're always here
to help if you have any questions or run into any issues. Let's get started!


OVERVIEW

The Synthetix Application Programming Interface (API) is a REST-based platform
with predictable, resource-oriented URLs, and uses standard HTTP responses to
indicate API errors. We support cross-origin resource sharing, enabling you to
interact securely with our API from a client-side web application. All API
responses are returned in JSON format.

This document provides comprehensive information about the functionality,
standards, and rules of engagement for using the Synthetix API. Please make sure
to read and understand this information before you begin integrating with our
API.


GETTING STARTED

The following sections provide detailed information about how to start using the
Synthetix API, including acquiring and using API keys, setting up and managing
service accounts, and other important procedures.


ACQUIRING API KEYS

API keys, designated as APPLICATIONKEY and CONSUMERKEY, are essential for
authentication and resource access. These keys are accessible solely to
registered and authorised businesses and users, and are linked to a default view
of your knowledge base and product assortment.

UNDERSTANDING APPLICATION KEY AND CONSUMER KEY

   

 * Application Key (APPLICATIONKEY): This key serves as the identifier for the
   application making the request to the Synthetix API. It is crucial for
   tracking and managing the interactions between your application and
   Synthetix’s resources. The APPLICATIONKEY is unique to each application and
   helps ensure that the requests are routed correctly and that the application
   adheres to the permissions and limitations set forth by Synthetix.

   

 * Consumer Key (CONSUMERKEY): A consumer, in this context, is a client of
   Synthetix. The CONSUMERKEY is tied to the consumer and identifies the
   consumer to Synthetix when requests are made. This key helps Synthetix to
   verify the identity of the consumer and to ensure that the consumer has the
   necessary permissions to access or modify the resources requested.

   

It's crucial that each application has its own application key, uniquely
configured for its specific purpose. Using keys intended for another
application, or reusing keys provided for your Synthetix.cloud application or
your website's hosted application, is strictly prohibited.

To obtain a set of API keys, you should contact your Synthetix Account Manager
with a written request. This request must include a detailed description of what
the application is intended for, as well as a name and a description for your
keys, which will be stored against them for easy identification. In addition,
you must acknowledge that you agree with the terms of use of the Synthetix API,
as outlined in this documentation. Failure to adhere to these terms may result
in your keys being banned and may result in your API access being revoked.

API keys must be included in the HTTP header for authentication when using the
API.

json


{
  "APPLICATIONKEY": "your-application-key",
  "CONSUMERKEY": "your-consumer-key"
}


USING SERVICE ACCOUNTS

For any user accounts being used by the API programmatically, it's recommended
to use service accounts rather than standard user accounts. This offers a higher
level of security and control over API access. For more information on setting
up service accounts, please contact your account manager.


API ENVIRONMENTS

Synthetix provides various environments for different stages of application
development and testing. By default, any application that has not undergone a
review will only have access to the Sandbox environment. Once your application
passes a review, access to the Production environment will be granted. Below are
the details of each environment:


1. PRODUCTION ENVIRONMENT

   

 * URL: https://api.synthetix.com

   

 * Description: The Production environment is the live environment that uses
   real, operational data. This environment should be used for applications that
   have been fully developed, tested, and reviewed.

   

 * Access: Granted following a successful review of the application. This
   environment should be used with caution as it affects real-world data and
   user interactions.

   


2. STAGING ENVIRONMENT

   

 * URL: https://apistaging.synthetix.com

   

 * Description: The Staging environment is a close replica of the Production
   environment, using cloned databases. It is primarily used for final testing
   before deploying to Production.

   

 * Access: This environment is ideal for pre-production testing, allowing
   developers to validate their application in a setting that closely mirrors
   the actual Production environment.

   


3. SANDBOX ENVIRONMENT

   

 * URL: https://apisandbox.synthetix.com

   

 * Description: The Sandbox environment is a safe and isolated environment for
   development and penetration testing. It uses cloned databases and is
   completely separate from the Production environment.

   

 * Access: Automatically available to all applications. This environment is
   recommended for initial development, testing, and ongoing experimentation. It
   provides a risk-free setting to try new features or conduct security tests.

   


ENVIRONMENT USAGE GUIDELINES

   

 * Initial Development: Start with the Sandbox environment to develop and test
   your application.

   

 * Testing and Validation: Move to the Staging environment for final testing
   once your application is stable and ready for a pre-production review.

   

 * Production Deployment: After successful review and testing, use the
   Production environment for your live application.

   

Remember to handle each environment with the appropriate level of caution and
consideration, especially when dealing with real user data in the Production
environment. Regularly review and update your application's access to ensure
compliance with Synthetix's security standards and best practices.


APPLICATION REVIEW PROCESS

To ensure the proper integration and usage of the Synthetix API, we have
implemented an application review process. This process involves a code review
conducted by a Synthetix developer, aimed at evaluating the functionality,
logic, and adherence to best practices within your application. Please follow
the steps below to initiate the application review:

   

 * Contact your Account Manager: Reach out to your Synthetix Account Manager to
   express your interest in scheduling an application review. They will guide
   you through the process and provide further instructions.

   

 * Purpose Overview: During the review, provide an overview of your
   application's purpose. Explain its intended functionality, the target
   audience, and how it will interact with the Synthetix API. This will help the
   developer gain a comprehensive understanding of your application's
   objectives.

   

 * Demonstration of API Usage: Prepare a demonstration of how your application
   interacts with the Synthetix API. You can present your source code or pseudo
   code, highlighting the key integration points. Walk through the code and
   explain the logic and data flow related to Synthetix API access. This
   demonstration will assist the developer in assessing the implementation and
   identifying any areas for improvement.

   

 * Examination of Logic: The Synthetix developer will carefully examine and
   analyze the sections of your code where interactions with the Synthetix API
   occur. They will assess the adherence to best practices, efficiency, error
   handling, and security measures. Be prepared to discuss the decision-making
   process and rationale behind the integration logic.

   

 * Live Network Requests: During the review, the developer may request to
   observe live network requests made by your application to Synthetix servers.
   This allows them to verify the data exchange, identify any potential issues
   or performance bottlenecks, and offer suggestions for optimization.

   

> Important: To ensure a controlled environment and maintain the stability and
> security of our production environment, it is crucial to perform all
> development and testing exclusively on the Sandbox environment. Only after
> your application has been thoroughly reviewed, approved, and signed off by the
> Synthetix developer, should it be used in our production environment to handle
> live production-level traffic.

By following this application review process, we can ensure that your
application integrates smoothly with the Synthetix API, meets our quality
standards, and provides a reliable experience for your users.


UNUSED APPLICATION/API KEY POLICY

PURPOSE

To maintain the security and efficiency of our API services, Synthetix
implements a policy for the management of unused API keys. This policy outlines
the procedures for deactivating and potentially deleting API keys that remain
inactive for an extended period.

SCOPE

This policy applies to all API keys issued by Synthetix and is intended to
prevent security vulnerabilities and optimize system performance.

DEACTIVATION OF UNUSED API KEYS

   

 * Monitoring and Identification: Synthetix monitors the activity of all issued
   API keys. API keys that have not been used for more than 90 days are
   identified as inactive.

   

 * Temporary Deactivation: Inactive API keys are automatically disabled.
   Business and Key owners and will be notified and given instructions on how to
   request reactivation.

   

REACTIVATION OF API KEYS

   

 * Request Process: Users whose API keys have been deactivated can request
   reactivation by submitting a support ticket under the category "API &
   Applications". The subject of the ticket should be "Reverse auto key disable"
   followed by the API key in question.

   

 * Assessment and Reactivation: The support team will assess the reactivation
   request. If approved, the API key will be reactivated.

   

DELETION OF INACTIVE API KEYS

   

 * Deletion Warning: Key holders will receive a final notice if their API key
   remains inactive and unreactivated by the specified deadline.

   

 * Permanent Deletion: If no action is taken by the deadline, the API key and
   any associated application data will be permanently deleted from our systems.

   

COMPLIANCE AND SECURITY

This process is conducted in compliance with our data security protocols and
privacy standards, ensuring the protection and integrity of user data and system
resources.


WHITELISTING

While it is not mandatory to whitelist IPs, it is highly recommended as a
crucial security measure. Whitelisting allows you to specify which IP addresses,
IP ranges, or fully qualified domain names (FQDNs) are permitted to access your
API keys. By implementing whitelisting, you can control and restrict access to
your API, enhancing security and protecting your sensitive data.

There are two approaches to configuring whitelisting:

   

 * Specific IP Addresses or Domains:
   You can provide a list of specific IP addresses or FQDNs that are authorized
   to access your API keys. To set up this type of whitelisting, please raise a
   support ticket and include the complete list of additonal allowed IPs or
   domains. Once added to the whitelist, only the specified IPs or domains will
   have access, while all others will be automatically blocked.

   

 * Wildcard (*) Whitelisting (Caution advised):
   As an alternative, you have the option to use a wildcard (*) to allow anyone
   with the application and consumer key unrestricted access to your API.
   However, this approach poses potential security risks and should be used with
   extreme caution. If you decide to proceed with wildcard whitelisting, kindly
   document the rationale behind it when raising the support ticket, and we will
   implement it accordingly.

   

It's important to note that when configuring whitelisting, you can also include
IP ranges (CIDR notation) for added flexibility. For example, you can whitelist
an entire range of IP addresses like 192.168.1.1/32.

Please ensure that all relevant IP addresses and domains your application may
use are included in the whitelist. Any changes made to the whitelist may take
upto an hour to propagate and take effect.

In the event of a security breach or suspected unauthorized access, it is
crucial to act promptly. Immediately rotate your API keys and update the
whitelist accordingly. Additionally, notify your account manager as soon as
possible in such cases. They can provide guidance, investigate the situation,
and assist you in mitigating potential risks or damages.

If you have any questions or concerns about setting up IP or domain
whitelisting, please don't hesitate to contact support. We are dedicated to
helping you ensure that your API usage remains secure.


SESSION MANAGEMENT

To access and authenticate API requests, we use an Authorization header with a
bearer token. The bearer token is a temporary token generated from the profile
or session endpoints, and it must be used in conjunction with the application
and consumer keys. Please note that we do not utilize OAuth for authentication.


OBTAINING A BEARER TOKEN

To obtain a bearer token, you need to make a request to the profile or session
endpoints using your application and consumer keys. This request will
authenticate and authorize your session, generating a temporary bearer token
that grants access to the API for that specific session.

It's important to note that bearer tokens are temporary and specific to each
session. They provide a level of security and control by limiting the access and
lifespan of each token.


INCLUDING THE BEARER TOKEN IN THE AUTHORIZATION HEADER

Once you have obtained a bearer token, you need to include it in the
Authorization header of your API requests. The header should follow the format:

Authorization: Bearer SAMPLE_TOKEN

Replace SAMPLE_TOKEN with the actual bearer token generated for your session.


PROTECTING AND SECURING BEARER TOKENS

Bearer tokens are sensitive information and should be handled securely. Treat
bearer tokens with the same level of confidentiality and protection as you would
with any other sensitive credential. It's essential to keep bearer tokens secure
and avoid exposing them to unauthorized individuals or publicly accessible
locations.

Do not include bearer tokens in URLs, query parameters, or other easily
accessible locations, as they can be intercepted or compromised. Always use the
Authorization header to transmit bearer tokens securely.


INCLUDING THE USER AGENT HEADER

To ensure the security and integrity of our API, all API requests must include a
User-Agent header. We have rules configured on our Web Application Firewall
(WAF) that will automatically ban requests lacking a User-Agent string.


WHY IS THE USER-AGENT HEADER REQUIRED?

The User-Agent header serves several purposes related to security and
protection:

   

 * Identification: The User-Agent string helps us identify the nature of the
   requests, whether they are coming from a web browser, a mobile application,
   or another type of client.

   

 * Security Measures: The User-Agent string allows us to implement advanced
   security rules and measures. For instance, we may restrict certain types of
   clients or versions from accessing our API based on the User-Agent.

   

 * Protection Against Abuse: Automated bots and malicious actors often omit the
   User-Agent string to disguise their requests. By requiring a User-Agent, we
   add an extra layer of security that can filter out potentially harmful
   activity.

   


HOW TO INCLUDE THE USER-AGENT HEADER

When making an API request, include the User-Agent header like so:

php


User-Agent: YourAppName/1.0

Replace YourAppName/1.0 with a string that appropriately identifies your
application and its version.

Failure to include a User-Agent header may result in your request being
automatically banned by our WAF, so it's crucial that you implement this in all
your API requests.

If you have any questions or require further clarification about the User-Agent
header requirement, please don't hesitate to contact our support team. We are
committed to ensuring that your experience with our API is both secure and
efficient.


SESSION EXPIRY AND RENEWAL

Bearer tokens have a limited lifespan and are valid only for the duration of the
session for which they were generated. The session lengths for different types
of sessions are as follows:

   

 * External Session Length: 2 hours

   

 * Internal Session Length (Generic): 1 hour

   

 * Internal Session Length (Metrics): 6 hours

   

Once a session expires, the bearer token becomes invalid, and you will need to
obtain a new token by re-authenticating with the profile or session endpoints.

It's important to manage and track session expiry to ensure uninterrupted access
to the API. You may need to implement mechanisms to handle session renewal or
prompt users to re-authenticate when their session expires.

By using bearer tokens in the Authorization header and following the guidelines
mentioned above, you can securely authenticate your API requests and ensure
controlled access to the API resources within the context of each session.


RATE LIMITING

To ensure the stability and performance of our API, we have implemented rate
limiting based on our Web Application Firewall (WAF). The rate limiting is
applied to the aggregation of requests originating from a specific source IP
address. This means that the total number of requests from a single IP address
is limited within a specific timeframe.


RATE LIMIT DETAILS

   

 * Rate limit: 5,000 requests

   

 * Timeframe: 5 minutes

   

The rate limit signifies the maximum number of requests allowed from a single
source IP address within a five-minute timeframe. Once the rate limit is
reached, further requests from that IP address will be temporarily delayed or
denied until the rate limit resets.


SCOPE OF INSPECTION AND RATE LIMITING

Our rate limiting mechanism considers all requests originating from a specific
IP address. This includes requests made to any endpoint or resource within the
API. Therefore, it's important to ensure that your application adheres to the
rate limit to prevent disruptions in API access.

Please note that rate limiting is implemented to maintain the stability and fair
usage of our API resources. If you find that your application consistently
exceeds the rate limit, we recommend optimizing your API usage or contacting our
support team to discuss potential solutions.

> Note: The rate limit values mentioned above are subject to change. We will
> notify you in case of any adjustments to the rate limiting thresholds.


WEBHOOKS

Webhooks are a powerful feature that enables your application to receive
real-time notifications and take action when specific event codes are triggered
within the Synthetix system. They provide a simple way to connect your
application with the API and react to events as they occur, rather than
continuously polling for updates.

> Note: Please note that this section is incomplete, and more event codes will
> be added in the future.


WEBHOOK EVENT CODES

The following table lists the currently available event codes, their
descriptions, and potential use cases:

View More

Event Code Description Use case 605 New live chat requested When a chat enters
the queue, request data from a third-party system 606 Live chat accepted by
agent Send a notification to the user that an agent has accepted their chat 604
Live chat ended Generate a chat summary or store the chat transcript 609 Live
chat abandoned Notify administrators or agents of abandoned chat opportunities
628 Live chat missed Notify administrators or agents of missed chat
opportunities 611 Agent feedback left on live chat This can be used to send
agent feedback and transcription data following a chat 619 Customer left
feedback on live chat Update customer satisfaction metrics or notify support
team members

To effectively use webhooks in your application, you'll need to configure them
according to your specific requirements and ensure that your application listens
for the specified events. This will enable your application to respond to these
events in real-time, enhancing overall system efficiency and user experience.


SETTING UP WEBHOOKS

   

 * Identify the event codes your application needs to respond to, as listed in
   the table above.

   

 * Implement a listener within your application to handle incoming webhook
   notifications. This listener should be an endpoint that can process incoming
   HTTP requests, typically a POST request containing the event data.

   

 * Liase with your account manager to setup the webhooks, specifying the event
   codes you want to receive notifications for and the URL of your listener
   endpoint.

   

 * Test the webhook integration by triggering the corresponding events in the
   Synthetix system and confirming that your application receives the
   notifications and processes them correctly.

   


HANDLING WEBHOOK NOTIFICATIONS

When your listener receives a webhook notification, it should process the event
data and take the appropriate action based on the event code. For example, if
the event code is 605 (New live chat requested), your application might fetch
additional data from a third-party system and display it to the agent handling
the chat.

It is essential to implement appropriate error handling and logging mechanisms
within your listener, as the webhook notifications may occasionally encounter
issues such as network errors, timeouts, or malformed data.


SECURING WEBHOOKS

To ensure the security and integrity of your webhook integration, you should
take the following precautions:

   

 * Use HTTPS for your listener endpoint to encrypt the data transmitted between
   the Synthetix system and your application.

   

 * Validate the incoming requests to confirm they originate from the Synthetix
   system. You can do this by checking the request headers, or implementing a
   shared secret for authentication.

   

 * Limit the scope of the API keys used for webhook integration to minimize
   potential damage if the keys are compromised.

   

 * Additionally, Synthetix offers a static IP service for an enhanced layer of
   security. When enabled, all webhooks will originate from a dedicated IP
   address, allowing you to whitelist this IP address in your firewall or
   security settings. This feature ensures that only traffic from the Synthetix
   system can reach your endpoint, further safeguarding your integration. Please
   note that this is a premium feature and comes at an additional cost. It can
   be enabled in the add-ons section of your account or by speaking to your
   account manager.

   

By incorporating webhooks into your application, you can create a more
responsive, efficient, and user-friendly system that seamlessly integrates with
the Synthetix API.


USING VARIABLES IN WEBHOOKS AND THROUGHOUT THE SYSTEM

Variables in webhooks provide a dynamic way to personalize and automate
responses based on specific user data and system information. They act as
placeholders that are replaced with actual values when the webhook is triggered.
Below is a list of default placeholders and their descriptions:

   

 * {{INPUT}} - Represents all user input.

   

 * {{OUTPUT}} - Contains all output from the API.

   

 * {{SALUTATION}} - Generates a greeting based on the current time (e.g.,
   'Morning', 'Afternoon', 'Evening').

   

 * {{EMAIL}} - The user's email address.

   

 * {{nickname}} - The user's nickname.

   

 * {{firstname}} - The user's first name.

   

 * {{NAME}} - The user's full name.

   

 * {{USERNAME}} - The user's username.

   

 * {{USERID}} - The user's ID.

   

 * {{UNIQREF}} - A unique reference for the queue entity.

   

 * {{ CONSUMERKEY}} - A specific key associated with the consumer.

   

 * {{ APPLICATIONKEY}} - A key associated with the application.

   

 * {{SESSION}} - The current session identifier.

   

 * {{YEAR}}, {{MONTH}}, {{DAY}} - Current year, month, and day, respectively.

   

 * {{DATE}} - The current date.

   

 * {{ISO8601}} - The current date and time in ISO 8601 format.

   

 * {{TIME12}} - The current time in 12-hour format.

   

 * {{TIME24}} - The current time in 24-hour format.

   

 * {{TIMESTAMP}} - A timestamp of the current moment.

   

These variables can be used within your webhook payload to tailor the response
based on the context of the event and the user involved. For example, you can
use {{NAME}} in a message template to automatically insert the user's name.


PENETRATION TESTING POLICY


INTRODUCTION

This policy governs the conduct of penetration testing within Synthetix systems.
Penetration testing is an essential practice intended to identify and resolve
security vulnerabilities. This policy is designed to ensure that all penetration
testing activities are performed safely, legally, and without disrupting the
operational integrity of Synthetix systems.


PERMITTED TESTING ENVIRONMENT

Important Note: All penetration testing activities must be confined exclusively
to the designated sandbox environment. Engaging in testing activities outside of
this specified environment is strictly prohibited and will be considered a
malicious attack against Synthetix systems. Violations of this policy may result
in financial penalties and further legal action. Please ensure that all
penetration testing is conducted responsibly and in accordance with this policy
to avoid any unintended liabilities.

   
 * Sandbox Environment URL: https://apisandbox.synthetix.com
   


TEST AUTHORIZATION PROCEDURE

To conduct penetration testing, the following steps must be followed:

   

 * Request Access: File a request through our support system including:
   
     
   
   * Objective of the test
   
     
   
   * Scope of the test
   
     
   
   * Testing methods
   
     
   
   * Start and end dates
   
     
   
   * IP addresses used for testing
   
     
   
   * Testing tools and software
   
     
   
   * Personnel involved
   
     
   
   * Data handling procedures
   
     
   
   * Communication plan
   
     
   

 * Approval: Await confirmation and access credentials from the Synthetix
   security team.

   

 * Credentials Access:
   
     
   
   * Agent Side URL: https://pentest_sandbox.synthetix.cloud/sandbox/
   
     
   
   * Customer Side URL:
     https://cdn.synthetix.com/synthetixjs/sandbox/pentest/index.html?synthetix=/home
   
     
   
   * Username, Password, and MFA Secret/QR are provided upon request approval.
   
     
   


RESTRICTIONS AND PROHIBITED ACTIONS

During penetration testing, the following actions are prohibited:

   

 * Load Testing: No tests that degrade performance or availability.

   

 * Brute Forcing: No brute force attacks on authentication mechanisms.

   

 * Physical Security Testing: No testing involving physical security or
   personnel interaction.

   

 * Out-of-Scope Attacks: Do not target systems or assets outside the agreed
   scope.

   

 * Third-Party Services and Integrations: Do not test third-party services
   unless explicitly included in the scope.

   

 * Modification or Deletion of Data: Do not alter or delete data within the
   sandbox.

   

 * Use of High-Risk Exploits: Avoid exploits that could cause harm or
   irreversible changes.

   

 * Social Engineering: No testing involving deception of Synthetix employees or
   partners.

   

 * Automated Scanning: Automated tools must be configured to avoid excessive
   load.

   


TEST REPORTING

Post-testing, submit a detailed report to the Synthetix security team including:

   

 * An executive summary of findings

   

 * Detailed descriptions of vulnerabilities

   

 * Mitigation recommendations

   

 * Raw outputs and proofs-of-concept

   


COMPLIANCE AND ETHICAL CONSIDERATIONS

Testers must adhere to all legal requirements and conduct testing ethically and
professionally. This includes respecting the privacy and security of all data
and systems.


CONTACT INFORMATION

For questions or to submit testing results, contact our support team through the
official ticket system and update your original ticket if applicable.


USE CASES


BULK TRANSCRIPT DOWNLOADING

If you need to download a large number of live chat transcripts from the
Synthetix platform in bulk, you can follow this flow to achieve that:

   

 * Establish an HTTP client to communicate with the Synthetix API.

   

 * Implement the login functionality by sending a POST request to the login
   endpoint (https://api{environment}.synthetix.com/2.0/internal/session) with
   the necessary headers and form data (username and password ).

   

 * Upon successful login, retrieve the bearer token from the response.

   

 * Use the obtained bearer token and required headers (APPLICATIONKEY and
   CONSUMERKEY) to authenticate subsequent API requests.

   

 * Send a GET request to the chat IDs endpoint
   (https://api{environment}.synthetix.com/2.0/internal/chatids) with the
   desired parameters, such as start and end dates, to fetch the chat IDs.

   

 * Process the response to obtain the list of chat IDs.

   

 * Initialize a loop to iterate over each chat ID retrieved in step 6.

   

 * For each chat ID, send a POST request to the details endpoint
   (https://api{environment}.synthetix.com/2.0/livechat/details) with the chat
   ID in the request payload to retrieve the chat details.

   

 * Handle the response and save the chat details, such as the JSON response or
   the text content, to the desired location, such as a local file or a
   database.

   

 * Repeat the loop for each chat ID until all transcripts have been downloaded.

   

Some general rules:

   

 * Your script should open a session first, obtain a list of all the required
   Chat IDs over your selected date range and then obtain transcripts for each
   of the chat IDs. There is no need to call Profile or Chatids for each call to
   Details – just open one session for all calls with Profile and make just one
   call to Chatids to obtain the list, following by multiple calls to Details.

   

 * Once you have written your script, please arrange a quick walkthrough with
   the Synthetix development team to approve your application for use. This will
   take the form of a short screenshare of your code, describing its function.

   

 * As your script will do hundreds of thousands of calls to the Details API,
   which performs quite a few database queries, we would ask you run it after
   9pm and to query no more than one month's worth of data in a session. The
   session duration is 6 hours. Response time for the Details API can be up to
   2.5 seconds and rate limiting will prevent you from submitting more than 10
   simultaneous requests, therefore it should be possible to obtain up to 14,400
   transcripts per hour. If you submit more than 10 simultaneous requests, an
   error code (158) will be returned by the request.

   

By following this flow and understanding the underlying logic, you can customize
and build your own application to interact with the Synthetix API and implement
specific functionalities based on your requirements.

Please note that the provided logic serves as a reference implementation, and
you should adapt it to suit your specific use case and application architecture.

> To see an unofficial application that uses this use case as an example, you
> can check out the Unofficial Synthetix Transcript Downloader on GitHub at
> https://github.com/HairyDuck/Synthetix-Transcript-Downloader.


DISPLAYING KNOWLEDGE FAQS AND ARTICLES NATIVLY ON YOUR WEBSITE OR APP

To display knowledge articles from the Synthetix platform on your website or app
for external users, you can follow this flow:


SESSION MANAGEMENT

You need a session token to access the Synthetix API. When you launch your
application, you should verify that your stored session token is still valid. If
it is no longer valid, or you have no previously stored session token, you need
to initialise a new session.

INITIALISE A SESSION

Send a POST request to
https://api{environment}.synthetix.com/2.0/external/session. Your request header
needs to include your APPLICATIONKEY and your CONSUMERKEY. If your api keys are
valid, the response will include a new session token.

VERIFIY AN EXISTING SESSION

Send a GET request to
https://api{environment}.synthetix.com/2.0/external/session. Your request header
needs to include your APPLICATIONKEY and your CONSUMERKEY. As Authorization, you
need to use your existing session token as a Bearer Token. If your session token
has expired, an error will be thrown.

All subsequent API calls will need to include the following request headers and
Authorization:

Plain Text


{
  "headers": {
    "APPLICATIONKEY": "{your application key}",
    "CONSUMERKEY": "{your consumer key}",
    "Authorization": "Bearer XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
  }
}


DISPLAYING POPULAR FAQS

You can get a list of the most popular FAQs by sending a GET request to
https://api{environment}.synthetix.com/2.0/external/all_faqs with the query
parameter ?pop=true. If pop is set to false, you will receive a list of FAQs
that are not sorted by popularity. Other params include limitno to set a limit
to the amount of FAQs returned, and limitdate to set a date range. Refer to the
official Synthetix API documentation for a list of all possible parameters and
their use cases, as well as up-to-date response formats.


SEARCH FUNCTIONALITY

To search for specific articles based on a search query, send a POST request to
https://api{environment}.synthetix.com/2.0/external/search. The following body
is required

Plain Text


{
  "body": {
    "query": "{Your search query}",
    "channel": 14, //{use channel 14 to search Knowledgebase}
    "userid": 1234 //{neccessary in external searches such as this}
  }
}

For optional body parameters and their use cases, as well as up-to-date response
formats, refer to the official Synthetix API documentation.


ARTICLE DISPLAY

To access individual articles, you will need the corresponding article label.

Send a POST request to
https://api{environment}.synthetix.com/2.0/external/article. The following body
is required:

Plain Text


{
  "body": {
    "label": "qedXXXXXX",
    "channel": 14,
    "userid": "XXXXXX"
  }
}

For optional body parameters and their use cases, as well as up-to-date response
formats, refer to the official Synthetix API documentation.


COLLECTING FEEDBACK

You can collect feedback for each article. Each feedback question and answer
cobination is represented by a unique ID that will be logged. A common feedback
question is "Did this answer your question?" with answer options being a thumb
up or a thumb down. Additional feedback text can also be captured.

Send a POST request to
https://api{environment}.synthetix.com/2.0/external/article_feedback. In the
request body, you need to send the label fo the corresponding article, the
feedback question/answer combo id via the feedback param, and, optionally, the
additionally captured feedback text.

Plain Text


{
  "body": {
    "label": "qedXXXXXX",
    "feedback": 3246,
    "text": "Great article"
  }
}

On successfull feedback, the response returns {"success": true}

Please note that the provided logic serves as a reference implementation, and
you should adapt it to suit your specific use case and application architecture.

> To see an unofficial application that uses this use case as an example, you
> can check out the synthetix-knowledge-app by Judith De Muijnck on GitHub at
> https://github.com/judithdemuijnck/synthetix-knowledge-app.


WEBSITE WIDGETS


PENFIELD


ADDING THE SCRIPT TO YOUR WEBSITE

Follow these instructions to add the Synthetix script to your website. Adhering
to these guidelines is crucial for ensuring proper functionality and avoiding
potential issues.


SCRIPT TO BE ADDED

Include the following script in your HTML:

View More
html


<script src="https://cdn.synthetix.com/penfield/get_synthetix.min.js?applicationkey=your-application-key&consumerkey=your-consumer-key"></script>


KEY GUIDELINES

1. LAST INCLUDED SCRIPT

Ensure that the Synthetix script is the last script included in your HTML or .
This is important to prevent conflicts with other scripts and ensure all
necessary resources are loaded before the Synthetix script executes.

EXAMPLE:

View More
html


<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Your Website</title>
    # Other script and link tags
    <script src="https://cdn.synthetix.com/penfield/get_synthetix.min.js?applicationkey=your-application-key&consumerkey=your-consumer-key"></script>
</head>
<body>
    # Your content
</body>
</html>

OR:

View More
html


<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Your Website</title>
</head>
<body>
    # Your content
    # Other script and link tags
    <script src="https://cdn.synthetix.com/penfield/get_synthetix.min.js?applicationkey=your-application-key&consumerkey=your-consumer-key"></script>
</body>
</html>

2. AVOID DYNAMIC INCLUSION

Do not dynamically add the Synthetix script using JavaScript. This can lead to
issues with script execution order and dependencies.

NOT RECOMMENDED:

View More
javascript


// Avoid this approach
var script = document.createElement('script');
script.src = "https://cdn.synthetix.com/penfield/get_synthetix.min.js?applicationkey=your-application-key&consumerkey=your-consumer-key";
document.head.appendChild(script);

3. AVOID MANUAL SYNTHETIX FUNCTION CALLS

Do not manually invoke any Synthetix functions. Incorrect implementation of
function calls or error handling can cause unexpected behaviour and disrupt your
website's functionality. Allow the script to manage its own function calls.

NOT RECOMMENDED:

javascript


// Avoid manual function calls like this
synthetix.someFunction();


SUMMARY

   

 * Include the Synthetix script as the last script in your HTML to prevent
   conflicts.

   

 * Avoid dynamically adding the Synthetix script using JavaScript.

   

 * Do not manually call any functions from the Synthetix library to prevent
   errors and ensure proper handling by the library itself.

   

By following these guidelines, you can seamlessly integrate the Synthetix script
into your website, ensuring smooth and reliable performance.


SYNTHETIXJS


ADDING THE SCRIPT TO YOUR WEBSITE

Instructions coming soon.


CHANNEL CODES

The different modalities of potential contact are designated 'channels'. In most
cases channel codes are not required, but for the avoidance of doubt channel
codes are as found below.

Channel Number Description Status 0 Live Chat Active 1 Callback Active 10
Facebook Active 14 Knowledge Active 15 IVA Active 16 Form Agent Active 17
Virtual Agent Active 99 Unknown Active


ERROR CODES

Our API uses standard HTTP status codes to indicate the success or failure of an
API request. In general, codes in the 2xx range indicate success, codes in the
4xx range indicate an error that resulted from the provided information (e.g. a
required parameter was missing, a charge failed, etc.), and codes in the 5xx
range indicate an error with our servers.

Here are some of the most common status codes you'll encounter:

   

 * 200 OK: The request was successful.

   

 * 201 Created: The request was successful, and a resource was created as a
   result.

   

 * 204 No Content: The request was successful, but there's no representation to
   return (i.e. the response is empty).

   

 * 400 Bad Request: The request could not be understood or was missing required
   parameters.

   

 * 401 Unauthorized: Authentication failed or was not provided.

   

 * 403 Forbidden: Authentication succeeded, but the authenticated user does not
   have access to the requested resource.

   

 * 404 Not Found: The requested resource could not be found.

   

 * 405 Method Not Allowed: The HTTP method used is not supported for the
   requested resource.

   

 * 406 Not Acceptable: The requested resource is capable of generating only
   content not acceptable according to the Accept headers sent in the request.

   

 * 426 Upgrade Required: The client should switch to a different protocol such
   as TLS/1.0.

   

 * 429 Too Many Requests: The user has sent too many requests in a given amount
   of time ("rate limiting").

   

 * 500 Internal Server Error: An error occurred with our servers. Please try
   again later or raise a support request

   

 * 503 Service Unavailable: The server is currently unavailable (because it is
   overloaded or down for maintenance). Generally, this is a temporary state.

   

If an error occurs, the API will return an error object. This object will
include a code (an internal error code unique to the error), a message (a
human-readable message explaining the error), and a field (the field in the
request that caused the error, if applicable).

View More

Error Code/Number Severity Description 'HTTP Status Code' 101 NOTICE NOT USING
HTTPS 443 426 (Upgrade Required) 102 INFO INVALID HEADERS 406 (Not Acceptable)
103 INFO API CALL QUOTA LIMIT EXCEEDED 406 (Not Acceptable) 104 INFO FORMAT
MISSING 200 (OK) 105 INFO INVALID FORMAT 405 (Method Not Allowed) 106 INFO
MISSING PARAMETER 200 (OK) 110 INFO APPLICATION OFFLINE 423 (Locked) 111 INFO
BAD ORIGIN IP 403 (Forbidden) 112 INFO TOKEN DOES NOT CONTAIN VALID SIGNATURE
200 (OK) 113 INFO TOKEN EXPIRED 401 (Unauthorized) 114 INFO INVALID TOKEN 401
(Unauthorized) 115 INFO INVALID IP 200 (OK) 117 INFO DATA NOT VALID 200 (OK) 124
CRITICAL FAILED TO CONNECT 503 (Service Unavailable) 128 INFO HTTP PUT METHOD
NOT AVAILABLE 405 (Method Not Allowed) 129 INFO HTTP HEAD METHOD NOT AVAILABLE
405 (Method Not Allowed) 130 INFO HTTP DELETE METHOD NOT AVAILABLE 405 (Method
Not Allowed) 131 INFO HTTP OPTIONS METHOD NOT AVAILABLE 405 (Method Not Allowed)
132 INFO HTTP GET METHOD NOT AVAILABLE 405 (Method Not Allowed) 133 INFO HTTP
OPTIONS POST NOT AVAILABLE 200 (OK) 134 INFO HTTP METHOD NOT ACCEPTED 405
(Method Not Allowed) 135 INFO MODE NOT RECOGNIZED 200 (OK) 136 INFO NO RESULTS
200 (OK) 137 CRITICAL CANNOT CONNECT 503 (Service Unavailable) 144 CRITICAL
CANNOT CONNECT 503 (Service Unavailable) 145 CRITICAL CANNOT CONNECT 503
(Service Unavailable) 146 INFO INVALID CHANNEL 501 (Not Implemented) 147 INFO
VOID ID 200 (OK) 148 INFO MISSING OR MALFORMED SKILL 200 (OK) 149 INFO INVALID
SKILL 200 (OK) 150 INFO INVALID VARIABLE 200 (OK) 151 INFO 3RD PARTY RETURNED
INVALID STATUS RESPONSE 200 (OK) 154 INFO NO DATA 200 (OK) 155 INFO CANNOT SET
3RD PARTY TIMEOUT 200 (OK) 156 INFO 3RD PARTY INTEGRATION SETTINGS INCOMPLETE
200 (OK) 157 INFO NO RESULTS 200 (OK) 158 INFO RATE LIMIT EXCEEDED 429 (Too Many
Requests) 159 INFO MALFORMED TIME RATE PARAMETER 200 (OK) 160 INFO 3RD PARTY
SESSION DOES NOT EXIST 200 (OK) 161 INFO 3RD PARTY ENVIRONMENT HAS A FAULT 200
(OK) 162 INFO NO RESULTS 200 (OK) 163 INFO NO SLA DATA 200 (OK) 164 INFO NO AUTO
RESPONDER 200 (OK) 165 INFO CATEGORY DOES NOT EXIST 200 (OK) 166 INFO CATEGORY
AND SUBCATEGORY ARE INCOMPATIBLE 200 (OK) 167 INFO CANNOT FIND GLOBAL PRESETS
200 (OK) 169 INFO INCOMPATIBLE PARAMETERS 200 (OK) 170 INFO NO ACCESS TO THIS
RESOURCE 403 (Forbidden) 171 INFO CANNOT CHANGE EXISTING EMAIL 200 (OK) 173 HIGH
CSRF SUSPECTED 200 (OK) 174 INFO ALREADY SUSPENDED 200 (OK) 175 INFO ALREADY
UNSUSPENDED 200 (OK) 177 INFO VOID TRIGGER ID 200 (OK) 179 INFO UNKNOWN
SUBDOMAIN 200 (OK) 180 INFO TEAM MATE INVALID 200 (OK) 181 INFO YOU ARE NOT A
PARTICIPANT IN THIS CONVERSATION 200 (OK) 182 INFO CHAT NOT ASSIGNED TO YOU 200
(OK) 183 INFO ERROR IN UPDATING OR ADDING AD IMPRESSIONS 200 (OK) 184 INFO
TRANSFER NOT AVAILABLE 200 (OK) 185 WARNING LOGGING FAILURE 200 (OK) 186 WARNING
CANNOT REMOVE OWNER 200 (OK) 187 INFO MURDER, DEATH, KILL. OR (INVALID
PARTICIPANT) 200 (OK) 188 HIGH DATABASE UPDATE ERROR 200 (OK) 189 INFO DUPLICATE
CATEGORIES IN KNOWLEDGE BASE 200 (OK) 190 INFO AGENT IS INACTIVE 200 (OK) 191
INFO TITLE DOES NOT MEET LIMIT REQUIRMENTS 200 (OK) 192 INFO INVITATION ALREADY
OFFERED 200 (OK) 193 INFO NO GOALS AVAILABLE 200 (OK) 194 INFO NO TOKEN OR
SESSION IN PAYLOAD 200 (OK) 195 INFO API DOES NOT EXIST 200 (OK) 196 INFO YOUR
SLOTS ARE FULL 200 (OK) 197 INFO PROBLEM WITH SUBMITTER 200 (OK) 198 INFO SKILL
NO LONGER ACTIVE 200 (OK) 201 INFO MISSING APPLICATION KEY 200 (OK) 202 INFO
MISSING CONSUMER KEY 200 (OK) 203 INFO ANTECEDING ENTITY IN QUEUE 200 (OK) 204
INFO NOT AUTHORISED 403 (Forbidden) 222 INFO NOT AUTHORISED 200 (OK) 223 NOTICE
YOU HAVE NO PERMISSIONS 200 (OK) 224 NOTICE AGENT HAS NO MODULES 200 (OK) 225
NOTICE ACCOUNT IS FROZEN 403 (Forbidden) 226 INFO USER SET AS LOGGED OUT 401
(Unauthorized) 227 INFO CANNOT RETURN TO QUEUE IF INVITATION STILL OUT 200 (OK)
228 HIGH ONGOING CHATS AND DB OUT OF SYNC 200 (OK) 229 INFO TICKET DOES NOT
EXIST 200 (OK) 230 INFO PERMISSION NOT SET 401 (Unauthorized) 231 INFO USERNAME
INVALID 200 (OK) 232 INFO USERNAME ALREADY TAKEN 200 (OK) 233 INFO EMAIL INVALID
200 (OK) 234 NOTICE USER DOES NOT BELONG TO THIS AGENT 200 (OK) 235 NOTICE NO
MFA METHOD 200 (OK) 236 INFO RESET SESSIONS 200 (OK) 237 NOTICE USER ID VOID 200
(OK) 238 INFO LABEL ID VOID 200 (OK) 239 INFO CHAT ALREADY COMPLETE 200 (OK) 240
INFO ONLY OWNERS CAN END CHATS 200 (OK) 241 INFO BAD SIGNATURE 200 (OK) 242 INFO
HISTORICAL API CANNOT BE USED FOR REALTIME DATA 200 (OK) 243 INFO INVALID SCORE
200 (OK) 244 INFO TRIGGER ID INVALID FOR TYPE 200 (OK) 245 INFO INVALID REASON
FOR SUSPENSION 200 (OK) 246 INFO PIPELINE NOT OWNED BY USER 200 (OK) 247 INFO
PIPELINE DOES NOT EXIST 200 (OK) 248 INFO NO BREADCRUMBS COLLECTED 200 (OK) 249
NOTICE INVALID USER ID FOR THIS ACTION 200 (OK) 250 INFO CALLBACK ID NOT
RECOGNISED 200 (OK) 251 INFO CALLBACK ALREADY COMPLETE 200 (OK) 252 INFO
CALLBACK CANCELLED 200 (OK) 253 INFO CALLBACK ALREADY FAILED 200 (OK) 254 INFO
CALLBACK SLOT BLOCKED OUT 200 (OK) 255 INFO CALLBACK STILL IN PROGRESS 200 (OK)
256 INFO CALLBACK EITHER NOT STARTED OR ALREADY COMPLETED 200 (OK) 257 INFO
CALLBACK NOT LOCKED 200 (OK) 258 INFO CANNOT UNSUSPEND WHILE CALLBACK ONGOING
200 (OK) 259 WARNING ENVIRONMENT NOT ENABLED FOR USE WITH THIS CONSUMER AND/OR
APPLICATION 200 (OK) 260 INFO UNDERGOING MAINTENANCE 503 (Service Unavailable)
261 CRITICAL WRITE DATABASE CONNECTION FAILED 503 (Service Unavailable) 262
CRITICAL READ DATABASE CONNECTION FAILED 503 (Service Unavailable) 263 CRITICAL
WRITE DATABASE CONNECTION TIMEEDOUT 503 (Service Unavailable) 264 CRITICAL READ
DATABASE CONNECTION TIMEOUT 503 (Service Unavailable) 265 WARNING NO CUSTOMER
FEEDBACK CONFIGURED 200 (OK) 266 INFO INVALID PAYMENTLINKREFERENCEID 200 (OK)
267 INFO EMPTY LOGIC EXPRESSION 200 (OK) 268 INFO EVALUATED LOGIC EXPRESSION
FAILED 200 (OK) 269 INFO SESSION OUT OF SCOPE 401 (Unauthorized) 303 INFO NO AD
DATA 200 (OK) 304 INFO NO AD DATA 200 (OK) 305 INFO NO KNOWLEDGE DATA 200 (OK)
306 INFO NO KNOWLEDGE DATA 200 (OK) 307 INFO NO KNOWLEDGE DATA 200 (OK) 309 INFO
INVALID VIEW 200 (OK) 310 INFO DATA NOT MODIFIED 304 (Not Modified) 311 INFO
INVALID DATE RANGE 200 (OK) 312 INFO MAGIC LINK EXPIRED OR INVALID 200 (OK) 313
INFO REACHED MAX DATA DOWNLOADS 200 (OK) 314 INFO STREAM LOG ERROR RETRYING 200
(OK) 403 INFO NOT AUTHORISED 403 (Forbidden)

(Expand to view the full list).


SUPPORT


SUPPORT POLICY FOR API IMPLEMENTATION

OVERVIEW

At Synthetix, we strive to provide comprehensive resources to assist you in
implementing our APIs effectively. Our documentation is designed to guide you
through integration and troubleshooting common issues independently.

SUPPORT SCOPE

We do not generally offer one-to-one support for API implementation. Users are
encouraged to utilize our extensive documentation for guidance and best
practices in implementing our APIs.

REPORTING GENUINE ISSUES

If you encounter a genuine issue with the API that goes beyond a typical
implementation error, we are here to help:

   
 * Issue Reporting: Please submit a detailed report of your issue through our
   support portal. Ensure that you include all relevant information such as
   error logs, API responses, and a clear description of the problem. This will
   help us in diagnosing and addressing the issue more efficiently.
   

SUPPORT PORTAL

   
 * Ticket Submission: All management and support operations are conducted
   through our dedicated support portal. This centralised system allows us to
   manage queries effectively and ensures that your issues are resolved
   promptly.
   

HOW TO RAISE A SUPPORT TICKET

   

 * Access the Portal: Visit your Synthetix.cloud portal and log in with your
   credentials or visit the support portal https://support.synthetix.com

   

 * Create a New Ticket: Select the option to create a new ticket and categorize
   it as an API & Applications.

   

 * Provide Details: Fill in the details of your issue, including steps to
   reproduce the problem, the impact it has on your operations, and any
   troubleshooting steps you have already attempted.

   

 * Submit the Ticket: Once completed, submit the ticket. Our support team will
   review your submission and get back to you as soon as possible.

   

ASSISTANCE EXPECTATIONS

Please note that our response time may vary depending on the complexity of the
issue and current ticket volume. We prioritize issues based on their severity
and impact.


RESTRICTIONS AND LIMITATIONS

While our API provides powerful functionality, there are certain restrictions
and limitations in place to ensure the overall performance, security, and fair
usage of our services. It's important to be aware of these restrictions to
effectively integrate and utilize our API. The following are the key
restrictions and limitations to consider:


1. RATE LIMITING

As mentioned in the Rate Limiting section, our API implements rate limiting to
prevent abuse and ensure fair usage of resources. The rate limit defines the
maximum number of requests allowed within a specific timeframe. Exceeding the
rate limit will result in temporary delays or denials of further requests until
the rate limit resets. Please refer to the Rate Limiting section for specific
details on rate limit values and implementation.


2. AUTHENTICATION AND ACCESS CONTROLS

To access our API, you are required to authenticate using valid credentials,
such as API keys or tokens. It's essential to keep your authentication
credentials secure and confidential. Additionally, access controls may be
enforced to limit certain operations or data based on user roles or permissions.
Make sure to follow the authentication guidelines provided in our API
documentation to ensure proper access and data protection.


3. DATA USAGE AND PRIVACY

When using our API, you must adhere to relevant data usage and privacy
regulations. Ensure that you have appropriate legal rights and permissions to
access and process any data provided through the API. It's your responsibility
to handle user data in compliance with applicable privacy laws and protect the
confidentiality and integrity of user information.


4. ACCEPTABLE USE POLICY

Our API has an acceptable use policy that defines the terms and conditions for
utilizing our services. You must comply with this policy, which may include
restrictions on prohibited activities, content, or usage patterns. Violations of
the acceptable use policy may result in temporary or permanent suspension of API
access privileges.


5. SERVICE LEVEL AGREEMENT (SLA)

While we strive to provide a reliable and high-performance API service, certain
factors beyond our control may impact service availability or performance. It's
important to review our Service Level Agreement (SLA) in your contract, if
applicable, which outlines the guaranteed uptime, response times, and support
commitments. The SLA will specify any compensation or remedies available in case
of service disruptions or performance degradation.


6. CHANGES AND UPDATES

Please note that the restrictions and limitations mentioned above are subject to
change. We may update these restrictions from time to time to improve our
services or address security concerns. It's recommended to stay updated with our
API documentation and any communications from us to ensure compliance with the
latest restrictions and limitations.

By understanding and adhering to these restrictions and limitations, you can
effectively utilize our API while ensuring the stability, security, and fair
usage of our services.


TERMS OF SERVICE

These Terms of Service ("Terms") govern your access to and use of the Synthetix
API ("API") provided by Synthetix Ltd. ("Synthetix", "we", "us" or "our"), a
company registered in the United Kingdom. By accessing or using the API, you
("Client", "you", or "your") agree to be bound by these Terms.

   

 * Access and Use
   
     
   
   * Access to the API is granted to Synthetix clients only.
   
     
   
   * You may not use the API for any purpose that is unlawful or prohibited by
     these Terms.
   
     
   
   * You shall not use the staging environment for production workloads. The
     staging environment is provided for testing purposes only
   
     
   
   * You are required to use the sandbox environment for development purposes.
   
     
   

 * Code Review and Production Access
   
     
   
   * Before gaining access to the production API, you must undergo a code review
     with a Synthetix developer. The developer will help ensure that your
     application is properly configured for the production environment.
   
     
   
   * Once the code review is completed and any necessary changes are made, you
     will be granted access to the production API.
   
     
   

 * Restrictions
   
     
   
   * You shall not sublicense, resell, transfer, or otherwise share your API
     access or API key with any third party.
   
     
   
   * You shall not use the API to create or promote any service that is
     competitive with Synthetix or any of its products or services.
   
     
   
   * You shall not use the API in any manner that could damage, disable,
     overburden, or impair Synthetix's systems or services.
   
     
   

 * Ownership and Intellectual Property
   
     
   
   * All rights, title, and interest in and to the API, including any and all
     intellectual property rights, are owned by Synthetix or its licensors.
   
     
   
   * You acknowledge that the API is provided under license, and not sold, to
     you. You do not acquire any ownership interest in the API under these
     Terms.
   
     
   

 * Termination
   
     
   
   * Synthetix may terminate or suspend your access to the API at any time and
     for any reason, including, but not limited to, your breach of these Terms.
   
     
   
   * Upon termination or suspension, you must immediately cease using the API
     and delete all copies of the API and related data in your possession or
     control.
   
     
   

 * API Modifications
   
     
   * Synthetix reserves the right to modify, update, or discontinue the API or
     any part thereof at any time without prior notice. You acknowledge and
     agree that Synthetix shall not be liable to you or any third party for any
     modification, suspension, or discontinuation of the API.
     
   

 * Compliance and API Key Revocation
   
     
   * Synthetix reserves the right to disable, revoke, or limit your API key at
     any time if you fail to comply with these Terms or if we suspect any
     unauthorized or inappropriate use of the API.
     
   

 * Governing Law
   These Terms shall be governed by and construed in accordance with the laws of
   the United Kingdom. Any disputes arising out of or in connection with these
   Terms shall be subject to the exclusive jurisdiction of the courts of the
   United Kingdom.

   

 * Amendments
   Synthetix reserves the right to modify these Terms at any time by providing
   notice on its website or through the API. Your continued use of the API
   following the posting of any changes to these Terms constitutes your
   acceptance of those changes.

   

 * Contact Information
   If you have any questions or concerns regarding these Terms or the API,
   please contact us at support@synthetix.com.

   

 * Compliance with Laws
   
     
   * You shall comply with all applicable laws, regulations, and rules of the
     United Kingdom and any other applicable jurisdiction in connection with
     your access to and use of the API. You shall also obtain all necessary
     consents, licenses, permits, or other authorizations required for your use
     of the API.
     
   

 * Privacy
   
     
   * Any personal information you provide to us in connection with your access
     to and use of the API will be processed in accordance with our Privacy
     Policy, which is available on our website or upon request. By using the
     API, you acknowledge and agree that you have read and understand our
     Privacy Policy and consent to the collection, use, and disclosure of your
     personal information as set forth therein.
     
   

 * Feedback
   
     
   * You may provide Synthetix with feedback, suggestions, or comments regarding
     the API ("Feedback"). You agree that any Feedback you provide is given
     voluntarily and without any expectation of compensation, and Synthetix may
     use or incorporate such Feedback into its products and services without
     restriction and without any obligation to you.
     
   

 * Support
   
     
   * Synthetix may provide you with limited support or updates for the API in
     its sole discretion. However, Synthetix is under no obligation to provide
     any support, upgrades, or updates, and it does not guarantee that any
     specific errors, defects, or performance issues will be corrected or
     resolved, unless otherwise stated within your support contract.