{"templateId":"../../../@theme/Templates/SideBySide.tsx","sharedDataIds":{"sidebar":"sidebar-docs/sdks/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["split","partial"]},"type":"markdown"},"seo":{"title":"Java SDK Reference Docs | Sinch","siteUrl":"https://developers.sinch.com","llmstxt":{"title":"Sinch Developer Documentation","description":"LLMs.txt containing a map of all the documentation files for Sinch.","sections":[{"title":"Numbers API","description":"The Numbers API enables you to search for, view, and activate numbers. It's considered a precursor to other APIs in the Sinch product family. The numbers API can be used in tandem with any of our APIs that perform messaging or calling.","includeFiles":["docs/numbers/**/*.md","docs/numbers/**/*.yaml"],"excludeFiles":["docs/numbers/index.md"]},{"title":"Conversation API","description":"Send and receive messages globally on many popular channels with ease and confidence when using Sinch's Conversation API. Conversation API is the preferred API for sending mobile messages on SMS and other social channels with Sinch. It is a simple API with unified error messages, consistent request payloads, and common webhook payloads that are channel-agnostic.","includeFiles":["docs/conversation/**/*.md","docs/conversation/**/*.yaml"],"excludeFiles":["docs/conversation/index.md"]},{"title":"Voice API","description":"The Voice API works as a big telephony switch. The Voice API handles incoming phone calls (also known as incoming call “legs”), sets up outgoing phone calls (or outgoing call “legs”), and bridges the two. The incoming call leg may come in over a data connection (from a smartphone or web application using the Sinch SDKs) or through a local phone number (from the PSTN network). Similarly, the outgoing call leg can be over data (to another smartphone or web application using the Sinch SDKs) or the PSTN network.","includeFiles":["docs/voice/**/*.md","docs/voice/**/*.yaml"],"excludeFiles":["docs/voice/index.md"]},{"title":"Voice API v2","description":"The Voice API works as a big telephony switch. The Voice API handles incoming phone calls (also known as incoming call “legs”), sets up outgoing phone calls (or outgoing call “legs”), and bridges the two. The incoming call leg may come in over a data connection (from a smartphone or web application using the Sinch SDKs) or through a local phone number (from the PSTN network). Similarly, the outgoing call leg can be over data (to another smartphone or web application using the Sinch SDKs) or the PSTN network.","includeFiles":["docs/voice-2.0/**/*.md","docs/voice-2.0/**/*.yaml"],"excludeFiles":["docs/voice-2.0/index.md"]},{"title":"Verification API","description":"The Verification API is a platform for phone number verification. It consists of the API and different software development kits (the Sinch SDKs) that you integrate with your smartphone or web application and cloud based back-end services. Together they enable SMS, Flashcall, Phone Call and Data verification in your application.","includeFiles":["docs/verification/**/*.md","docs/verification/**/*.yaml"],"excludeFiles":["docs/verification/index.md"]},{"title":"Provisioning API","description":"Provisioning API allows you to programmatically set up your senders, accounts and templates on your favorite messaging platforms on the Conversation API. For now, you can create your first WhatsApp channel through Meta's Embedded sign up, you can configure your first SMS App and configure your webhooks. As development continues, we will be adding the most commonly used channels.","includeFiles":["docs/provisioning-api/**/*.md","docs/provisioning-api/**/*.json"],"excludeFiles":["docs/provisioning-api/index.md"]},{"title":"Elastic SIP Trunking API","description":"With Elastic SIP Trunking you can create and manage your SIP trunks and phone numbers programmatically.","includeFiles":["docs/est/**/*.md","docs/est/**/*.yaml"],"excludeFiles":["docs/est/index.md"]},{"title":"Fax API","description":"Send and receive HIPAA compliant faxes on our modern fax platform using our developer-friendly API.","includeFiles":["docs/fax/**/*.md","docs/fax/**/*.yaml"],"excludeFiles":["docs/fax/index.md"]},{"title":"In-app Voice and Video SDK","description":"The In-app Voice and Video SDK enables you to add voice and video calling capabilities directly into your mobile or web application using the Sinch SDKs.","includeFiles":["docs/in-app-calling/**/*.md"],"excludeFiles":["docs/in-app-calling/index.md"]},{"title":"Number Lookup API","description":"The Number Lookup API is designed to provide in-depth information about phone numbers, helping enterprises enhance their communication strategies and prevent fraud. By identifying the type of phone line (for example, mobile, landline, VoIP) and the associated carrier, the API allows businesses to optimize routing, reduce unnecessary costs, and improve customer engagement.","includeFiles":["docs/number-lookup-api-v2/**/*.md","docs/number-lookup-api-v2/**/*.yaml"],"excludeFiles":["docs/number-lookup-api-v2/index.md"]},{"title":"Functions","description":"Serverless compute for voice and messaging. Deploy your code and Sinch routes live calls and messages to it — no infrastructure to run.","includeFiles":["docs/functions/functions/**/*.md","docs/functions/concepts/**/*.md","docs/functions/reference/**/*.md"],"excludeFiles":["docs/functions/functions/index.md"]},{"title":"CLI","description":"One command line for every Sinch API and the full Functions lifecycle — scaffold, run locally, deploy, and manage.","includeFiles":["docs/functions/cli/**/*.md"],"excludeFiles":["docs/functions/cli/index.md"]}]},"description":"See all versions of the Sinch Java SDK reference documentation."},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Split","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"sinch-java-sdk","__idx":0},"children":["Sinch Java SDK"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html"},"children":[{"$$mdtype":"Tag","name":"img","attributes":{"src":"https://img.shields.io/badge/Java-8-orange.svg","alt":"Java 8"},"children":[]}]}," ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://www.oracle.com/java/technologies/javase/jdk11-archive-downloads.html"},"children":[{"$$mdtype":"Tag","name":"img","attributes":{"src":"https://img.shields.io/badge/Java-11-orange.svg","alt":"Java 11"},"children":[]}]}," ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html"},"children":[{"$$mdtype":"Tag","name":"img","attributes":{"src":"https://img.shields.io/badge/Java-17-orange.svg","alt":"Java 17"},"children":[]}]}," ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://www.oracle.com/java/technologies/javase/jdk21-archive-downloads.html"},"children":[{"$$mdtype":"Tag","name":"img","attributes":{"src":"https://img.shields.io/badge/Java-21-orange.svg","alt":"Java 21"},"children":[]}]}," ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://www.oracle.com/java/technologies/downloads/#java25"},"children":[{"$$mdtype":"Tag","name":"img","attributes":{"src":"https://img.shields.io/badge/Java-25-orange.svg","alt":"Java 25"},"children":[]}]}," ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://central.sonatype.com/artifact/com.sinch.sdk/sinch-sdk-java"},"children":[{"$$mdtype":"Tag","name":"img","attributes":{"src":"https://img.shields.io/maven-central/v/com.sinch.sdk/sinch-sdk-java?label=sinch&labelColor=FFC658","alt":"Latest Release"},"children":[]}]}," ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://github.com/sinch/sinch-sdk-java/blob/main/LICENSE"},"children":[{"$$mdtype":"Tag","name":"img","attributes":{"src":"https://img.shields.io/badge/License-Apache_2.0-blue.svg","alt":"License"},"children":[]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Here you'll find documentation related to the Sinch Java SDK, including how to install it, initialize it, and start developing Java code using Sinch services."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To use Sinch services, you'll need a Sinch account and access keys. You can sign up for an account and create access keys at ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://dashboard.sinch.com"},"children":["dashboard.sinch.com"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"table-of-contents","__idx":1},"children":["Table of contents:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#prerequisites"},"children":["Prerequisites"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#version-support"},"children":["Version support"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#documentation"},"children":["Documentation"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#installation"},"children":["Installation"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#supported-apis"},"children":["Supported APIs"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#getting-started"},"children":["Getting started"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#logging"},"children":["Logging"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#handling-exceptions"},"children":["Handling Exceptions"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#proxy-configuration"},"children":["Proxy configuration"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#third-party-dependencies"},"children":["Third-party dependencies"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#examples"},"children":["Examples"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#changelog--migration"},"children":["Changelog and Migration"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#license"},"children":["License"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#contact"},"children":["Contact"]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"prerequisites","__idx":2},"children":["Prerequisites"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Java in one of the supported versions - ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html"},"children":["8"]},", ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://www.oracle.com/java/technologies/javase/jdk11-archive-downloads.html"},"children":["11"]},", ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html"},"children":["17"]},", ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://www.oracle.com/java/technologies/javase/jdk21-archive-downloads.html"},"children":["21"]},", ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://www.oracle.com/java/technologies/downloads/#java25"},"children":["25"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://maven.apache.org/"},"children":["Maven"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://dashboard.sinch.com/"},"children":["Sinch account"]}]}]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Warning"]},":"," ","This SDK is intended for server-side (backend) use only. Do not use it in front-end or client-side applications (web, mobile, or desktop), regardless of language or framework. Doing so can expose your Sinch credentials to end-users."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"version-support","__idx":3},"children":["Version support"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This SDK follows ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://semver.org/"},"children":["Semantic Versioning"]}," for version numbering."," ","SemVer defines what changes are allowed in each type of release (major, minor, patch) but does not define a support or patching policy."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This section describes the support policy for this project."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Release cadence"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A new major version will not be released until at least 6 months after the previous major version."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Support policy"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Patches are published only for the latest minor release within each supported major version. For example: if version 2.0 exists and 2.1.0 is released, patches will be applied to 2.1.x only. Users on 2.0.x will no longer receive patches and must upgrade to 2.1.x to get bug fixes and security updates."]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Version"},"children":["Version"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Status"},"children":["Status"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Support"},"children":["Support"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Timeline"},"children":["Timeline"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Current major"]}," (latest released)"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Fully supported"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["All new features, bug fixes, and security fixes"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Ongoing"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Previous major"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Maintenance"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Critical bug fixes and security fixes only, no new features"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Begins when current major is released; ends when next major is released or 1 year from current release, whichever comes first"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Older majors"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["End-of-Life (EOL)"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["No patches or support"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["—"]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["What are critical bug fixes?"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For the previous major version, we apply patches for:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Security vulnerabilities"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Data loss risks"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Breaking compatibility issues"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["If you're using an unsupported version"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["We recommend upgrading to a supported version to receive ongoing security and stability updates. Bug reports against unsupported versions are not prioritized and may not be addressed."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Dependency security updates"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["We assess dependency vulnerabilities by severity level. High and Critical vulnerabilities (CVSS score ≥ 7.0) are backported to the latest minor release of both the current and previous major versions. Medium and Low severity vulnerabilities (CVSS < 7.0) are applied to the current major version only."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"documentation","__idx":4},"children":["Documentation"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For more information on the SDK, refer to the dedicated ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://developers.sinch.com/docs/sdks/java"},"children":["Java SDK documentation"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For the SDK's programmatic API surface, see the online ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://developers.sinch.com/sdk/sinch-sdk-java/latest"},"children":["SDK reference"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For broader Sinch product documentation, including the underlying REST APIs, visit the official ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://developers.sinch.com/"},"children":["Sinch developer portal"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"installation","__idx":5},"children":["Installation"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Add the SDK dependency to your ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["pom.xml"]}," file:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"xml","header":{"controls":{"copy":{}}},"source":"<dependencies>\n    <dependency>\n      <groupId>com.sinch.sdk</groupId>\n      <artifactId>sinch-sdk-java</artifactId>\n      <version>${sdk.version}</version>\n    </dependency>\n    ...\n</dependencies>\n","lang":"xml"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Note: The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["${sdk.version}"]}," needs to be set according to the released version to be used (see available versions from ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://central.sonatype.com/artifact/com.sinch.sdk/sinch-sdk-java"},"children":["Maven Repository"]},")"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"supported-apis","__idx":6},"children":["Supported APIs"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"API Category"},"children":["API Category"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"API Name"},"children":["API Name"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Messaging"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://developers.sinch.com/docs/conversation/"},"children":["Conversation API"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://developers.sinch.com/docs/sms/"},"children":["SMS API"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Voice and Video"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://developers.sinch.com/docs/voice/"},"children":["Voice API"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Numbers"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://developers.sinch.com/docs/numbers/"},"children":["Numbers API"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Verification"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://developers.sinch.com/docs/verification/"},"children":["Verification API"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://developers.sinch.com/docs/number-lookup-api-v2/"},"children":["Number Lookup API"]}]}]}]}]}]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Note:"]}," The SMS API is end-of-sale. New integrations should use the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://developers.sinch.com/docs/conversation/"},"children":["Conversation API"]}," instead, which supports SMS and many other channels."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"getting-started","__idx":7},"children":["Getting started"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"client-initialization","__idx":8},"children":["Client initialization"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To start using the SDK, initialize the main client class. This client gives you access to all the SDK services:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"java","header":{"controls":{"copy":{}}},"source":"import com.sinch.sdk.SinchClient;\nimport com.sinch.sdk.models.Configuration;\n\n// Warning: not all APIs support project authentication. Check the section for each API before using this snippet.\n\nConfiguration configuration =\n    Configuration.builder()\n        .setProjectId(PROJECT_ID)\n        .setKeyId(KEY_ID)\n        .setKeySecret(KEY_SECRET)\n        .build();\n\nSinchClient client = new SinchClient(configuration);\n","lang":"java"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Get ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["projectId"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["keyId"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["keySecret"]}," from the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://dashboard.sinch.com/settings/access-keys"},"children":["Access keys"]}," page in your Sinch dashboard (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["keySecret"]}," is shown only once, at creation time). It's highly recommended to not hardcode these credentials: load them from environment variables for local development, and from a secret manager in production."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This snippet is the common starting point for project-based API. Some APIs need a different initialization or extra parameters (for example, a region or application credentials), see the section for each API below."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"conversation-api","__idx":9},"children":["Conversation API"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The Conversation API is regionalized. To use this API, the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["conversationRegion"]}," parameter is required:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"java","header":{"controls":{"copy":{}}},"source":"import com.sinch.sdk.SinchClient;\nimport com.sinch.sdk.models.Configuration;\nimport com.sinch.sdk.models.ConversationRegion;\n\nConfiguration configuration =\n    Configuration.builder()\n        .setProjectId(PROJECT_ID)\n        .setKeyId(KEY_ID)\n        .setKeySecret(KEY_SECRET)\n        .setConversationRegion(ConversationRegion.EU)\n        .build();\n\nSinchClient client = new SinchClient(configuration);\n","lang":"java"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"sinch-events","__idx":10},"children":["Sinch Events"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The Conversation API delivers asynchronous Sinch Events to the Event Destination URL you configure for your app in the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://dashboard.sinch.com/convapi/apps"},"children":["Conversation dashboard"]},". ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["validateAuthenticationHeader"]}," confirms a request comes from Sinch and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["parseEvent"]}," turns its payload into an event object. ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["headers"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["body"]}," are the incoming request's headers and raw body:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"java","header":{"controls":{"copy":{}}},"source":"import com.sinch.sdk.domains.conversation.api.v1.SinchEventsService;\nimport com.sinch.sdk.domains.conversation.models.v1.sinchevents.ConversationSinchEvent;\n\nSinchEventsService sinchEvents = sinchClient.conversation().v1().sinchEvents();\n\nboolean validAuth = sinchEvents.validateAuthenticationHeader(sinchEventsSecret, headers, body);\n\nConversationSinchEvent event = sinchEvents.parseEvent(body);\n","lang":"java"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["sinchEventsSecret"]}," is set per app in the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://dashboard.sinch.com/convapi/apps"},"children":["Conversation dashboard"]},". ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["parseEvent"]}," works without validating the request, but then its origin can't be verified, so validating is recommended in production."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You can find a complete example in ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://github.com/sinch/sinch-sdk-java/tree/main/examples/sinch-events"},"children":["examples/sinch-events"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"sms-api","__idx":11},"children":["SMS API"]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Warning:"]}," the SMS API is end-of-sale. For new integrations, prefer the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#conversation-api"},"children":["Conversation API"]},"."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The SMS API is regionalized: set ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["smsRegion"]}," to the region where your SMS account is hosted. The accepted values are ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["US"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["EU"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["AU"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["BR"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CA"]},", and the region also determines which credentials you can use:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Project access keys"]}," — available only in the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["US"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["EU"]}," regions. Use the same ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["projectId"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["keyId"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["keySecret"]}," as the common client, plus ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["smsRegion"]},":"]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"java","header":{"controls":{"copy":{}}},"source":"import com.sinch.sdk.SinchClient;\nimport com.sinch.sdk.models.Configuration;\nimport com.sinch.sdk.models.SMSRegion;\n\nConfiguration configuration =\n    Configuration.builder()\n        .setProjectId(PROJECT_ID)\n        .setKeyId(KEY_ID)\n        .setKeySecret(KEY_SECRET)\n        .setSmsRegion(SMSRegion.US)\n        .build();\n\nSinchClient client = new SinchClient(configuration);\n","lang":"java"},"children":[]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["SMS authentication for new projects"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Projects created after the SMS API end-of-sale (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["15/04/26"]},") cannot use"," ","project access keys — the SMS API requests return ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["401 Unauthorized"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If you encounter this issue, consider the following options:"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Use service plan credentials (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["smsServicePlanId"]}," + ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["smsApiToken"]},")"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Use the Conversation API, which works with project access keys."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Contact your account manager"]}]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Service plan"]}," — available in all regions (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["US"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["EU"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["AU"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["BR"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CA"]},"). Use a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["smsServicePlanId"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["smsApiToken"]},", both available on the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://dashboard.sinch.com/sms/api/services"},"children":["Service APIs dashboard"]},":"]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"java","header":{"controls":{"copy":{}}},"source":"import com.sinch.sdk.SinchClient;\nimport com.sinch.sdk.models.Configuration;\nimport com.sinch.sdk.models.SMSRegion;\n\nConfiguration configuration =\n    Configuration.builder()\n        .setSmsServicePlanId(SERVICE_PLAN_ID)\n        .setSmsApiToken(API_TOKEN)\n        .setSmsRegion(SMSRegion.US)\n        .build();\n\nSinchClient client = new SinchClient(configuration);\n","lang":"java"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"sinch-events-1","__idx":12},"children":["Sinch Events"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The SMS API delivers asynchronous Sinch Events to an Event Destination, whose URL is set per batch with the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["eventDestinationTarget"]}," parameter on the send, update and replace operations. ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["validateAuthenticationHeader"]}," confirms a request comes from Sinch and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["parseEvent"]}," turns its payload into an event object. ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["headers"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["body"]}," are the incoming request's headers and raw body:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"java","header":{"controls":{"copy":{}}},"source":"import com.sinch.sdk.domains.sms.api.v1.SinchEventsService;\nimport com.sinch.sdk.domains.sms.models.v1.sinchevents.SmsSinchEvent;\n\nSinchEventsService sinchEvents = client.sms().v1().sinchEvents();\n\nboolean validAuth = sinchEvents.validateAuthenticationHeader(sinchEventsSecret, headers, body);\n\nSmsSinchEvent event = sinchEvents.parseEvent(body);\n","lang":"java"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Signature authentication for SMS events must be enabled for your account by your account manager. Until it is activated, signature headers will not be present and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["parseEvent"]}," can be called directly without signature validation. See the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://developers.sinch.com/docs/sms/api-reference/sms/tag/Webhooks/#tag/Webhooks/section/Callbacks"},"children":["SMS events documentation"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You can find a complete example in ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://github.com/sinch/sinch-sdk-java/tree/main/examples/sinch-events"},"children":["examples/sinch-events"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"numbers-api","__idx":13},"children":["Numbers API"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The Numbers API needs no extra parameters, use the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#client-initialization"},"children":["common client"]}," shown above."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"sinch-events-2","__idx":14},"children":["Sinch Events"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The Numbers API delivers asynchronous Sinch Events to the Event Destination URL you configure for your project through ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["sinchClient.numbers().v1().eventDestinations()"]},". ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["validateAuthenticationHeader"]}," confirms a request comes from Sinch and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["parseEvent"]}," turns its payload into an event object. ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["headers"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["body"]}," are the incoming request's headers and raw body:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"java","header":{"controls":{"copy":{}}},"source":"import com.sinch.sdk.domains.numbers.api.v1.SinchEventsService;\nimport com.sinch.sdk.domains.numbers.models.v1.sinchevents.NumberSinchEvent;\n\nSinchEventsService sinchEvents = client.numbers().v1().sinchEvents();\n\nboolean validAuth = sinchEvents.validateAuthenticationHeader(sinchEventsSecret, headers, body);\n\nNumberSinchEvent event = sinchEvents.parseEvent(body);\n","lang":"java"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["sinchEventsSecret"]}," is the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["HmacSecret"]}," value configured on the Event Destination. ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["parseEvent"]}," works without validating the request, but then its origin can't be verified, so validating is recommended in production."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You can find a complete example in ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://github.com/sinch/sinch-sdk-java/tree/main/examples/sinch-events"},"children":["examples/sinch-events"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"number-lookup-api","__idx":15},"children":["Number Lookup API"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The Number Lookup API needs no extra parameters, use the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#client-initialization"},"children":["common client"]}," shown above."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"verification-api","__idx":16},"children":["Verification API"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The Verification API uses application credentials. Set ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["applicationKey"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["applicationSecret"]},", both available on the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://dashboard.sinch.com/verification/apps"},"children":["Apps dashboard"]},":"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"java","header":{"controls":{"copy":{}}},"source":"import com.sinch.sdk.SinchClient;\nimport com.sinch.sdk.models.Configuration;\n\nConfiguration configuration =\n    Configuration.builder()\n        .setApplicationKey(APPLICATION_KEY)\n        .setApplicationSecret(APPLICATION_SECRET)\n        .build();\n\nSinchClient client = new SinchClient(configuration);\n","lang":"java"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"sinch-events-3","__idx":17},"children":["Sinch Events"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The Verification API delivers synchronous Sinch Events to the Event Destination URL configured for your app. Requests are signed with your application credentials, so validation requires the HTTP verb and URI of the controller handling the request, in addition to the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["headers"]}," and raw ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["body"]},":"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"java","header":{"controls":{"copy":{}}},"source":"import com.sinch.sdk.domains.verification.api.v1.SinchEventsService;\n\nSinchEventsService sinchEvents = client.verification().v1().sinchEvents();\n\nboolean validAuth = sinchEvents.validateAuthenticationHeader(\"POST\", \"/VerificationEvent\", headers, body);\n\nvar event = sinchEvents.parseEvent(body);\n","lang":"java"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Some events expect a response: build it from the business layer and serialize it with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["sinchEvents.serializeResponse(response)"]}," before returning it to Sinch."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You can find a complete example in ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://github.com/sinch/sinch-sdk-java/tree/main/examples/sinch-events"},"children":["examples/sinch-events"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"voice-api","__idx":18},"children":["Voice API"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The Voice API uses application credentials. Set ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["applicationKey"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["applicationSecret"]}," (both available on the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://dashboard.sinch.com/voice/apps"},"children":["Apps dashboard"]},"); ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["voiceRegion"]}," is optional and defaults to a global region:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"java","header":{"controls":{"copy":{}}},"source":"import com.sinch.sdk.SinchClient;\nimport com.sinch.sdk.models.Configuration;\nimport com.sinch.sdk.models.VoiceRegion;\n\nConfiguration configuration =\n    Configuration.builder()\n        .setApplicationKey(APPLICATION_KEY)\n        .setApplicationSecret(APPLICATION_SECRET)\n        .setVoiceRegion(VoiceRegion.GLOBAL)\n        .build();\n\nSinchClient client = new SinchClient(configuration);\n","lang":"java"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"sinch-events-4","__idx":19},"children":["Sinch Events"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The Voice API delivers synchronous Sinch Events to the Event Destination URL configured for your app. Requests are signed with your application credentials, so validation requires the HTTP verb and URI of the controller handling the request, in addition to the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["headers"]}," and raw ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["body"]},":"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"java","header":{"controls":{"copy":{}}},"source":"import com.sinch.sdk.domains.voice.api.v1.SinchEventsService;\n\nSinchEventsService sinchEvents = client.voice().v1().sinchEvents();\n\nboolean validAuth = sinchEvents.validateAuthenticationHeader(\"POST\", \"/VoiceEvent\", headers, body);\n\nvar event = sinchEvents.parseEvent(body);\n","lang":"java"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Some events (for example an incoming call) expect a SVAML response: build it from the business layer and serialize it with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["sinchEvents.serializeResponse(response)"]}," before returning it to Sinch."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You can find a complete example in ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://github.com/sinch/sinch-sdk-java/tree/main/examples/sinch-events"},"children":["examples/sinch-events"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"your-first-request","__idx":20},"children":["Your first request"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Once your client is configured, you can send your first message. The example below uses the Conversation API to send a simple text message over SMS. Replace ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CONVERSATION_APP_ID"]}," with your app ID, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SINCH_VIRTUAL_PHONE_NUMBER"]}," with your Sinch number and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["RECIPIENT_PHONE_NUMBER"]}," with the recipient's phone number:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"java","header":{"controls":{"copy":{}}},"source":"import com.sinch.sdk.domains.conversation.models.v1.ChannelRecipientIdentities;\nimport com.sinch.sdk.domains.conversation.models.v1.ChannelRecipientIdentity;\nimport com.sinch.sdk.domains.conversation.models.v1.ConversationChannel;\nimport com.sinch.sdk.domains.conversation.models.v1.messages.AppMessage;\nimport com.sinch.sdk.domains.conversation.models.v1.messages.request.SendMessageRequest;\nimport com.sinch.sdk.domains.conversation.models.v1.messages.response.SendMessageResponse;\nimport com.sinch.sdk.domains.conversation.models.v1.messages.types.text.TextMessage;\nimport java.util.Collections;\n\nSendMessageRequest<TextMessage> request =\n    SendMessageRequest.<TextMessage>builder()\n        .setAppId(\"CONVERSATION_APP_ID\")\n        .setRecipient(\n            ChannelRecipientIdentities.of(\n                ChannelRecipientIdentity.builder()\n                    .setChannel(ConversationChannel.SMS)\n                    .setIdentity(\"RECIPIENT_PHONE_NUMBER\")\n                    .build()))\n        .setMessage(\n            AppMessage.<TextMessage>builder()\n                .setBody(TextMessage.builder().setText(\"Hello from the Sinch Java SDK!\").build())\n                .build())\n        .setChannelProperties(Collections.singletonMap(\"SMS_SENDER\", \"SINCH_VIRTUAL_PHONE_NUMBER\"))\n        .build();\n\nSendMessageResponse response = client.conversation().messages().sendMessage(request);\n","lang":"java"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"logging","__idx":21},"children":["Logging"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The SDK uses the Java 8 logging feature (",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://docs.oracle.com/javase/8/docs/api/java/util/logging/package-summary.html#package.description"},"children":["java.util.logging"]},")"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When using Java logging, Loggers and severity can be configured by using a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["logging.properties"]}," file like:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"# java.util.logging configuration sample\n# See https://docs.oracle.com/javase/8/docs/api/java/util/logging/package-summary.html#package.description\n\n#\n# Layers logging severity configuration\n#\n\n# Sinch SDK \ncom.sinch.level = INFO\n\n# Apache HTTP Client\n# org.apache.hc.level = \n\n\n#\n# console output handler sample\n#\nhandlers = java.util.logging.ConsoleHandler\njava.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter\njava.util.logging.SimpleFormatter.format=[%1$tF %1$tT] [%4$-7s %2$s] %5$s %n\njava.util.logging.ConsoleHandler.level = FINEST\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If you are using a different logging framework (such as SLF4J or Spring), please refer to the documentation for your specific framework."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"handling-exceptions","__idx":22},"children":["Handling exceptions"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When a backend call is unsuccessful, the SDK throws an ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ApiException"]}," (from ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["com.sinch.sdk.core.exceptions"]},"). It is the base class for all Sinch API exceptions and exposes the HTTP status code through ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["getCode()"]},"."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"java","header":{"controls":{"copy":{}}},"source":"import com.sinch.sdk.core.exceptions.ApiException;\nimport com.sinch.sdk.domains.numbers.api.v1.NumbersService;\n\nNumbersService numbersService = sinchClient.numbers().v1();\n\ntry {\n    AvailableNumbersListResponse response =\n        numbersService.searchForAvailableNumbers(\n            AvailableNumbersListQueryParameters.builder()\n                .setRegionCode(\"US\")\n                .setType(NumberType.LOCAL)\n                .build());\n} catch (ApiException e) {\n    // e.getCode() holds the HTTP status code, e.getMessage() the error detail\n}\n","lang":"java"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ApiException"]}," is an unchecked exception, so wrapping calls in a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["try/catch"]}," is optional but recommended. Catching ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ApiException"]}," handles every error raised by an API call, including its more specific subclasses:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ApiAuthException"]},": authentication/authorization failures."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ApiMappingException"]},": the response payload could not be deserialized into the expected type."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"proxy-configuration","__idx":23},"children":["Proxy configuration"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If your network environment routes outbound traffic through an HTTP proxy, provide proxy"," ","configuration via ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://github.com/sinch/sinch-sdk-java/blob/main/client/src/main/com/sinch/sdk/models/HttpProxyConfiguration.java"},"children":["HttpProxyConfiguration"]}," on the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://github.com/sinch/sinch-sdk-java/blob/main/client/src/main/com/sinch/sdk/models/Configuration.java"},"children":["Configuration"]}," builder."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When used, all connections will go through the proxy (including OAuth)."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Unauthenticated proxy:"]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"java","header":{"controls":{"copy":{}}},"source":"import com.sinch.sdk.SinchClient;\nimport com.sinch.sdk.models.Configuration;\nimport com.sinch.sdk.models.HttpProxyConfiguration;\n\n...\nConfiguration configuration = Configuration.builder()\n        .setKeyId(PARAM_KEY_ID)\n        .setKeySecret(PARAM_KEY_SECRET)\n        .setProjectId(PARAM_PROJECT_ID)\n        .setHttpProxyConfiguration(\n                HttpProxyConfiguration.builder()\n                        .setHostname(PARAM_PROXY_HOSTNAME)\n                        .setPort(PARAM_PROXY_PORT)\n                        .build())\n        .build();\nSinchClient client = new SinchClient(configuration);\n","lang":"java"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Authenticated proxy:"]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"java","header":{"controls":{"copy":{}}},"source":"Configuration configuration = Configuration.builder()\n        .setKeyId(PARAM_KEY_ID)\n        .setKeySecret(PARAM_KEY_SECRET)\n        .setProjectId(PARAM_PROJECT_ID)\n        .setHttpProxyConfiguration(\n              HttpProxyConfiguration.builder()\n                  .setHostname(PARAM_PROXY_HOSTNAME)\n                  .setPort(PARAM_PROXY_PORT)\n                  .setUsername(PARAM_PROXY_USERNAME)\n                  // prefer char[] over String to reduce password exposure in heap memory    \n                  .setPassword(PARAM_PROXY_PASSWORD_AS_CHAR_ARRAY)\n                  .build())\n        .build();\nSinchClient client = new SinchClient(configuration);\n","lang":"java"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"third-party-dependencies","__idx":24},"children":["Third-party dependencies"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The SDK relies on the following third-party dependencies:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://github.com/FasterXML/jackson-jakarta-rs-providers"},"children":["Jackson"]},": provides JSON serialization/deserialization functionality."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://hc.apache.org/httpcomponents-client-ga/"},"children":["Apache HTTP client"]},": manages communication with Sinch products' REST APIs."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"jacksonjava-eejaxrsjakarta-compatibility-consideration","__idx":25},"children":["Jackson/Java EE/jaxrs/Jakarta Compatibility Consideration"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The transition from ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["javax"]}," to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["jakarta"]}," namespaces with the Java EE to Jakarta EE migration may cause compatibility issues. Refer to ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://docslib.org/doc/1185955/transition-from-java-ee-to-jakarta-ee-ee-conclusion-what-happened-and-what-you-need-to-know"},"children":["Oracle's note about the transition"]}," for additional details."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Jackson maintainers provide two variants of the library:"]},{"$$mdtype":"Tag","name":"blockquote","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["(*) NOTE: Jakarta-RS is the package under jakarta.ws.rs, replacing older JAX-RS which lived under javax.ws.rs. For JAX-RS variant, see repo jackson-jaxrs-providers"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["By default, the Sinch Java SDK uses the \"new\" ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://github.com/FasterXML/jackson-jakarta-rs-providers"},"children":["jackson-jakarta-rs-providers"]},". However, you can switch to the \"older\" ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://github.com/FasterXML/jackson-jaxrs-providers"},"children":["jackson-jaxrs-providers"]}," if required."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"switching-to-jackson-jaxrs-providers","__idx":26},"children":["Switching to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["jackson-jaxrs-providers"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Depending on your use case, you may need to adjust dependencies to enable ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["jaxrs"]}," usage."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Add the following dependency to your configuration:"," ","Note: Replace ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["VERSION-YOU-WANT-TO-BE-USED"]}," with a Jackson version of at least ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["2.15.2"]},"."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"xml","header":{"controls":{"copy":{}}},"source":"...\n    <dependency>\n      <groupId>com.sinch.sdk</groupId>\n      <artifactId>sinch-sdk-java</artifactId>\n      <version>${sinch.sdk.java.version}</version>\n      <exclusions>\n        <exclusion>\n          <groupId>com.fasterxml.jackson.jaxrs</groupId>\n          <artifactId>jackson-jakarta-rs-json-provider</artifactId>\n        </exclusion>\n      </exclusions>\n    </dependency>\n    <dependency>\n        <groupId>com.fasterxml.jackson.jakarta.rs</groupId>\n        <artifactId>jackson-jaxrs-json-provider</artifactId>\n        <version>VERSION-YOU-WANT-TO-BE-USED</version>\n    </dependency>\n...\n","lang":"xml"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"examples","__idx":27},"children":["Examples"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You can find:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["self-contained code snippets covering every API operation in the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://github.com/sinch/sinch-sdk-java/tree/main/examples/snippets"},"children":["examples/snippets"]}," folder."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["getting started guides for specific use cases in the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://github.com/sinch/sinch-sdk-java/tree/main/examples/getting-started"},"children":["examples/getting-started"]}," folder."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["a Spring Boot server template to process received Sinch Events in the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://github.com/sinch/sinch-sdk-java/tree/main/examples/sinch-events"},"children":["examples/sinch-events"]}," folder."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["an SDK client template application in the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://github.com/sinch/sinch-sdk-java/tree/main/examples/client"},"children":["examples/client"]}," folder."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["step-by-step tutorials combining multiple SDK features in the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://github.com/sinch/sinch-sdk-java/tree/main/examples/tutorials"},"children":["examples/tutorials"]}," folder."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"changelog--migration","__idx":28},"children":["Changelog & Migration"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For information about the latest changes in the SDK, please refer to the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://github.com/sinch/sinch-sdk-java/blob/main/CHANGELOG.md"},"children":["CHANGELOG"]}," file"," ","and the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://github.com/sinch/sinch-sdk-java/blob/main/MIGRATION-GUIDE.md"},"children":["MIGRATION-GUIDE"]}," for instructions on how to update your code when upgrading to a new major version of the SDK."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"license","__idx":29},"children":["License"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This project is licensed under the Apache License. See the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://github.com/sinch/sinch-sdk-java/blob/main/LICENSE"},"children":["LICENSE"]}," file for the license text."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"contact","__idx":30},"children":["Contact"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Developer Experience engineering team: ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"mailto:team-developer-experience@sinch.com"},"children":["team-developer-experience@sinch.com"]}]},{"$$mdtype":"Tag","name":"hr","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"versions","__idx":31},"children":["Versions"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://developers.sinch.com/sdk/sinch-sdk-java/2.1.2/index.html"},"children":["2.1.2 (latest)"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://developers.sinch.com/sdk/sinch-sdk-java/2.1.1/index.html"},"children":["2.1.1"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://developers.sinch.com/sdk/sinch-sdk-java/2.1.0/index.html"},"children":["2.1.0"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://developers.sinch.com/sdk/sinch-sdk-java/2.0.0/index.html"},"children":["2.0.0"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://developers.sinch.com/sdk/sinch-sdk-java/1.7.1/index.html"},"children":["1.7.1"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://developers.sinch.com/sdk/sinch-sdk-java/1.7.0/index.html"},"children":["1.7.0"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://developers.sinch.com/sdk/sinch-sdk-java/1.6.0/index.html"},"children":["1.6.0"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://developers.sinch.com/sdk/sinch-sdk-java/1.5.1/index.html"},"children":["1.5.1"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://developers.sinch.com/sdk/sinch-sdk-java/1.5.0/index.html"},"children":["1.5.0"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://developers.sinch.com/sdk/sinch-sdk-java/1.4.0/index.html"},"children":["1.4.0"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://developers.sinch.com/sdk/sinch-sdk-java/1.3.1/index.html"},"children":["1.3.1"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://developers.sinch.com/sdk/sinch-sdk-java/1.3.0/index.html"},"children":["1.3.0"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://developers.sinch.com/sdk/sinch-sdk-java/1.2.4/index.html"},"children":["1.2.4"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://developers.sinch.com/sdk/sinch-sdk-java/1.2.3/index.html"},"children":["1.2.3"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://developers.sinch.com/sdk/sinch-sdk-java/1.2.2/index.html"},"children":["1.2.2"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://developers.sinch.com/sdk/sinch-sdk-java/1.2.1/index.html"},"children":["1.2.1"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://developers.sinch.com/sdk/sinch-sdk-java/1.2.0/index.html"},"children":["1.2.0"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://developers.sinch.com/sdk/sinch-sdk-java/1.1.0/index.html"},"children":["1.1.0"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://developers.sinch.com/sdk/sinch-sdk-java/1.0.0/index.html"},"children":["1.0.0"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://developers.sinch.com/sdk/sinch-sdk-java/0.0.6-alpha/index.html"},"children":["0.0.6-alpha"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://developers.sinch.com/sdk/sinch-sdk-java/0.0.5-alpha/index.html"},"children":["0.0.5-alpha"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://developers.sinch.com/sdk/sinch-sdk-java/0.0.4-alpha/index.html"},"children":["0.0.4-alpha"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://developers.sinch.com/sdk/sinch-sdk-java/0.0.3-alpha/index.html"},"children":["0.0.3-alpha"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://developers.sinch.com/sdk/sinch-sdk-java/0.0.2-alpha/index.html"},"children":["0.0.2-alpha"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://developers.sinch.com/sdk/sinch-sdk-java/0.0.1-alpha/index.html"},"children":["0.0.1-alpha"]}]}]}]}]},"headings":[{"value":"Sinch Java SDK","id":"sinch-java-sdk","depth":1},{"value":"Table of contents:","id":"table-of-contents","depth":2},{"value":"Prerequisites","id":"prerequisites","depth":2},{"value":"Version support","id":"version-support","depth":2},{"value":"Documentation","id":"documentation","depth":2},{"value":"Installation","id":"installation","depth":2},{"value":"Supported APIs","id":"supported-apis","depth":2},{"value":"Getting started","id":"getting-started","depth":2},{"value":"Client initialization","id":"client-initialization","depth":3},{"value":"Conversation API","id":"conversation-api","depth":3},{"value":"Sinch Events","id":"sinch-events","depth":4},{"value":"SMS API","id":"sms-api","depth":3},{"value":"Sinch Events","id":"sinch-events-1","depth":4},{"value":"Numbers API","id":"numbers-api","depth":3},{"value":"Sinch Events","id":"sinch-events-2","depth":4},{"value":"Number Lookup API","id":"number-lookup-api","depth":3},{"value":"Verification API","id":"verification-api","depth":3},{"value":"Sinch Events","id":"sinch-events-3","depth":4},{"value":"Voice API","id":"voice-api","depth":3},{"value":"Sinch Events","id":"sinch-events-4","depth":4},{"value":"Your first request","id":"your-first-request","depth":3},{"value":"Logging","id":"logging","depth":2},{"value":"Handling exceptions","id":"handling-exceptions","depth":2},{"value":"Proxy configuration","id":"proxy-configuration","depth":2},{"value":"Third-party dependencies","id":"third-party-dependencies","depth":2},{"value":"Jackson/Java EE/jaxrs/Jakarta Compatibility Consideration","id":"jacksonjava-eejaxrsjakarta-compatibility-consideration","depth":3},{"value":"Switching to jackson-jaxrs-providers","id":"switching-to-jackson-jaxrs-providers","depth":4},{"value":"Examples","id":"examples","depth":2},{"value":"Changelog & Migration","id":"changelog--migration","depth":2},{"value":"License","id":"license","depth":2},{"value":"Contact","id":"contact","depth":2},{"value":"Versions","id":"versions","depth":2}],"frontmatter":{"seo":{"title":"Java SDK Reference Docs | Sinch","description":"See all versions of the Sinch Java SDK reference documentation."},"template":"../../../@theme/Templates/SideBySide.tsx"},"lastModified":"2026-09-02T22:05:18.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/docs/sdks/java/sdk-reference-docs","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}