Skip to main content
The Sanas Console is where you manage everything outside your code — your account, projects, API keys, credit balance, and usage. The Sanas SDK is what runs in your code: you feed it interleaved float32 PCM frames and it returns processed frames — noise-cancelled, speech-enhanced, accent-converted, or translated into another language. This guide takes you all the way through: create an account and API key in the Console, install the SDK, process your first audio stream, then see that activity show up as usage and credit in the Console.
Time required: about 10 minutes. You need: a work email address you can receive mail at, and a supported Python interpreter. No credit card — new accounts start with $10.00 in free credit.

What you’ll build

1

An account

Your top-level organization, identified by an Account ID.
2

A project

A workspace inside the account that owns API keys and reports its own usage.
3

An API key

The credential your SDK integration authenticates with.
4

A working integration

The SDK installed and processing your first audio stream.

Part 1 · Set up in the Console

Step 1 — Create your account

Go to console.sanas.ai. You’ll land on the Sanas Console sign-in screen. Select Sign up at the bottom to switch to account creation.
signup-create-account
Enter your work email and select Create account.
Signup screen with a work email typed into the email field

Enter the work email you want the account created under

Prefer single sign-on? Sign up with Google creates the same account without a passcode step. The rest of this guide is identical either way.

Step 2 — Verify your email

Sanas signs you in with a one-time passcode instead of a password. Check your inbox for a 6-digit code and enter it, then select Verify.
signup-verify-passcode
The code is time-limited. If it lapses, use Resend Passcode — the link becomes available after the countdown finishes. Change lets you correct the address before requesting a new code.
Once verified, your account is created and you’re taken straight into the Console.

Step 3 — Check your free credit

New accounts land on Account & Billing — your prepaid credit wallet. Usage is metered per minute and drawn down from this balance in real time.
Account and Billing page showing a $10.00 available balance, free credit notice, auto-reload setting, monthly spend cap, per-product rate table, and billing history

Account & Billing — the prepaid credit wallet

What’s on this page:
Free credit is enough to start developing immediately. You only need a card when you want to purchase additional credit.

Step 4 — Create your first project

Select Home in the left sidebar. On a brand-new account, the Create your first project dialog opens automatically.
Create your first project modal showing the parent account, a Project Name field, and a Select Timezone dropdown

The Create your first project dialog on a new account

Fill in:
string
required
A name you’ll recognize later, such as My First Project.
string
default:"(UTC) Universal"
required
Utilisation and usage data are aggregated on this timezone and surfaced in the Reports section. Pick the timezone your team reads reports in.
create-first-project
Select Create Project.
Timezone affects how usage is bucketed into days in reports. Changing it later re-buckets how data is displayed, so choose deliberately up front.

Step 5 — You’re inside the project

Creating the project drops you straight into it. The left sidebar switches from account scope to project scope — note the Project ID under the project name, and the new project-only entries such as Sub Projects and API Keys.
Project dashboard showing the project name and Project ID in the sidebar, project-scoped navigation, a Create API Key button, an audio minutes chart, and Sanas feature cards

Project home — the sidebar is now scoped to the project

Every project has its own Project ID (visible in the sidebar and under the dashboard heading, with a copy button). Keep it handy — it identifies the project in support conversations and reporting.

Step 6 — Create an API key

From the project dashboard, select Create API Key in the top right.
Create API Key modal with Name, optional Description, and an Expiry dropdown

The Create API Key dialog

string
required
How the key appears in the keys list, for example Production Key.
string
Optional context — what the key is used by, and who owns it.
enum
default:"30 days"
One of 30 days, 90 days, 1 year, or No expiry.
Create API Key modal filled in with a name, description, and a 90 day expiry

A completed API key form

Select Create API Key.
Give each environment and each service its own key. Narrow keys are far easier to rotate or revoke than one shared key wired into everything.

Step 7 — Copy your key and store it somewhere safe

This is the only time the full key is shown. Copy it now and store it in a secrets manager, your CI/CD secret store, or your team’s password manager before you close this dialog. Sanas cannot show it to you again — if you lose it, your only option is to create a replacement key and update every integration that used the old one.
save-your-api-key
Use the copy icon to grab the key, paste it into your secret store, then select Done.
Never commit an API key to source control, paste it into a ticket or chat, or ship it in client-side code. Load it from an environment variable or secret manager at runtime.
Your key now appears in the project’s API Keys list — permanently masked, showing only its status, expiry, creation date, and last-used timestamp.
API Keys list showing one active key with a masked value, expiry date, created date, and last used column

