# Invite standalone Notetaker to meeting

> **POST** `https://api.us.nylas.com/v3/notetakers`

Source: https://developer.nylas.com/docs/reference/api/standalone-notetaker/invite-standalone-notetaker/

Adds a standalone Notetaker bot to the specified meeting.

<div id="admonition-info">ℹ️ <b>Nylas doesn't de-duplicate Notetaker bots</b>. Every <code>POST /v3/notetakers</code> request you make invites a new Notetaker to the specified meeting.</div>

**Authentication:** NYLAS_API_KEY

## Request body

Content-Type: application/json

- `join_time` (integer) - When the Notetaker bot should join the meeting, in seconds using the Unix timestamp format. If
you don't specify a time, Notetaker joins the meeting immediately.

If you provide a time that's in the past, Nylas returns an error.
- `meeting_link` (string) **(required)** - A meeting invitation link that Notetaker uses to join the meeting.
- `meeting_settings` (object) - A collection of settings for the Notetaker bot.
  - `action_items` (boolean) - When `true`, Notetaker generates a list of action items from the meeting. If `action_items` is
`true`, `video_recording`, `audio_recording`, and `transcription` must also be `true`.
  - `action_items_settings` (object)
    - `custom_instructions` (string) - A custom prompt to pass to Nylas' AI model and specify settings for the list of action items
it generates. `action_items` must be `true` to use this field.
  - `audio_recording` (boolean) - When `true`, Notetaker records the meeting's audio.
  - `leave_after_silence_seconds` (integer) - The number of seconds of silence after which the Notetaker bot automatically leaves
the meeting. This helps end recordings when meetings have concluded but participants
haven't disconnected the call. Must be between 10 and 3600 seconds (1 hour).
  - `summary` (boolean) - When `true`, Notetaker generates a summary of the meeting. If `summary` is `true`,
`video_recording`, `audio_recording`, and `transcription` must also be `true`.
  - `summary_settings` (object)
    - `custom_instructions` (string) - A custom prompt to pass to Nylas' AI model and specify settings for the summary it generates.
`summary` must be `true` to use this field.
  - `transcription` (boolean) - When `true`, Notetaker transcribes the meeting's audio. If `transcription` is `true`,
`video_recording` and `audio_recording` must also be `true`.
  - `video_recording` (boolean) - When `true`, Notetaker records the meeting's video.
  - `transcription_settings` (object) - Optional settings that tune how Notetaker transcribes audio. `transcription` must be
`true` for these settings to take effect. Provide any combination of the fields below.

The fields fall into two independent groups:

- **Language hints** (`expected_languages`, `fallback_language`) constrain automatic
  language detection. This declares the languages you expect; it does not translate
  transcripts or force the recording into a specific language.
- **Keyword hints** (`keywords`, `use_speaker_names_as_keywords`) bias recognition toward
  domain-specific terms such as names, acronyms, and product names.

Set on individual Notetakers, on calendar sync, or on event sync. When set on a calendar,
events inherit the value unless the event's own request overrides it. Send `null` or `{}`
to clear inherited settings and return to default transcription behavior.

