# Supported Sinch APIs

Sinch Functions provides pre-initialized Sinch SDK clients through the function context. Clients are only available when their required environment variables are present — accessing an unconfigured client returns `null` (C#) or `undefined` (Node.js).

## API Availability by Runtime

| API | Node.js | C# | Required Config |
|  --- | --- | --- | --- |
| Voice | `context.voice` | `context.Voice` | `VOICE_APPLICATION_KEY` + `VOICE_APPLICATION_SECRET` |
| Conversation | `context.conversation` | `context.Conversation` | `CONVERSATION_APP_ID` |
| SMS | `context.sms` | `context.Sms` | `SMS_SERVICE_PLAN_ID` |
| Numbers | `context.numbers` | `context.Numbers` | `ENABLE_NUMBERS_API=true` |
| Verification | N/A | `context.Verification` | `VERIFICATION_APPLICATION_ID` + `VERIFICATION_APPLICATION_SECRET` |
| Fax | Via CLI only | Via CLI only | Managed by `sinch` CLI |
| SIP Trunking | Via CLI only | Via CLI only | Managed by `sinch` CLI |
| ElevenLabs | `context.elevenlabs` (template helper) | Template helper | `ELEVENLABS_API_KEY` |


## Base Credentials

All Sinch API integrations require these base credentials:

| Variable | Description |
|  --- | --- |
| `PROJECT_ID` | Your Sinch project ID |
| `PROJECT_ID_API_KEY` | Project-scoped API key |
| `PROJECT_ID_API_SECRET` | Project-scoped API secret |


Set automatically when you run `sinch auth login`.

## Environment Variables Reference

### Base (always required)

| Variable | Description |
|  --- | --- |
| `PROJECT_ID` | Sinch project ID |
| `PROJECT_ID_API_KEY` | Project API key (key ID) |
| `PROJECT_ID_API_SECRET` | Project API secret |


### Voice API

| Variable | Description |
|  --- | --- |
| `VOICE_APPLICATION_KEY` | Voice application key |
| `VOICE_APPLICATION_SECRET` | Voice application secret |


### Conversation API

| Variable | Description |
|  --- | --- |
| `CONVERSATION_APP_ID` | Conversation application ID |
| `CONVERSATION_REGION` | Region: `US` (default), `EU`, or `BR` — C# only |


### SMS API

| Variable | Description |
|  --- | --- |
| `SMS_SERVICE_PLAN_ID` | SMS service plan ID |


### Numbers API

| Variable | Description |
|  --- | --- |
| `ENABLE_NUMBERS_API` | Set to `true` to enable |


### Verification API (C# only)

| Variable | Description |
|  --- | --- |
| `VERIFICATION_APPLICATION_ID` | Verification application ID |
| `VERIFICATION_APPLICATION_SECRET` | Verification application secret |


### ElevenLabs

| Variable | Description |
|  --- | --- |
| `ELEVENLABS_API_KEY` | ElevenLabs API key |
| `ELEVENLABS_AGENT_ID` | Agent ID for Conversational AI |
| `ELEVENLABS_AUTO_CONFIGURE` | Set to `true` to auto-configure webhook during tunnel start |


### Runtime internals (set automatically)

| Variable | Description |
|  --- | --- |
| `API_URL` | Internal API URL (set by the platform) |
| `FUNCTION_ID` | Function ULID (set by the platform) |
| `PORT` | HTTP port (default: `3000`) |
| `VERBOSE` | Set to `true` for detailed runtime logging |


## Notes

- Clients are lazily initialized and cached on first access. Changing environment variables at runtime does not re-initialize clients.
- The `@sinch/sdk-core` package underpins all Node.js clients. The `Sinch` NuGet package underpins all C# clients.