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
Effective URL: https://documentation.synthetix.com/
Submission: On September 25 via api from DE — Scanned from DE
Form analysis
0 forms found in the DOMText 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.