# Get credentials > **New** > > Use **[Platform Studio](https://platform.zoom.us/)** to discover, purchase, build with, and manage Build Platform products. Create projects, get credentials, start a free trial, purchase a plan, and monitor usage. Create your API Key to access Build platform APIs and webhooks. ## Usage guidance - **API Key** — Use for server-to-server (S2S) calls. Key stays on your backend. - **JWT** — Use when a client app, such as a browser, mobile device, or desktop PC calls Zoom directly. JWT is short-lived and doesn't expose your secret. If you are making API calls from a client to Zoom (not S2S), use JWT so your key is not compromised in an attack. **Never embed raw API keys or secrets in client-side code.** ## Create API Key 1. In **Platform Studio**, click **Credentials**. 2. Click **Create** next to **API Keys**. 3. Enter a **Name**. This is optional and internal only. If you don't chose a name, Platform Studio uses a default. 4. **Expires after**. Choose an expiration option: Never, 30 days, 90 days, 180 days, 1 year. 5. **IP allowlist**. Enter any IP addresses that you want to allow, or empty to allow all. 6. **Permissions**. Choose scopes for APIs. These depend on your product. You can choose multiple permissions for multiple products for one key, or limit permissions as needed. 7. Click **Create key**. 8. API key created. You'll see a modal dialog with the key and the instructions: _This is your new API key. Make sure to copy it before closing this dialog. For security reasons, it will not be shown again._ Copy your key and put it in a key manager. 9. Click **Close**. You'll get a confirmation dialog to confirm that you copied your key before the modal closes: _Have you saved your key? It cannot be shown again once this dialog closes._ You will not be able to access your key again. Click **Close anyway** or **Go back**. ### Table of API keys Click an action to manage your key: - **Edit** - Change the name and permissions. You can't change the expiration time. - **Disable**/**re-enable** - Choose to disable or re-enable a key. - **Revoke your key** - Choose to revoke your key. Applications using this key will immediately lose access. This action cannot be undone. This also removes the key from the table. ### Review credential details Click a key name to review the details about it. - **Name** - The key name. - **ID** - The ID, for internal support. - **User ID** - The ID of the user who created the key. - **Permissions** - The permissions the key has. - **Status** - The key status, Active or disabled. - **Expires** - The expiration date and time, or "Never". - **Created** - The date and time the key was created. - **Updated** - The date and time the key was updated. ## Create JWT The JWT is created from your account API key and secret. To generate your JWT, click **View JWT Token**. ### Expiration time - Expire in - Choose the time for the key to expire. 90 minutes, 1 day, or 1 week. - Expiration time - The expiration time for your JWT. For example: _Your token will expire at HH:MM MM/DDYYYY._ ### Copy JWT Copy your JWT from the **JWT Token** field. ## Make your first API call on Platform Studio Use the [Platform Studio](https://platform.zoom.us/) playground to make API calls to Zoom AI Services and explore their capabilities before integrating them into your application. Select an AI Services API, configure its input and options, and run the request to view the results. 1. Sign in to [Platform Studio](https://platform.zoom.us/). Under **AI Services**, you can access **Scribe**, **Summarize**, and **Translate**. 2. Select an AI Services API to make your first API call and explore its features. - **Scribe API:** In **Input**, make a recording, use a sample conversation, or enter a URL for a public audio or video file. Configure the language, model, and features, then select **Run**. View the results in **Output** in preview mode or as raw data. - **Summarize API:** In **Input**, use a sample transcript, paste transcript text, or upload a transcript. Configure the output language, then select **Run**. View the results in **Output** in preview mode or as raw data. - **Translate API:** In **Input**, paste at least 4,000 characters or upload a text file. Configure the source and target languages, then select **Run**. View the results in **Output** in preview mode or as raw data. ## Example programmatic API call Here is an example for how to call a Scribe API outside of the playground. You can authenticate in the following ways: - Bearer token: `Authorization: Bearer TOKEN` using your API Key or JWT. - Custom header: `x-api-key: ZOOM_API_KEY` using your API Key. _When you send both the `x-api-key` custom header and a Bearer token, the `x-api-key` takes precedence._ Get your API key or JWT from Platform Studio. ### Authenticate with Bearer token This example calls the synchronous transcription endpoint for the Scribe API. Replace `TOKEN` with your JWT or API Key. ```shell curl -X POST https://api.zoom.us/v2/aiservices/scribe/transcribe \ -H "Authorization: Bearer TOKEN" \ -H "Content-Type: application/json" \ -d '{ "file": "https://www.mmsp.ece.mcgill.ca/Documents/AudioFormats/WAVE/Samples/AFsp/M1F1-Alaw-AFsp.wav", "config": { "language": "en-US", "output_format": "json" } }' ``` You should get a response code of `200 OK` and a response body that resembles the code that follows. ```json { "request_id": "AIAPISERVICE_a6ca3e...", "duration_sec": 5.869, "result": { "text_display": "Seed is needed to plant the spring corn.", "text_lexical": "seed is needed to plant the spring corn.", "segments": [ { "start": 0, "end": 2.934, "channel": 0, "speaker": "Speaker 1", "text": "Seed is needed to plant the spring corn.", "words": [ { "word": "Seed", "start": 0, "end": 0.366 } // ... ] } ] } } ``` ### Authenticate with Custom header You can also authenticate by adding your API key to the custom `x-api-key` header. ```shell curl --fail-with-body https://openapi-gateway.zoomdev.us/v2/aiservices/translator/translate \ -H "x-api-key: ZOOM_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "text": "We'\''re launching the developer preview this week, get ready to try it out!", "config": { "source_language": "en-US", "target_languages": ["zh-CN"] } }' ```