## Troubleshooting

| Symptom | Likely cause | Fix |
| --- | --- | --- |
| `Initialize` → `kInvalidParameters` | Missing `apiKey` | Set `InitParams.apiKey` before calling `Initialize`. |
| `Initialize` → `kInitializationFailed` | Auth or DNS failure | Verify the API key. Check network/DNS connectivity to the Sanas cloud. |
| `CreateAudioProcessor` → `kUnsupportedSampleRate` | Invalid sample rate | Use 8000, 16000, or 48000 Hz. |
| `CreateAudioProcessor` → `kInvalidParameters` | Misconfigured `AudioParams` | For LT: both `languageIn` and `languageOut` must be non-empty. Do not set `modelName` when using `WithLanguages`. |
| `CreateAudioProcessor` → `kProcessorLimitReached` | Too many concurrent processors | Destroy idle processors before creating new ones. |
| Output is silence | Processor not yet `kReady` | Wait for `onState(kReady)` before calling `ProcessSamples`. Check for `kFailed` / `kDisconnected`. |
| Processor never reaches `kReady` | Auth or entitlement issue | Confirm LT is enabled for your account. Check SDK log files. |
| Choppy or distorted audio | Wrong format or pacing | Verify mono float −1..1, correct sample rate, ~20 ms frame rate. Increase jitter buffer prefetch on high-latency networks. |
| No transcript events | Missing callback | Pass a non-null `TranscriptCallback` as the 4th argument to `CreateAudioProcessor`. |

Log files are written to the directory specified by `InitParams.logPath` (default: working directory). Include log files when contacting Sanas support.

## Support & resources

| Resource | Details |
| --- | --- |
| Developer Console | Manage API keys and view account entitlements. |
| Sample code | `remote_sdk_example_lt.cc` ships with the SDK — a ready-to-build LT example. |
| SDK version | Available at runtime: `sanas::remote::GetSDKVersion()` |
| Log files | Written to `InitParams.logPath` — include when contacting support. |
| Support | Contact your Sanas account representative or reach support via the Developer Console. |