The API Keys list — the key is masked from here on

Use the menu on any row to edit or revoke a key. The Last used column is the quickest way to spot keys that are no longer in service and can be retired.

Part 2 · Integrate the SDK

With an API key in hand, switch from the Console to your code. The Python package ships as a self-contained wheel: everything the SDK needs is bundled inside it, so there’s no separate native library to install.
The SDK does not open microphones or speakers for you — you bring your own audio (from a file, socket, or media stream). You push frames in with process_frame and read processed frames back.

Step 8 — Download and install the SDK

Select Get SDK at the bottom of the sidebar. Choose your platform and download the SDK package. The same dialog links to the full SDK usage documentation.
Download SDK dialog with a platform selector, the SDK file name and size, a Download SDK button, and a View full documentation link

Get SDK — download the package for your platform

You only need a supported CPython interpreter and pip — no extra tooling required. The wheel in your archive targets the Python version named in its filename:
Pick the archive whose <pytag> matches your interpreter (e.g. cp310 for Python 3.10; cp312 for Python 3.12 or newer).
Your archive is laid out like this:
Create a virtual environment and install the wheel from inside the extracted archive directory.

Step 9 — Verify the installation

Step 10 — Choose your capability and model

The SDK runs in one of two modes. The setup flow is identical — you always create_sdkactivate_api_keycreate_audio_processor and wait for PipelineState.RUNNING — but how you select the mode and what you get back differ: For audio processing, set model_name to one of the model keys enabled for your account:
This page covers Language Translation inside the Python SDK (selected via lt_config). Sanas also offers a standalone, browser-friendly Language Translation API (JavaScript client) for real-time speech-to-speech in the browser — use that instead of the SDK if you’re building a web app.

Step 11 — Process your first audio stream

Two things to understand before reading the code:
  • The pipeline initializes asynchronously. After you create a processor, wait for PipelineState.RUNNING (via the audio_pipeline_state_notify callback) before feeding frames.
  • process_frame is synchronous but expects real-time audio. Feed frames at the rate they would arrive live (one 20 ms frame every 20 ms). The snippets below pace with a monotonic-clock deadline so timing doesn’t drift. The two tabs below show the only difference between the modes: Audio Processing sets a model_name; Language Translation leaves it empty and passes an lt_config instead. Pass the API key you copied in Step 7 as YOUR_API_KEY.
Create sdk_example.py and set model_name to one of your enabled model keys.
examples/helpers.py provides PipelineWaiter, sleep_until, and feed_and_drain, which wrap steps 3–4 above — prefer them over hand-rolling the loop.

Cloud inference tuning (optional)

When the SDK runs on cloud / remote inference (the default), you can pass a CloudInferencingParams on AudioAttributes.cloud_inferencing_params to tune the remote path. These parameters are only meaningful for cloud inference and are ignored for local inference. The field is optional — omit it to keep the defaults.
Leave cloud_inferencing_params unset (or use_pcm16=False) unless you specifically need raw PCM uplink — the rate-default codec is the recommended default for most sessions.
Once the SDK is initialized with a valid key and a model, you can start running inference. Every stream you process is metered against the project that owns the key.

Step 12 — Run the examples

The examples/ folder is self-contained (standard-library helpers only, no numpy). With your venv active, set the required environment variables and run an example from inside the extracted archive:
SANAS_STORAGE_DIR is where the SDK keeps its data and writes logs (under storage_dir/logs).

Part 3 · Monitor usage and manage the account

Step 13 — Switch between projects and your account

The Console has two scopes, and knowing how to move between them is the key to reading your data correctly.

Account scope

Everything across all projects: total usage, the credit wallet, billing, team, and account settings.

Project scope

One project only: its API keys, sub projects, connected clients, and its own usage.
To switch, select the name card at the top of the sidebar. The account sits at the top of the dropdown, with its projects nested beneath it. Choose the account to go account-wide, or any project to scope down. The same switcher is available from the breadcrumb in the header.
Sidebar switcher expanded showing the account row with the project nested underneath, a project search field, and a Create Project button

The switcher — account on top, projects nested beneath

The dropdown also holds Search Projects… and + Create Project, so this is the fastest way to add projects two and beyond — the automatic first-project dialog only appears once.
You can also browse every project from Projects in the account sidebar, which shows each project’s ID, API key count, connected clients, and creation date.
Projects list showing project name, Project ID, connected clients, API keys, users, and created date, with a Create Project button

The Projects list at account scope

