# Happy Scribe integration

> Transcription, subtitling, translation and AI meeting notetaker API: create orders from media URLs, export transcripts and subtitles, send notetaker bots to calls, and manage meetings, members and webhooks.

- Authentication: apiKey

## Tools (66)

- **Add a membership**: Adds a user to the workspace. If the email belongs to an existing HappyScribe user they become a member instantly (`201 Created`); otherwise an invitation email is sent (`202 Accepted`).
- **Archive a workspace**: Archives the workspace. Only the workspace owner can do this, and the consequences are immediate and serious: the workspace's subscription is cancelled, every member loses access, and it can no longer be acted on through the API.
- **Cancel a bot**: Cancels a bot created through the API, for example when its meeting is cancelled. What happens depends on its status:
- **Confirm an order**: Confirms an order previously created with `confirm: false`. Once confirmed, the order begins processing according to the selected service type.
- **Create a bot**: Dispatches a notetaker bot to a Zoom, Google Meet, or Microsoft Teams call. The bot records the call, creates a conversation, and generates a summary.
- **Create a brand kit**: Creates a brand kit and brands every workspace in `workspace_ids` with it, replacing whatever kit they used.
- **Create a calendar connect link**: A hosted link that takes one of your users through Google or Microsoft consent and connects their calendar.
- **Create a member**: Creates a partner end user inside a workspace. Idempotent on `workspace_id` and `email`: a second call returns the existing member with `200`, unchanged (its `name` and `metadata` stay as they are;
- **Create an export**: Creates a new export of one or more conversations. Generation is generally fast (~10s per file). Poll the export until its state is `ready`, then download it from `download_link`.
- **Create a webhook endpoint**: Registers a receiver for a workspace's events. The key must be an owner or admin of the workspace, and a workspace holds at most 10 endpoints.
- **Create a workspace**: Creates a workspace with the caller as its owner. The new workspace starts on the free plan.
- **Delete a brand kit**: Every workspace that used the kit goes back to HappyScribe's default branding. The key must be an owner or admin of all of them.
- **Delete a conversation**: Deletes a conversation. By default it is moved to the Trash; pass `permanent=true` to delete it irreversibly.
- **Delete a member**: Removes the member from the workspace: their calendar is disconnected and the bots still scheduled from it are cancelled. Past meetings are kept.
- **Delete a webhook endpoint**: Its deliveries are deleted with it, and nothing more is sent to it.
- **Disconnect a calendar**: Stops syncing the calendar and cancels the bots it scheduled. Past meetings, the member and their settings stay. Calling it again returns the disconnected connection.
- **Get a brand kit**: Get a brand kit
- **Get a calendar connection**: Get a calendar connection
- **Get a calendar connect link**: The link and its outcome, for when you'd rather not read it from `return_url` or the webhook.
- **Get a file**: Any key that belongs to the file's workspace can read it. The `url` is signed again on every read.
- **Get a meeting**: The meeting with its schedule, people, settings, recordings and the status of its results. Fetch the content with `GET /meetings/{id}/results`.
- **Get a meeting's results**: Transcript, speakers, summary and media in one read. Each part has its own `status`: the transcript is ready before the summary. Media URLs are signed for one hour (`media.expires_at`);
- **Get a member**: Get a member
- **Get a policy**: What a workspace, a member or a meeting sets. A meeting's policy holds only its own overrides; what will happen is the meeting's `effective_policy`.
- **Get a signed upload URL**: Returns a signed URL that accepts a `PUT` request with your media file, uploading it directly to HappyScribe's S3 storage.
- **Get a webhook endpoint**: Get a webhook endpoint
- **Get a webhook event**: The event with its payload, shaped as this request's API version has it, and every delivery attempt.
- **List all conversations**: Returns the conversations you've previously created, most recent first. The response contains metadata about each conversation, not the transcript content — use Exports to retrieve content.
- **List brand kits**: The brand kits used by at least one workspace the key belongs to, oldest first. Kits created in the dashboard are listed too and get a `brk_` id the first time they are read.
- **List calendar connections**: A workspace's calendar connections, oldest first, including disconnected ones.
- **List companies**: Returns a paginated list of companies discovered in your workspace's meeting transcripts, sorted by name ascending.
- **List consent events**: Returns the workspace's consent events, newest first — the outcomes the [Trust Engine](/meetings/consent) records as it collects consent for your meetings.
- **List glossaries**: Returns the glossaries available in the workspace. Use glossary IDs when creating orders to apply custom terminology during transcription or translation.
- **List meetings**: The meetings of one workspace, whether they came from a connected calendar or a bot. Upcoming meetings are listed soonest first; any other list, latest start first.
- **List members**: The members of one workspace, oldest first. Members who joined through the HappyScribe app are listed too and get a `mem_` id the first time they are read.
- **List memberships**: Returns memberships across all workspaces the caller belongs to, paginated at 25 results per page. Owners and admins see every member; regular members see only their own row.
- **List people**: Returns a paginated list of people discovered in your workspace's meeting transcripts, sorted by name ascending.
- **List style guides**: Returns the style guides available in the workspace. Use style guide IDs when creating orders to apply formatting and transcription preferences.
- **List webhook endpoints**: The webhook endpoints of the workspaces the key administers, oldest first, including the ones added in **Settings → Webhooks**. The signing secret is never listed.
- **List webhook events**: The events sent to the endpoints of the workspaces the key administers, newest first, for 90 days. Each carries how every delivery went; fetch one event for its payload and each attempt.
- **List workspaces**: Returns the workspaces the authenticated user belongs to, oldest first, paginated at 100 per page.
- **Push a calendar event**: For partners that sync calendars themselves. Send each event as your calendar provider returned it — a Google Calendar event, a Microsoft Graph event or a Nylas event — or in the small shape, and get back the calendar event of that occurrence (`source: calendar_sync`), with the `meeting_id` of its meeting.
- **Redeliver a webhook event**: Sends the event again to an endpoint it was already sent to, with a fresh set of retries, whatever its delivery's status.
- **Remove a membership**: Removes a member from the workspace. The owner cannot be removed through this endpoint. Requires an `owner` or `admin` role.
- **Retrieve a bot**: Retrieves a bot, including the full transcript and summary once they are ready. Poll this endpoint or configure a bot webhook for push updates.
- **Retrieve a company**: Returns a single company by ID.
- **Retrieve a consent event**: Retrieve a consent event
- **Retrieve a conversation**: Retrieves metadata about a specific conversation. To retrieve the transcript content, use Exports.
- **Retrieve a meeting summary**: Returns the AI-generated meeting summary for a notetaker recording. The summary URL is also available as `meeting.summary_url` in the conversation response.
- **Retrieve an export**: Retrieves an export. When its state is `ready`, download the file from `download_link`.
- **Retrieve an order**: Retrieves an order by ID. Use it to check the order status, view pricing details, and access the generated conversations when the order is fulfilled.
- **Retrieve a person**: Returns a single person by ID.
- **Send a test event**: Sends a signed sample event to the endpoint and answers once your receiver has, so `deliveries[0].last_attempt.response_code` is what it returned. A receiver that fails is retried like any delivery.
- **Subtitle media**: Creates a subtitling order from a media URL. Works exactly like `POST /transcribe` but the result is a subtitle file, editable in the subtitle editor and exportable to formats like SRT and VTT.
- **Transcribe media**: Creates a transcription order from a media URL. By default the order is submitted immediately (`confirm: true`) and processing starts as soon as the file is ingested.
- **Translate a file**: Creates a translation order from a source conversation and one or more target languages. One translated conversation is generated per target language.
- **Update a bot**: Moves a bot created through the API when its meeting moves, or replaces its participants or metadata. Send only the fields you are changing.
- **Update a brand kit**: Changes apply to every workspace that uses the kit. Omitted fields keep their values; `null` resets a text field to its default.
- **Update a conversation**: Updates an existing conversation: rename it, move it to another folder in the same workspace, and/or toggle link sharing — any combination in one request.
- **Update a meeting's metadata**: Changes the meeting's `metadata`, the only field you set on a meeting. A change of metadata alone sends no `meeting.updated` webhook.
- **Update a member**: Changes the member's name. The member's policy changes through `PATCH /policies/{id}`.
- **Update a membership's role**: Changes a member's role to `admin` or `member`. The owner's role cannot be changed through this endpoint. Requires an `owner` or `admin` role.
- **Update a policy**: Writes only the fields you send. Each owner takes a subset:
- **Update a webhook endpoint**: Omitted fields keep their values. Disabling an endpoint stops its deliveries, retries included. Moving `api_version` changes the shape of every event sent from then on, retries included.
- **Update a workspace**: Renames the workspace, changes its metadata, or both. The caller must be an owner or admin.
- **Upload a file**: Uploads an image to a workspace, as `multipart/form-data`, and returns a file with a `file_` id.

Connect Happy Scribe in General Input: https://www.generalinput.com/apps/happy-scribe