See [Set transcription languages](/docs/v3/notetaker/#set-transcription-languages) for
supported language codes and validation rules.
    - `expected_languages` (array) - Language codes the audio is expected to contain. Optional. When provided, it must
contain at least one supported code and cannot be `null` or empty. When omitted,
transcription considers all supported languages.
    - `fallback_language` (string) - Language to use if Notetaker does not detect one of the `expected_languages`. Optional.
When `expected_languages` is set, the fallback must be one of those codes. When
`expected_languages` is omitted, transcription considers all supported languages and
the fallback may be any supported code. When `fallback_language` is omitted, the
transcriber auto-detects the language. The field is not stored, so responses do not
return it.
    - `keywords` (array) - Domain-specific terms that bias transcription toward recognizing them correctly, such
as names, acronyms, and product names. Optional. Up to 200 terms; each term must be
1 to 200 characters and cannot contain control characters. Cannot be `null`.
    - `use_speaker_names_as_keywords` (boolean) - When `true`, Notetaker adds known speaker names to the keyword set so they are
transcribed accurately. Optional. Cannot be `null`.
- `name` (string) - The display name for the Notetaker bot.

## Responses

### 201 - Success. Returns information about standalone Notetaker bot.

- `request_id` (string) - The request ID.
- `data` (object)
  - `id` (string) - The Notetaker ID.
  - `join_time` (integer) - When Notetaker joined the meeting, in seconds using the Unix timestamp format.
  - `meeting_link` (string) - The meeting link.
  - `meeting_provider` (string) - The meeting provider.
  - `meeting_settings` (object) - A collection of settings for the Notetaker bot.
    - `action_items` (boolean) - When `true`, Notetaker generates a list of action items from the meeting. If `action_items` is
`true`, `video_recording`, `audio_recording`, and `transcription` must also be `true`.
    - `action_items_settings` (object)
      - `custom_instructions` (string) - A custom prompt to pass to Nylas' AI model and specify settings for the list of action items
it generates. `action_items` must be `true` to use this field.
    - `audio_recording` (boolean) - When `true`, Notetaker records the meeting's audio.
    - `leave_after_silence_seconds` (integer) - The number of seconds of silence after which the Notetaker bot automatically leaves
the meeting. This helps end recordings when meetings have concluded but participants
haven't disconnected the call. Must be between 10 and 3600 seconds (1 hour).
    - `summary` (boolean) - When `true`, Notetaker generates a summary of the meeting. If `summary` is `true`,
`video_recording`, `audio_recording`, and `transcription` must also be `true`.
    - `summary_settings` (object)
      - `custom_instructions` (string) - A custom prompt to pass to Nylas' AI model and specify settings for the summary it generates.
`summary` must be `true` to use this field.
    - `transcription` (boolean) - When `true`, Notetaker transcribes the meeting's audio. If `transcription` is `true`,
`video_recording` and `audio_recording` must also be `true`.
    - `video_recording` (boolean) - When `true`, Notetaker records the meeting's video.
    - `transcription_settings` (object) - Optional settings that tune how Notetaker transcribes audio. `transcription` must be
`true` for these settings to take effect. Provide any combination of the fields below.

The fields fall into two independent groups:

- **Language hints** (`expected_languages`, `fallback_language`) constrain automatic
  language detection. This declares the languages you expect; it does not translate
  transcripts or force the recording into a specific language.
- **Keyword hints** (`keywords`, `use_speaker_names_as_keywords`) bias recognition toward
  domain-specific terms such as names, acronyms, and product names.

Set on individual Notetakers, on calendar sync, or on event sync. When set on a calendar,
events inherit the value unless the event's own request overrides it. Send `null` or `{}`
to clear inherited settings and return to default transcription behavior.

See [Set transcription languages](/docs/v3/notetaker/#set-transcription-languages) for
supported language codes and validation rules.
      - `expected_languages` (array) - Language codes the audio is expected to contain. Optional. When provided, it must
contain at least one supported code and cannot be `null` or empty. When omitted,
transcription considers all supported languages.
      - `fallback_language` (string) - Language to use if Notetaker does not detect one of the `expected_languages`. Optional.
When `expected_languages` is set, the fallback must be one of those codes. When
`expected_languages` is omitted, transcription considers all supported languages and
the fallback may be any supported code. When `fallback_language` is omitted, the
transcriber auto-detects the language. The field is not stored, so responses do not
return it.
      - `keywords` (array) - Domain-specific terms that bias transcription toward recognizing them correctly, such
as names, acronyms, and product names. Optional. Up to 200 terms; each term must be
1 to 200 characters and cannot contain control characters. Cannot be `null`.
      - `use_speaker_names_as_keywords` (boolean) - When `true`, Notetaker adds known speaker names to the keyword set so they are
transcribed accurately. Optional. Cannot be `null`.
  - `name` (string) - The display name for the Notetaker bot.
  - `object` (string) - The type of object.
  - `state` (string) - The current state of the Notetaker bot.
  - `status` (string) - The current status of the Notetaker bot.

### 400 - Bad Request

- `request_id` (string) - The request ID.
- `error` (object) - The response error object.
  - `type` (string) - The error type.
  - `message` (string) - The error message.
  - `provider_error` (object) - The error from the provider.

### 401 - Unauthorized

- `request_id` (string) - The request ID.
- `error` (object) - The response error object.
  - `type` (string) - The error type.
  - `message` (string) - The error message.
  - `provider_error` (object) - The error from the provider.

### 429 - Rate Limit

- `request_id` (string) - The request ID.
- `error` (object) - The response error object.
  - `type` (string) - The error type.
  - `message` (string) - The error message.

## Code samples

### cURL

```bash
curl --request POST \
  --url "https://api.us.nylas.com/v3/notetakers" \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer <NYLAS_API_KEY>' \
  --header 'Content-Type: application/json' \
  --data '{
    "join_time": 1732657774,
    "meeting_link": "https://meet.google.com/xyz-abcd-ijk",
    "meeting_settings": {
      "action_items": true,
      "action_items_settings": {
        "custom_instructions": "Only return the 5 most important action items."
      },
      "audio_recording": true,
      "leave_after_silence_seconds": 360,
      "summary": true,
      "summary_settings": {
        "custom_instructions": "Return this summary in the MEDPIC sales methodology."
      },
      "transcription": true,
      "transcription_settings": {
        "expected_languages": ["en", "es"],
        "fallback_language": "en"
      },
      "video_recording": true
    },
    "name": "Nylas Notetaker"
  }'
```

### Node.js SDK

```javascript
import Nylas from "nylas";

const nylas = new Nylas({
  apiKey: "<NYLAS_API_KEY>",
  apiUri: "<NYLAS_API_URI>",
});

async function inviteStandaloneNotetaker() {
  try {
    const notetaker = await nylas.notetakers.create({
      requestBody: {
        meetingLink: "https://meet.google.com/abc-defg-hij",
        name: "Nylas Notetaker",
        meetingSettings: {
          videoRecording: true,
          audioRecording: true,
          transcription: true,
        },
      },
    });

    console.log("Standalone notetaker:", notetaker);
  } catch (error) {
    console.error("Error inviting notetaker:", error);
  }
}

inviteStandaloneNotetaker();

```

### Python SDK

```python
from nylas import Client

nylas = Client(
    "<NYLAS_API_KEY>",
    "<NYLAS_API_URI>",
)

notetaker = nylas.notetakers.invite(
    request_body={
        "meeting_link": "https://meet.google.com/abc-defg-hij",
        "name": "Nylas Notetaker",
        "meeting_settings": {
            "video_recording": True,
            "audio_recording": True,
            "transcription": True,
        },
    },
)

print("Invited standalone notetaker:", notetaker)

```

### Java SDK

```java
import com.nylas.NylasClient;
import com.nylas.models.CreateNotetakerRequest;
import com.nylas.models.Notetaker;
import com.nylas.models.NylasApiError;
import com.nylas.models.NylasSdkTimeoutError;
import com.nylas.models.Response;

public class InviteStandaloneNotetaker {
  public static void main(String[] args) throws NylasSdkTimeoutError, NylasApiError {
    NylasClient nylas = new NylasClient.Builder("<NYLAS_API_KEY>").build();

    CreateNotetakerRequest.MeetingSettings meetingSettings =
        new CreateNotetakerRequest.MeetingSettings.Builder()
            .videoRecording(true)
            .audioRecording(true)
            .transcription(true)
            .build();

    CreateNotetakerRequest requestBody = new CreateNotetakerRequest.Builder(
        "https://meet.google.com/abc-defg-hij")
        .name("Nylas Notetaker")
        .meetingSettings(meetingSettings)
        .build();

    // Omit the grant identifier to create a standalone (account-level) Notetaker.
    Response<Notetaker> notetaker = nylas.notetakers().create(requestBody);

    System.out.println("Standalone notetaker: " + notetaker.getData());
  }
}

```

### Kotlin SDK

```kotlin
import com.nylas.NylasClient
import com.nylas.models.CreateNotetakerRequest

fun main() {
  val nylas = NylasClient.Builder("<NYLAS_API_KEY>").build()

  val meetingSettings = CreateNotetakerRequest.MeetingSettings.Builder()
      .videoRecording(true)
      .audioRecording(true)
      .transcription(true)
      .build()

  val requestBody = CreateNotetakerRequest.Builder("https://meet.google.com/abc-defg-hij")
      .name("Nylas Notetaker")
      .meetingSettings(meetingSettings)
      .build()

  // Omit the grant identifier to create a standalone (account-level) Notetaker.
  val notetaker = nylas.notetakers().create(requestBody)

  println("Standalone notetaker: ${notetaker.data}")
}

```