Step 14 — Watch usage and credit move

Once inference is running through the SDK, the Console reflects it in two places.

Usage in the project

Open Usage inside the project to see only what that project’s keys processed — streams processed, audio minutes, and average stream duration, with charts over time. Filter by product and by date range.
Project Usage page showing 12 streams processed, 14 minutes of audio processed, and a 1m 11s average stream duration, above two time-series charts with a single-day spike

Project-scoped usage — 12 streams, 14 minutes of audio

Usage across the account

Now switch to the account using the sidebar switcher and open Usage there. Same metrics, aggregated across every project — this is the number to watch as you add projects.
Account-level Usage page showing aggregated streams processed, audio minutes processed, and average stream duration across all projects

Account-scoped usage, aggregated across all projects

With a single project the two views match. Once you add projects, the account view is the only place the totals line up — a project view can never show you the whole bill.

Credit drawing down

Back on Account & Billing, the same activity shows up as money. Compare this with the fresh wallet in Step 3 — the balance has moved from 10.00to10.00** to **9.76:
  • Current balance drops as minutes are processed.
  • Spent this cycle rises to match.
  • Usage this month breaks the spend out per product, at each product’s per-minute rate — here 14m 12s of audio costing $0.24 in total.
Account and Billing page showing a reduced balance of $9.76, $0.24 spent this cycle, and a usage table breaking 14m 12s of processing down across four products

The wallet after processing — balance down, spend broken out per product

Because rates differ sharply per product, minutes alone don’t tell you the cost — the same two minutes cost $0.18 on Language Translation but under a cent on Cloud Speech Enhancement. Use the Cost column, not the Usage column, to see where your credit actually goes.
Usage is metered per minute and drawn down in real time, so a burst of inference is visible on both the Usage pages and the wallet shortly after it runs. Reporting is aggregated on the timezone you chose when creating the project.
Usage this month is scoped to the current calendar month, so it resets on the 1st while Current balance keeps falling across months. If the balance has dropped but this panel reads $0.00, the processing happened in an earlier period — widen the range on the Usage page to find it.
When credits run out, the wallet status flips to Paused — paid usage stops until you add credits. Add a payment method and turn on auto-reload before you depend on Sanas in production, so a busy day can’t interrupt your service.

Signing back in

Return to console.sanas.ai any time. Enter your email, select Continue, and verify with a fresh passcode — or use Google if that’s how you signed up.
signin

Key SDK types

InitParams, create_sdk, Sdk, AudioAttributes, ProcessorAttributes, AudioProcessor, AudioFrame, LanguageTranslationConfig, CloudInferencingParams, PipelineState, SdkResult.

Troubleshooting

Check spam and any corporate mail filtering. Wait for the resend countdown to finish, then select Resend Passcode. Use Change to correct a typo in the address rather than requesting more codes to the wrong inbox.
The full key is unrecoverable by design. Create a new key, update your integration, and revoke the old one from the menu in the API Keys list.
It only opens automatically for accounts with no projects. Use Projects → Create Project, or + Create Project in the sidebar switcher.
You’re at account scope. API keys belong to a project — select a project in the sidebar switcher, then choose API Keys.
Confirm the wheel tag matches your interpreter (cp310 for Python 3.10; cp312-abi3 for 3.12+). Install from inside the extracted archive so pip install sanas-*.whl resolves the bundled wheel, and make sure your venv is activated first.
Activation and model selection are the usual causes. Check that activate_api_key returned success, that model_name is a key enabled for your account (or that lt_config is set for Language Translation), and that you waited on the audio_pipeline_state_notify callback before feeding frames.
Confirm the date-range filter covers when you ran inference, and that you’re looking at the project whose key the SDK is using. Check at account scope to rule out having run against a different project. Usage is aggregated on the project’s configured timezone, so very recent activity may sit in the current day’s bucket.
Check Account & Billing. If the status pill reads Paused, either credits ran out or the monthly spend cap was reached for the calendar month. Add credits to resume, or raise the cap with the pencil icon next to it.

Next steps

Process multiple streams

Scale to multiple concurrent audio streams with a shared SDK instance.

Add your team

Invite teammates from Team and give them access to the account or an individual project.

Add a payment method

Put a card on file to purchase credit and enable auto-reload before free credit runs out.

Organize with sub projects

Split a project into sub projects to separate environments or customers while keeping usage rolled up.

Need help?

Email Support

support@sanas.ai · Response time: 1 business day

Support Portal

Raise a support ticket for urgent issues.