# Changelog
Source: https://docs.fireflies.ai/additional-info/change-log
Recent updates to the Fireflies API
## Overview
This document maintains a chronologically ordered list of notable changes for each version of the Fireflies API. It's designed to make it easier for you to keep track of new features, improvements, and bug fixes.
### 2.4.5
Reduced the minimum file size for `uploadAudio` mutation to 50kb.
### 2.4.4
Field `client_reference_id` in [AudioUpload](/graphql-api/mutation/upload-audio) was limited to 32 characters as part of input validation. It has now been increased to 128 characters.
### 2.4.3
Added length validation for all input fields.
### 2.4.2
Added `updateMeetingTitle` mutation to update meeting titles. For more details, view [Update Meeting Title](/graphql-api/mutation/update-meeting-title)
### 2.4.1
Made improvements to the performance and stability of the Fireflies API.
### 2.4.0
Added `mine` field to [Transcripts](/graphql-api/query/transcripts) query
Added breaking changes to [Transcripts](/graphql-api/query/transcripts) query that allows you to only use one of the following fields: `organizer_email`, `participant_email`, `user_id`, `mine` at a time
### 2.3.17
Added `meeting_link` field to [Transcript](/schema/transcript) schema
### 2.3.16
Added `apps` query to fetch AI App Outputs. For more details, view [Apps](/graphql-api/query/apps)
### 2.3.15
Fixed bug in `transcripts` query where it was not returning the correct match.
### 2.3.14
Added support for webhook auth. For more details, view the [Webhooks](/graphql-api/webhooks) page
### 2.3.13
Added new fields to summary to [Summary](/schema/summary) schema
### 2.3.12
Added fields `cal_id` and `calendar_type` to [Transcript](/schema/transcript) schema
### 2.3.11
Fixed bug in `transcript.sentences` query where it was incorrectly returning null
Made improvements to the performance and stability of the Fireflies API.
### 2.3.10
Added field `attendees` to [addToLive](/graphql-api/mutation/add-to-live) mutation
### 2.3.9
Added field `meeting_info` for meeting metadata.
Updated `uploadAudio` mutation to allow saving video
### 2.3.8
Added field `speakers` in transcript.
Updated docs to include error codes and their explanations. View details
[here](/miscellaneous/error-codes)
### 2.3.7
Added new fields for `transcript.summary`. View details on the [Summary](/schema/summary) schema
page
### 2.3.6
Updated docs for webhooks to include webhook schema
Added `client_reference_id` field for audio upload
### 2.3.5
Added argument `custom_language` for `uploadAudio`.
### 2.3.4
Added query argument `fromDate` and `toDate` for `transcripts`. View more details
[here](/graphql-api/query/transcripts). Field `date` has been deprecated in favor of these
arguments
### 2.3.3
Added mutation for `addToLiveMeeting`. View more details [here](/graphql-api/mutation/add-to-live)
### 2.3.2
Made improvements to the performance and stability of the Fireflies API.
### 2.3.1
Added field `calendar_id`. This field represents calId for google calendar and iCalUID for outlook
calendar. For more details, view [Transcript](/schema/transcript)
### 2.3.0
Added queries for [Transcript Summary](/schema/summary). For more details, view
[Summary](/schema/summary) schema and [Transcript](/schema/transcript) schema
### 2.2.0
Added queries for [bites](/graphql-api/query/bites) and [bite](/graphql-api/query/bite). For more
details, view [Bites](/schema/bite) schema
Added mutation for Create Bite that allows you to progmatically create bites. For more details,
view [CreateBite](/graphql-api/mutation/create-bite) mutation
### 2.1.1
Fixed bugs in [Transcripts](/graphql-api/query/transcripts) query
### 2.1.0
Added `video_url` field for [Transcript](schema/transcript) schema
### 2.0.7
Made improvements to the performance and stability of the Fireflies API.
### 2.0.6
Made improvements to the performance and stability of the Fireflies API.
### 2.0.5
Fixed bug in in [Transcripts](graphql-api/query/transcripts) query for `fireflies_users` field
### 2.0.4
Fixed bug in in [Transcripts](graphql-api/query/transcripts) query for `audio_url` field
### 2.0.3
Made improvements to the performance and stability of the Fireflies API.
### 2.0.2
Fixed bug in [Transcripts](/graphql-api/query/transcripts) query arguments
### 2.0.1
Fixed schema inconsistency in [AudioUpload](/graphql-api/mutation/upload-audio) mutation.
Fixed schema inconsistency in [SetUserRole](/graphql-api/mutation/set-user-role) mutation
### 2.0.0
Field `transcript/host_email` has been deprecated. More details in
[Transcript](/schema/transcript)
# Deprecated
Source: https://docs.fireflies.ai/additional-info/deprecated
Fields marked for removal
## Overview
This page lists all the fields that have been deprecated. Deprecated fields are fields that are no longer recommended for use and may be removed in future versions.
Please note that using deprecated fields can lead to compatibility issues in future releases.
The following fields have been deprecated:
### [Transcript](/schema/transcript)
`host_email`: Use `organizer_email` instead.
### [Transcripts](/graphql-api/query/transcripts)
`date`: Use `fromDate` and `toDate` to query a time range.
# Advanced
Source: https://docs.fireflies.ai/examples/advanced
Library of advanced usage examples
## Overview
Explore advanced usage examples that build on top of the Fireflies.ai API. This page is regularly updated
### [Find questions from external participants](https://replit.com/@firefliesai/Firefliesai-Find-questions-from-external-participants?v=1)
This replit allows you to query questions asked by participants who do not belong to your organization. It can be useful in deriving insights and analysis for client calls, interviews, etc.
### [Fetch meetings from multiple users](https://replit.com/@firefliesai/Firefliesai-Fetch-meetings-for-multiple-users?v=1)
This replit allows you to fetch meetings from multiple users by providing it a list of API keys. Please read our privacy policy and terms of usage for more details
### [Verify webhook requests](https://replit.com/@firefliesai/Firefliesai-Verifying-webhook-requests?v=1)
This replit allows you to verify webhook requests by checking the signature and the payload.
## Fireflies.ai Replit
Explore the complete list of usage examples at [replit.com/@firefliesai](https://replit.com/@firefliesai)
## Additional Resources
Basic usage examples
Querying AI App details
# Basic
Source: https://docs.fireflies.ai/examples/basic
Library of basic usage examples
## Overview
Explore basic usage examples for the Fireflies.ai API to get you started quickly. These basic usage examples simplify interact with the API through Javascript code.
## Basic examples
Basic examples that allow you to perform basic operations with the Fireflies.ai API, like fetching transcripts or setting user role.
1. [Create soundbite from meeting](https://replit.com/@firefliesai/Firefliesai-Create-soundbite-from-a-meeting?v=1)
2. [Set user role](https://replit.com/@firefliesai/Firefliesai-Set-user-role?v=1)
3. [Upload audio](https://replit.com/@firefliesai/Firefliesai-Upload-audio?v=1)
4. [Download meeting video](https://replit.com/@firefliesai/Firefliesai-Download-video-from-meeting?v=1)
5. [Get audio/video url](https://replit.com/@firefliesai/Firefliesai-Get-audiovideo-url?v=1)
6. [Get transcript summary](https://replit.com/@firefliesai/Firefliesai-Get-transcript-summary-from-a-meeting?v=1)
## Fireflies.ai Replit
Explore the complete list of usage examples at [replit.com/@firefliesai](https://replit.com/@firefliesai)
## Additional Resources
Overview of Fireflies.ai API Examples
Advanced usage examples
# Overview
Source: https://docs.fireflies.ai/examples/overview
Library of API usecases
## Overview
This part of the documentation is designed to provide developers with practical insights into integrating and maximizing the Fireflies.ai API in various applications.
By visiting our Replit page at Fireflies.ai on Replit, you can directly access and interact with these examples, making your learning process interactive and engaging.
## Fireflies.ai Replit
Explore a wide array of examples where we have created code snippets that allows you to interact with the Fireflies API.
To view, please visit [replit.com/@firefliesai](https://replit.com/@firefliesai)
You can also view the list of examples at the links [Basic examples](/examples/basic) and [Advanced examples](/examples/advanced)
## Additional Resources
Super Admin with advanced capabilities for querying your data
Basic usage examples
# Authorization
Source: https://docs.fireflies.ai/fundamentals/authorization
Authenticating your requests with the Fireflies API
## Overview
The Fireflies API implements token-based authentication, which ensures that only authorized users can access certain data and functionalities.
### Token-Based Authentication
We use a standard bearer token authentication mechanism. This means that to make authorized requests to the API, you must include an `Authorization` header with a valid token.
### Acquiring a Token
Follow these steps to obtain your API key for the Fireflies API:
1. Log in to your account at [fireflies.ai](https://app.fireflies.ai)
2. Navigate to the [Integrations](https://app.fireflies.ai/integrations) section
3. Click on [Fireflies API](https://app.fireflies.ai/integrations/custom/fireflies)
4. Copy and store your API key securely
### Making an Authenticated Request
To make an authenticated request, add the `Authorization` header followed by the word `Bearer` and your API key.
### Example of an Authenticated Request Header
```plaintext
Authorization: Bearer your_api_key
```
### Example request with Authorization header
```curl curl
curl \
-X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your_api_key" \
--data '{ "query": "{ user { name integrations } }" }' \
https://api.fireflies.ai/graphql
```
```javascript javascript
const axios = require('axios');
const url = 'https://api.fireflies.ai/graphql';
const headers = {
'Content-Type': 'application/json',
Authorization: 'Bearer your_api_key'
};
const data = {
query: '{ user { name integrations } }'
};
axios
.post(url, data, { headers: headers })
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error('Error:', error);
});
```
```python python
import requests
url = 'https://api.fireflies.ai/graphql'
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer your_api_key'
}
data = {
'query': '{ user { name integrations } }'
}
response = requests.post(url, json=data, headers=headers)
print(response.json())
```
```java java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.charset.StandardCharsets;
public class ApiRequest {
public static void main(String[] args) {
HttpClient client = HttpClient.newHttpClient();
String url = "https://api.fireflies.ai/graphql";
String json = "{\"query\":\"{ user { name integrations } }\"}";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Content-Type", "application/json")
.header("Authorization", "Bearer your_api_key")
.POST(HttpRequest.BodyPublishers.ofString(json, StandardCharsets.UTF_8))
.build();
client.sendAsync(request, HttpResponse.BodyHandlers.ofString())
.thenApply(HttpResponse::body)
.thenAccept(System.out::println)
.join();
}
}
```
Ensure to replace `your_api_key` with your actual API key.
## Best Practices for Token Security
* **Keep it Secret:** Treat your API key like a password. Never expose it in client-side code or share it publicly.
* **Store Securely:** Store the API key securely in your application, ideally in environment variables or secure storage solutions.
Improper handling of API keys can lead to security vulnerabilities. Always ensure API keys are
used and stored securely.
## Troubleshooting
* **Invalid key:** If you receive an error regarding an invalid API key, verify that the API key hasn't expired and that it's correctly included in the request header.
* **Missing key:** Ensure that the `Authorization` header is present in your requests requiring authentication.
If you encounter issues with authentication or have questions about API key management, please
contact our support team.
## FAQ
This error can signal an issue in your Authorization header. Please ensure that you are including the `Authorization` header with the word `Bearer` and your API key.
## Additional Resources
Error standards for the Fireflies API
Query generation and API exploration.
# General concepts
Source: https://docs.fireflies.ai/fundamentals/concepts
Foundational guide to the core aspects of the Fireflies API
## Overview
This section serves as a primer on the essential features of the Fireflies API. It covers the requirements to make authenticated requests to the Fireflies API, key GraphQL concepts and a breakdown of core components like queries, mutations, schema and data types.
### Host
The Fireflies API is hosted at [https://api.fireflies.ai](https://api.fireflies.ai)
### Authorization
The Fireflies API requires a valid API key for all requests. Please see [Authorization](/fundamentals/authorization) for more information
## GraphQL API Concepts
Welcome to our GraphQL API! GraphQL is a powerful query language designed for APIs, offering clients the ability to request exactly what they need and nothing more.
### Queries
Queries are used to fetch data in GraphQL. They are akin to the `GET` request in REST.
A basic query might look like this:
Queries are read-only and won’t modify your data.
```graphql graphql
query {
user(id: "1") {
name
email
}
}
```
### Mutations
Mutations allow you to modify data – create, update, or delete.
Mutations should be used with caution as they change server-side data.
```graphql graphql
mutation {
setUserRole(user_id: "1", role: "user") {
id
name
}
}
```
## Schema and Types
### Schema Definition
The schema defines the API's capabilities, including types, queries, mutations, and more.
Understanding GraphQL Schema
The schema is a contract between client and server, defining how clients can access data.
#### Data Types
**Standard Types:** Int, Float, String, Boolean, ID.
**Custom Types:** Defining complex data structures. Custom types are user-defined and can include combinations of standard types.
#### Best Practices
1. Optimize query performance by requesting for only necessary data.
2. Use variables in queries to enhance readability and flexibility
## Additional Resources
For more in-depth information, visit [GraphQL Documentation](https://graphql.org/learn/).
Enhance your AI coding experience with LLM readable documentation
File size and API rate limits for the Fireflies API
# Errors
Source: https://docs.fireflies.ai/fundamentals/errors
Error standards for the Fireflies API
## Overview
Understanding how errors are structured and returned by the Fireflies API is key to effectively handling and troubleshooting issues. This page outlines the common error format and details specific error types.
## Error schema
Our GraphQL API follows a standard format for returning errors. Errors are encapsulated within an `errors` array in the response body.
Please visit [Error codes](/miscellaneous/error-codes) to view explanations for error code types
Description of the error
Error code.
`friendly === true` are safe to show to the frontend client. Unfriendly errors may have technical
details that may not be useful to the UI layer.
Contains useful metadata related to the error
```json Example
{
"data": {},
"errors": [
{
"message": "Error description",
"friendly": true,
"code": "error_code",
"extensions": {
"code": "error_code",
"status": http_status_code,
... otherFields
}
}
]
}
```
## Additional Resources
File size and API rate limits for the Fireflies API
Authenticating your requests with the Fireflies API
# Introspection
Source: https://docs.fireflies.ai/fundamentals/introspection
Query generation and API exploration.
## Overview
Introspection is a feature that allows querying a GraphQL server to discover its schema. This capability is crucial for developers to understand available queries, mutations, and the structure of the data they can work with, facilitating seamless API interaction and exploration.
### Requirements
You will need a Fireflies.ai API key to use introspection. For more details, please visit [Authorization](/fundamentals/authorization#acquiring-a-token)
### Introspection using Apollo Sandbox
For introspection using our builtin Apollo Sandbox, visit [api.fireflies.ai/graphql](https://api.fireflies.ai/graphql) and enter your `api_key` in the Headers section as a Bearer token
### Introspection using Postman
Create a new Graphql Request in Postman with the url [api.fireflies.ai/graphql](https://api.fireflies.ai/graphql) and enter your `api_key` in the Headers section as a Bearer token
## Additional Resources
Authenticating your requests with the Fireflies API
Super Admin with advanced capabilities for querying your data
# Limits
Source: https://docs.fireflies.ai/fundamentals/limits
File size and API rate limits for the Fireflies API
## Overview
Understanding the limitations of our API is crucial for efficient and uninterrupted usage. Below
you'll find detailed information about the upload limits for different file types and the rate
limits applicable to various subscription plans.
## Upload Limits
The Fireflies API accommodates a range of file sizes for different user types. Here's a breakdown of the maximum file sizes for audio and video uploads:
| Upload Type | Free User Limit | Pro / Business / Enterprise Limit |
| ----------- | --------------- | --------------------------------- |
| Audio Files | Up to 200MB | Up to 200MB |
| Video Files | Up to 100MB | Up to 1.5GB |
### Understanding Upload Limits
* **Audio Files:** All users can upload an audio file no greater than 200MB, ensuring ample capacity for high-quality audio content.
* **Video Files for Free Users:** Free users have a maximum upload limit of 100MB for video files, suitable for short clips and previews.
* **Video Files for Pro/Business/Enterprise Users:** Higher-tier users can upload larger video files up to 1.5GB, accommodating longer and higher resolution content.
## API Rate Limits
To maintain the quality of service and availability for all users, our API enforces rate limits based on the type of subscription plan.
| Plan | API Rate Limit |
| --------------------- | ------------------- |
| Free / Pro | 50 requests per day |
| Business / Enterprise | 60 requests per min |
### Add to Live API Rate Limit
The Add to Live API has a rate limit of 3 requests per 20 minutes.
### Navigating API Rate Limits
* **Free and Pro Plans:** These plans are ideal for light to moderate usage, with a cap of 50 API requests per day. This rate is suitable for testing and small-scale applications.
* **Business and Enterprise Plans:** Designed for more demanding use cases, these plans allow up to 60 requests per minute, providing ample capacity for larger applications and higher volume demands.
These limits are in place to ensure optimal performance and fair usage across our platform.
## Additional Resources
Foundational guide to the core aspects of the Fireflies API
Error standards for the Fireflies API
# Super Admin
Source: https://docs.fireflies.ai/fundamentals/super-admin
Fireflies Super Admin with advanced capabilities for querying your data
## Overview
The Super Admin API offers advanced features such as team-wide webhooks and privacy setting bypass, providing enhanced control and flexibility for managing your data. This is only available on the enterprise tier for company admins - [learn more](https://guide.fireflies.ai/hc/en-us/articles/30453010621585-Learn-about-the-Super-Admin-role).
## Super Admin Webhooks
The Super Admin webhook notifies you of all team meetings owned by your team, allowing you to automate workflows, integrate with other tools, and maintain an overview of your team's meetings with a single webhook.
### Setting up Super Admin Webhooks
Follow the steps below to set up the Super Admin webhook:
Visit the [Fireflies.ai dashboard settings](https://app.fireflies.ai/settings)
Navigate to the Developer settings tab
Enter a valid https URL in the webhooks field and save
It is highly suggested to use [webhook auth](/graphql-api/webhooks) to secure your servers.
### Privacy Settings Bypass
The Super Admin functionality allows you to bypass your team's privacy settings, allowing you to query all data in your team's account.
### Requirements
Super Admin API is only available to teams on the Enterprise plan. [Learn more here](https://guide.fireflies.ai/hc/en-us/articles/30453010621585-Learn-about-the-Super-Admin-role) and reach out to us with questions
## Additional Resources
Introspection for the Fireflies API
Overview of Fireflies.ai API Examples
# Chat with Fireflies AI Assistant
Source: https://docs.fireflies.ai/getting-started/ask-docs
Navigate Fireflies.ai Documentation using the AI Assistant
## Overview
Welcome to the Fireflies.ai Documentation, your essential guide to unlocking the full potential of our API. We understand that diving into a new API can be daunting, and finding the specific information you need shouldn't add to that challenge. That's why we've designed our documentation to be both comprehensive and user-friendly, ensuring you get the answers you need without the hassle.
## Explore with Fireflies AI Assistant
With our AI assistant, navigating the documentation becomes as intuitive as having a conversation. Whether you're looking for detailed API endpoints, integration guides, or troubleshooting tips, our integrated AI assistant is here to assist you every step of the way.
### How to Use Fireflies AI Assistant
Getting started is simple:
1. **Access the Search Bar:** Click on the search bar at the top of the page, or use the shortcut `CMD + K` (for Mac users) or `Ctrl + K` (for Windows and Linux users) to jump straight to it.
2. **Ask Your Question:** Type in your question just as you would when talking to ChatGPT. Whether it's a broad query about API capabilities or a specific request for code examples, the AI Assistant is ready to provide you with precise answers.
Foundational guide to the core aspects of the Fireflies API
Join the Developer Program to build integrations with Fireflies.ai
# Join the Developer Program
Source: https://docs.fireflies.ai/getting-started/developer-program
Join the Developer Program to build integrations with Fireflies.ai
## Overview
Welcome to the Fireflies.ai Developer Program! This exclusive program offers developers a chance to explore, test, and integrate with our APIs for a limited period of three months.
This program is tailored for developers eager to create seamless integrations and unlock the full capabilities of Fireflies.ai. Participants will gain access to premium features and higher rate limits, ensuring a swift and successful project development.
## Program Benefits
As a member of the Fireflies.ai Developer Program, you’ll enjoy:
* **Full Business Tier Access**: Complimentary access to all Business Tier features, tools, and resources
* **Integration Support**: Get guidance on how to connect the API seamlessly with your application
* **Enhanced API Access**: Enjoy expanded rate limits and access to premium features designed for high-demand integrations
* **Community and Updates**: Be part of our developer community and receive the latest updates, tutorials, and API news
## How to Apply
Interested in joining? Follow these simple steps to apply for the program:
1. **Fill Out the Application Form**: [Apply here](https://fireflies-developer.paperform.co)
2. **Verification**: Once you submit the form, our team will review your application. Please note that this process is manual and may take a few business days
3. **Approval Notification**: If your application is approved, you’ll receive a confirmation email with details about your program access
## Application Requirements
To qualify for the Developer Program, please ensure you have:
* **A clear project plan**: Briefly describe how Fireflies.ai will integrate with your application
* **A company email**: A company email is preferred for verification purposes
* **GitHub Repository**: Optionally, include a GitHub link to your code or previous work to help us understand your technical expertise
* **Additional Comments**: Any additional information that can help us assess your project’s alignment with our platform goals
## Program Terms
* **Duration**: The complimentary Business Tier access lasts for three months from the date of approval
* **Feedback**: We may reach out for feedback to better understand your experience and how we can enhance our API
We look forward to seeing what you’ll build and are excited to support your development journey!
## Additional Resources
Navigate Fireflies.ai Documentation using the AI Assistant
Enhance your AI coding experience with LLM readable documentation
# Introduction
Source: https://docs.fireflies.ai/getting-started/introduction
Welcome to Fireflies public API documentation.
We are actively working to expose more functionality via our API. If you have specific requests,
please [reach out to us](https://guide.fireflies.ai/hc/en-us/requests/new).
# Introduction
## Overview of the API
The Fireflies API is built on top of GraphQL, a powerful interface designed to provide you with efficient and flexible access to your data. This API allows you to retrieve exactly the data you need in a structured format. Whether you are building a web application, a mobile app, or a complex software system, our API caters to a wide range of data requirements.
Our API covers various functionalities, including queries for fetching data as well as uploading meeting audio. It is designed to be intuitive and easy to use, ensuring that you can start fetching and manipulating data with minimal setup.
## Advantages of Using GraphQL
**1. Precise Data Fetching:** One of the key strengths of GraphQL is its ability to return exactly what you request and nothing more. This precision eliminates the over-fetching of data, common in traditional REST APIs, leading to more efficient network utilization and faster response times.
**2. Single Endpoint:** Unlike REST APIs, which often require multiple endpoints for different data needs, GraphQL operates through a single endpoint. This simplification streamlines interactions with the API and makes maintaining and managing the API more straightforward.
**3. Flexibility and Scalability:** GraphQL APIs are incredibly flexible, allowing for queries that can evolve with your needs. This flexibility, combined with efficient data retrieval, makes GraphQL an ideal choice for both small projects and large-scale applications.
In the following sections, we will guide you through the essential components of our API, provide detailed examples, and offer best practices to help you make the most of our API. Whether you're a new user or an experienced developer, this documentation is designed to assist you in seamlessly integrating the API into your applications.
## Additional Resources
Foundational guide to the core aspects of the Fireflies API
# LLM-based Development
Source: https://docs.fireflies.ai/getting-started/llm-development
Enhance your AI coding experience with LLM readable documentation.
### Overview
Welcome to the guide on utilizing our specialized `llms.txt` files to enhance your LLM-based coding workflow. Whether you’re using Replit, Cursor, Devin, or any other AI coding tool, this page will assist you in leveraging our resources to debug and refine code generated by Fireflies.
Our platform seamlessly integrates with a variety of AI coding tools. While the generated code may not always be perfect, this guide outlines how to effectively use our `llms.txt` files to improve the debugging process, ensuring your development workflow remains smooth and efficient.
### How to Use `llms.txt` Files
#### For Tools with Limited Agentic Capabilities
If your coding tool does not support web querying or autonomous resource fetching:
* **Download the File**\
Access the complete file by visiting [this link](https://docs.fireflies.ai/llms-full.txt) and download it to your local machine.
* **Upload and Debug**\
Upload the downloaded file to your AI coding tool. Instruct your tool to analyze and debug the code using the content of this file. This manual intervention guides the tool in identifying and fixing errors in generated code.
#### For Advanced, Agentic Coding Tools
If your coding tool is sophisticated and capable of querying the web independently:
* **Provide the URL Directly**\
Instead of downloading the full file, supply your tool with the URL [https://docs.fireflies.ai/llms-full.txt](https://docs.fireflies.ai/llms-full.txt).
* **Let It Decide**\
Your advanced tool will automatically determine which parts of the file to use and where to look, streamlining the debugging process without additional manual steps.
### Additional Tips
* **Tool Configuration:** Ensure that your AI coding tool is configured to handle file uploads or URL-based inputs effectively.
* **Experiment and Adapt:** Different tools may interact with our resources in unique ways. Experiment with both methods to find the approach that best suits your workflow.
* **Support and Documentation:** If you encounter any challenges or need further assistance, please contact our support team.
Happy coding!
## Additional Resources
Join the Developer Program to build integrations with Fireflies.ai
Foundational guide to the core aspects of the Fireflies API
# Quickstart
Source: https://docs.fireflies.ai/getting-started/quickstart
Make your first request in under 5 minutes.
This guide provides step-by-step instructions to make your first query with our GraphQL API and demonstrates basic functionality.
## Step 1: Setting Up
Before diving into querying the API, it's essential to set up your environment correctly. This includes obtaining authentication credentials and configuring your development environment.
### Obtaining Authentication Credentials
To access our API, you will need an API key. Follow these steps to obtain your key:
1. Log in to your account at [app.fireflies.ai](https://app.fireflies.ai)
2. Navigate to the [Integrations](https://app.fireflies.ai/integrations) section
3. Click on [Fireflies API](https://app.fireflies.ai/integrations/custom/fireflies)
4. Copy and store your API key securely
It's crucial to handle your API key with the utmost care to ensure the security of your data. For
more information on Authorization and best practices, visit
[Authorization](/fundamentals/authorization)
## Step 2: Making Your First Request
Execute a simple query to retrieve a list of users.
Replace `your_api_key` with your API key in the following requests
```bash curl
curl \
-X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your_api_key" \
--data '{ "query": "{ users { name user_id } }" }' \
https://api.fireflies.ai/graphql
```
```python python
import requests
url = 'https://api.fireflies.ai/graphql'
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer your_api_key'
}
data = {
'query': '{ users { name user_id } }'
}
response = requests.post(url, json=data, headers=headers)
print(response.json())
```
```javascript javascript
const axios = require('axios');
const url = 'https://api.fireflies.ai/graphql';
const headers = {
'Content-Type': 'application/json',
Authorization: 'Bearer your_api_key'
};
const data = {
query: '{ users { name user_id } }'
};
axios
.post(url, data, { headers: headers })
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error('Error:', error);
});
```
```java java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.http.HttpHeaders;
import java.nio.charset.StandardCharsets;
public class ApiRequest {
public static void main(String[] args) {
HttpClient client = HttpClient.newHttpClient();
String url = "https://api.fireflies.ai/graphql";
String json = "{\"query\":\"{ users { name user_id } }\"}";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Content-Type", "application/json")
.header("Authorization", "Bearer your_api_key")
.POST(HttpRequest.BodyPublishers.ofString(json, StandardCharsets.UTF_8))
.build();
client.sendAsync(request, HttpResponse.BodyHandlers.ofString())
.thenApply(HttpResponse::body)
.thenAccept(System.out::println)
.join();
}
}
```
When building GraphQL queries for this API, focus on precision and efficiency. Start with simple
queries and gradually increase complexity. Ensure you only request the data you need to avoid
over-fetching.
* **Review the Schema Documentation**: For guidance, refer to the [Schema](/schema) section and use tools like GraphQL Playground for testing. Efficient queries lead to better performance and a smoother API experience.
More details on building your GraphQL query are available [here](/graphql-api)
## Step 3: Analyzing the Response
You will receive a JSON response with the requested data. Example response:
```bash curl
{
"data":
{
"users": [
{
"name":"Justin Fly",
"user_id":"example-id"
}
]
}
}
```
Continue to the next sections for more detailed examples and advanced usage instructions.
## Additional Resources
Fireflies public API documentation.
Navigate Fireflies.ai Documentation using the AI Assistant
# Add to Live
Source: https://docs.fireflies.ai/graphql-api/mutation/add-to-live
Use the API to add the Fireflies.ai bot to an ongoing meeting
## Overview
The `addToLiveMeeting` mutation allows you to add the Fireflies.ai bot to an ongoing meeting. It is rate limited to 3 requests per 20 minutes.
## Arguments
A valid http URL for the meeting link, i.e. gooogle meet, zoom, etc
Title or name of the meeting, this will be used to identify the transcribed file. If title is not
provided, a default title will be set automatically
Maximum length is 256 characters.
Password for the meeting, if applicable.
Maximum length is 32 characters.
Meeting duration in minutes. Defaults to 60 minutes if
param is not provided
Minimum is 15 and maximum is 120.
Language of the meeting. Defaults to English if not provided. For a complete list of language codes, please view [Language Codes](/miscellaneous/language-codes)
Maximum length is 5 characters.
Array of [Attendees](/schema/input/attendee) for expected meeting participants.
## Usage Example
To upload an audio file, provide the necessary input parameters to the mutation. Here's an example of how this mutation could be used:
```graphql
mutation AddToLiveMeeting($meetingLink: String!) {
addToLiveMeeting(meeting_link: $meetingLink) {
success
}
}
```
```bash curl
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your_api_key" \
-d '{
"query": "mutation AddToLiveMeeting($meetingLink: String!) { addToLiveMeeting(meeting_link: $meetingLink) { success } }",
"variables": {
"meetingLink": "https://meet.google.com/code-here"
}
}' \
https://api.fireflies.ai/graphql
```
```javascript javascript
const axios = require('axios');
const url = 'https://api.fireflies.ai/graphql';
const headers = {
'Content-Type': 'application/json',
Authorization: 'Bearer your_api_key'
};
const data = {
query: ` mutation AddToLiveMeeting($meetingLink: String!) {
addToLiveMeeting(meeting_link: $meetingLink) {
success
}
}
`,
variables: { meetingLink: 'https://meet.google.com/code-here' }
};
axios
.post(url, data, { headers: headers })
.then(result => {
console.log(result.data);
})
.catch(e => {
console.log(JSON.stringify(e));
});
```
```python python
import requests
url = 'https://api.fireflies.ai/graphql'
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer your_api_key'
}
data = {
'query': '''
mutation AddToLiveMeeting($meetingLink: String!) {
addToLiveMeeting(meeting_link: $meetingLink) {
success
}
}
''',
'variables': {'meetingLink': 'https://meet.google.com/code-here'}
}
response = requests.post(url, headers=headers, json=data)
if response.status_code == 200:
print(response.json())
else:
print(response.text)
```
```java java
import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.http.HttpRequest.BodyPublishers;
import java.net.http.HttpResponse.BodyHandlers;
public class ApiRequest {
public static void main(String[] args) throws IOException, InterruptedException {
HttpClient client = HttpClient.newHttpClient();
String jsonRequest = "{\"query\": \"mutation AddToLiveMeeting($meetingLink: String!) { addToLiveMeeting(meeting_link: $meetingLink) { success } }\", \"variables\": {\"meetingLink\": \"https://meet.google.com/code-here\"}";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.fireflies.ai/graphql"))
.header("Content-Type", "application/json")
.header("Authorization", "Bearer your_api_key")
.POST(BodyPublishers.ofString(jsonRequest))
.build();
client.sendAsync(request, HttpResponse.BodyHandlers.ofString())
.thenApply(HttpResponse::body)
.thenAccept(System.out::println)
.join();
}
}
```
```json Response
{
"data": {
"addToLiveMeeting": {
"success": true,
}
}
}
```
## FAQ
The `addToLive` mutation has a limit of 3 requests per 20 minutes.
You may view API Rate limits [here](/fundamentals/limits).
## Error Codes
List of possible error codes that may be returned by the `addToLiveMeeting` mutation. Full list of error codes can be found [here](/miscellaneous/error-codes).
You have exceeded the rate limit for the `addToLiveMeeting` mutation. It is limited to 3 requests per 20 minutes. Please try again later.
The language code you provided is invalid. Please refer to the [Language Codes](/miscellaneous/language-codes) page for a list of valid language codes.
The user account has been cancelled. Please contact support if you encounter this error.
## Additional Resources
Use the API to get bites
Use the API to create a bite
# Create bite
Source: https://docs.fireflies.ai/graphql-api/mutation/create-bite
Use the API to create a bite
## Overview
The `createBite` mutation allows you to create a bite through the API.
## Arguments
ID of the transcript
Name of the bite
Maximum length is 256 characters.
Start time of the bite in seconds
End time of the bite in seconds
Type of the bite, either 'video' or 'audio'
Array specifying the visibility of the Soundbite. Possible values are 'public', 'team', and
'participants'. For example, \["team", "participants"] indicates visibility to both team members
and participants, while \["public"] denotes full public access.
Summary for the bite
Maximum length is 500 characters.
## Usage Example
To create a bite, provide the necessary input parameters to the mutation. Here's an example of how this mutation could be used:
```graphql
mutation Mutation($transcriptId: ID!, $startTime: Float!, $endTime: Float!) {
createBite(transcript_id: $transcriptId, start_time: $startTime, end_time: $endTime) {
status
name
id
}
}
```
```bash curl
curl -X POST https://api.fireflies.ai/graphql \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your_api_key" \
-d '{
"query": "mutation CreateBite($transcriptId: ID!, $startTime: Float!, $endTime: Float!) { createBite(transcript_id: $transcriptId, start_time: $startTime, end_time: $endTime) { summary status id } }",
"variables": {
"transcriptId": "your_transcript_id",
"startTime": 0,
"endTime": 5
}
}'
```
```javascript javascript
const axios = require('axios');
const url = 'https://api.fireflies.ai/graphql';
const headers = {
'Content-Type': 'application/json',
Authorization: 'Bearer your_api_key'
};
const data = {
query: `mutation CreateBite($transcriptId: ID!, $startTime: Float!, $endTime: Float!) {
createBite(transcript_id: $transcriptId, start_time: $startTime, end_time: $endTime) {
summary
status
id
}
}`,
variables: { transcriptId: 'your_transcript_id', startTime: 0, endTime: 5 }
};
axios
.post(url, data, { headers: headers })
.then(result => {
console.log(result.data);
})
.catch(e => {
console.log(JSON.stringify(e));
});
```
```python python
import requests
url = 'https://api.fireflies.ai/graphql'
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer your_api_key'
}
data = {
'query': '''
mutation CreateBite($transcriptId: ID!, $startTime: Float!, $endTime: Float!) {
createBite(transcript_id: $transcriptId, start_time: $startTime, end_time: $endTime) {
summary
status
id
}
}
''',
'variables': {
'transcriptId': "your_transcript_id",
'startTime': 0,
'endTime': 5
}
}
response = requests.post(url, headers=headers, json=data)
if response.status_code == 200:
print(response.json()['data'])
else:
print(response.text)
```
```java java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.http.HttpRequest.BodyPublishers;
public class ApiRequest {
public static void main(String[] args) {
HttpClient client = HttpClient.newHttpClient();
String jsonRequest = "{\"query\": \"mutation CreateBite($transcriptId: ID!, $startTime: Float!, $endTime: Float!) { createBite(transcript_id: $transcriptId, start_time: $startTime, end_time: $endTime) { summary status id } }\", \"variables\": {\"transcriptId\": \"your_transcript_id\", \"startTime\": 0, \"endTime\": 5}}";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.fireflies.ai/graphql"))
.header("Content-Type", "application/json")
.header("Authorization", "Bearer your_api_key")
.POST(BodyPublishers.ofString(jsonRequest))
.build();
client.sendAsync(request, HttpResponse.BodyHandlers.ofString())
.thenApply(HttpResponse::body)
.thenAccept(System.out::println)
.join();
}
}
```
```json Response
{
"data": {
"createBite": {
"name": "bite-name",
"status": "pending",
}
}
}
```
## Additional Resources
Use the API to add the Fireflies.ai bot to an ongoing meeting
Use the API to manage transcript deletion
# Delete Transcript
Source: https://docs.fireflies.ai/graphql-api/mutation/delete-transcript
Use the API to manage transcript deletion
## Overview
The `deleteTranscript` mutation is designed to delete a specific transcript by its ID.
## Arguments
Transcript ID
## Usage Example
To delete a transcript, provide the unique id of the transcript as an argument to the mutation. The returned subfields will be from the deleted transcript. Here’s an example of how this mutation could be used:
```graphql
mutation deleteTranscript($id: String!) {
deleteTranscript(id: $id) {
id
title
host_email
organizer_email
fireflies_users
participants
date
transcript_url
audio_url
duration
}
}
```
```bash curl
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your_api_key" \
-d '{"query": "mutation($transcriptId: String!) { deleteTranscript(id: $transcriptId) { title date duration organizer_email } }", "variables": {"transcriptId": "your_transcript_id"}}' \
https://api.fireflies.ai/graphql
```
```javascript javascript
const axios = require('axios');
const url = 'https://api.fireflies.ai/graphql';
const headers = {
'Content-Type': 'application/json',
Authorization: 'Bearer your_api_key'
};
const data = {
query: `
mutation($transcriptId: String!) {
deleteTranscript(id: $transcriptId) {
title
date
duration
organizer_email
}
}
`,
variables: { transcriptId: 'transcript_id' }
};
axios
.post(url, data, { headers: headers })
.then(result => {
console.log(result.data);
})
.catch(e => {
console.log(JSON.stringify(e));
});
```
```python python
import requests
url = 'https://api.fireflies.ai/graphql'
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer your_api_key'
}
data = {
'query': '''
mutation($transcriptId: String!) {
deleteTranscript(id: $transcriptId) {
title
date
duration
organizer_email
}
}
''',
'variables': {'transcriptId': 'your_transcript_id'}
}
response = requests.post(url, headers=headers, json=data)
if response.status_code == 200:
print(response.json())
else:
print(response.text)
```
```java java
import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.http.HttpRequest.BodyPublishers;
import java.net.http.HttpResponse.BodyHandlers;
public class ApiRequest {
public static void main(String[] args) throws IOException, InterruptedException {
HttpClient client = HttpClient.newHttpClient();
String json = "{\"query\":\"mutation($transcriptId: String!) { deleteTranscript(id: $transcriptId) { title date duration organizer_email } }\",\"variables\":{\"transcriptId\":\"your_transcript_id\"}}";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.fireflies.ai/graphql"))
.header("Content-Type", "application/json")
.header("Authorization", "Bearer your_api_key")
.POST(BodyPublishers.ofString(json))
.build();
client.sendAsync(request, HttpResponse.BodyHandlers.ofString())
.thenApply(HttpResponse::body)
.thenAccept(System.out::println)
.join();
}
}
```
```json Response
{
"data": {
"deleteTranscript": {
"duration": "1",
"date": 1699570138000,
"organizer_email": "justin@fly.ai",
"title": "Video title"
}
}
}
```
## Error Codes
List of possible error codes that may be returned by the `deleteTranscript` mutation. Full list of error codes can be found [here](/miscellaneous/error-codes).
The user does not have admin privileges to delete the transcript.
## Additional Resources
Use the API to create a bite
Use the API to set user roles
# Set User Role
Source: https://docs.fireflies.ai/graphql-api/mutation/set-user-role
Use the API to set user roles
## Overview
The `setUserRole` mutation allows for the updating of a user's role within a team.
## Arguments
The unique identifier of the user.
The [Role](/schema/input/role) to be assigned to the user. Valid types for user are `admin` and
`user`
## Usage Example
To set a user's role, provide the user's ID and the desired role as arguments to the mutation. Here's an example of how this mutation could be used:
```graphql
mutation setUserRole($userId: String!, $role: Role!) {
setUserRole(user_id: $userId, role: $role) {
id
name
email
role
}
}
```
```bash curl
curl -X POST https://api.fireflies.ai/graphql \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your_api_key" \
-d '{
"query": "mutation($user_id: String!, $role: Role!) { setUserRole(user_id: $user_id, role:$role) { name is_admin } }",
"variables": {
"user_id": "your_user_id",
"role": "admin"
}
}'
```
```javascript javascript
const axios = require('axios');
const url = 'https://api.fireflies.ai/graphql';
const headers = {
'Content-Type': 'application/json',
Authorization: 'Bearer your_api_key'
};
const data = {
query: `mutation Mutation($userId: String!, $role: Role!) {
setUserRole(user_id: $userId, role: $role) {
name
is_admin
}
}`,
variables: { userId: 'your_user_id', role: 'admin' }
};
axios
.post(url, data, { headers: headers })
.then(result => {
console.log(result.data);
})
.catch(e => {
console.log(JSON.stringify(e));
});
```
```python python
import requests
url = 'https://api.fireflies.ai/graphql'
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer your_api_key'
}
data = {
'query': '''
mutation($user_id: String!, $role: Role!) {
setUserRole(user_id: $user_id, role:$role) {
name
is_admin
}
}
''',
'variables': {
'user_id': "your_user_id",
'role': "admin"
}
}
response = requests.post(url, headers=headers, json=data)
if response.status_code == 200:
print(response.json()['data'])
else:
print(response.text)
```
```java java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.http.HttpRequest.BodyPublishers;
public class ApiRequest {
public static void main(String[] args) {
HttpClient client = HttpClient.newHttpClient();
String jsonRequest = "{\"query\": \"mutation SetUserRole($user_id: String!, $role: Role!) { setUserRole(user_id: $user_id, role: $role) { name is_admin } }\", \"variables\": {\"user_id\": \"your_user_id\", \"role\": \"admin\"}}";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.fireflies.ai/graphql"))
.header("Content-Type", "application/json")
.header("Authorization", "Bearer your_api_key")
.POST(BodyPublishers.ofString(jsonRequest))
.build();
client.sendAsync(request, HttpResponse.BodyHandlers.ofString())
.thenApply(HttpResponse::body)
.thenAccept(System.out::println)
.join();
}
}
```
```json Response
{
"data": {
"setUserRole": {
"name": "Justin Fly",
"is_admin": "true",
}
}
}
```
## Error Codes
List of possible error codes that may be returned by the `setUserRole` mutation. Full list of error codes can be found [here](/miscellaneous/error-codes).
This may indicate that you are not a part of any team. Please contact support if you encounter this error
The user ID you are trying to query is not in your team.
The user does not have admin privileges to set the user role.
The team must have at least one admin. Please add an admin to the team or contact support if you encounter this error.
An invalid argument was provided to the mutation for the `role` field. Please check the arguments you are providing and try again.
## Additional Resources
Use the API to manage transcript deletion
Use the API to upload audio to Fireflies.ai
# Update Meeting Title
Source: https://docs.fireflies.ai/graphql-api/mutation/update-meeting-title
Use the API to update meeting titles
## Overview
The `updateMeetingTitle` mutation allows for updating the title of a meeting transcript. This operation requires admin privileges within the team.
## Arguments
The new title to be assigned to the meeting / transcript.
## Usage Example
To update a meeting title, provide the transcript ID and the new title as arguments to the mutation. Here's an example of how this mutation could be used:
```graphql
mutation UpdateMeetingTitle($input: UpdateMeetingTitleInput!) {
updateMeetingTitle(input: $input) {
title
}
}
```
```bash curl
curl -X POST https://api.fireflies.ai/graphql \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your_api_key" \
-d '{
"query": "mutation($updateMeetingTitleId: String!, $input: UpdateMeetingTitleInput!) { updateMeetingTitle(id: $updateMeetingTitleId, input: $input) { title } }",
"variables": {
"input": {
"id": "your_transcript_id",
"title": "New Title"
}
}
}'
```
```javascript javascript
const axios = require('axios');
const url = 'https://api.fireflies.ai/graphql';
const headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer your_api_key'
};
const data = {
query: `
mutation($input: UpdateMeetingTitleInput!) {
updateMeetingTitle(input: $input) {
title
}
}
`,
variables: {
input: {
id: 'your_transcript_id',
title: 'New Title'
}
}
};
const response = await axios.post(url, data, { headers });
console.log(response.data);
```
```python python
import requests
url = 'https://api.fireflies.ai/graphql'
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer your_api_key'
}
data = {
'query': `
mutation($input: UpdateMeetingTitleInput!) {
updateMeetingTitle(input: $input) {
title
}
}
`,
'variables': {
'input': {
'id': 'your_transcript_id',
'title': 'New Title'
}
}
}
response = requests.post(url, json=data, headers=headers)
print(response.json())
```
```java java
import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.http.HttpRequest.BodyPublishers;
import java.net.http.HttpResponse.BodyHandlers;
public class UpdateMeetingTitleExample {
public static void main(String[] args) throws IOException, InterruptedException {
HttpClient client = HttpClient.newHttpClient();
String json = "{"
+ "\"query\":\"mutation($input: UpdateMeetingTitleInput!) { updateMeetingTitle(input: $input) { title } }\","
+ "\"variables\":{"
+ "\"input\":{"
+ "\"id\":\"your_transcript_id\","
+ "\"title\":\"New Title\""
+ "}"
+ "}"
+ "}";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.fireflies.ai/graphql"))
.header("Content-Type", "application/json")
.header("Authorization", "Bearer your_api_key")
.POST(BodyPublishers.ofString(json))
.build();
client.sendAsync(request, HttpResponse.BodyHandlers.ofString())
.thenApply(HttpResponse::body)
.thenAccept(System.out::println)
.join();
}
}
```
```json Response
{
"data": {
"updateMeetingTitle": {
"title": "New Title"
}
}
}
```
## FAQ
Only users with admin privileges can update meeting titles. The meeting owner also needs to be in your team.
## Error Codes
List of possible error codes that may be returned by the `updateMeetingTitle` mutation. Full list of error codes can be found [here](/miscellaneous/error-codes).
The user does not have admin privileges to update meeting titles.
This may indicate that you are not a part of any team. Please contact support if you encounter this error
The specified transcript could not be found or you do not have access to it
## Additional Resources
Use the API to upload audio to Fireflies.ai
Create notifications using webhooks
# Upload Audio
Source: https://docs.fireflies.ai/graphql-api/mutation/upload-audio
Use the API to upload audio to Fireflies.ai
## Overview
The `uploadAudio` mutation allows you to upload audio files to Fireflies.ai for transcription.
## Arguments
The url of media file to be transcribed. It MUST be a valid https string and publicly accessible to enable us download the audio / video file. Double check to see if the media file is downloadable and that the link is not a preview link before making the request. The media file must be either of these formats - mp3, mp4, wav, m4a, ogg
Title or name of the meeting, this will be used to identify the transcribed file
URL for the webhook that receives notifications when transcription completes
Specify a custom language code for your meeting, e.g. `es` for Spanish or `de` for German. For a complete list of language codes, please view [Language Codes](/miscellaneous/language-codes)
Specify whether the video should be saved or not.
An array of objects containing meeting [Attendees](#). This is relevant if you have active integrations like Salesforce, Hubspot etc. Fireflies uses the attendees value to push meeting notes to your active CRM integrations where notes are added to an existing contact or a new contact is created. Each object contains -
* displayName
* email
* phoneNumber
Custom identifier set by the user during upload. You may use this to identify your uploads in your webhook
events.
## Usage Example
To upload a file, provide the necessary input parameters to the mutation. Here's an example of how this mutation could be used:
```graphql
mutation uploadAudio($input: AudioUploadInput) {
uploadAudio(input: $input) {
success
title
message
}
}
```
```bash curl
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your_api_key" \
-d '{
"query": "mutation($input: AudioUploadInput) { uploadAudio(input: $input) { success title message } }",
"variables": {
"input": {
"url": "https://url-to-the-audio-file",
"title": "title of the file",
"attendees": [
{
"displayName": "Fireflies Notetaker",
"email": "notetaker@fireflies.ai",
"phoneNumber": "xxxxxxxxxxxxxxxx"
},
{
"displayName": "Fireflies Notetaker 2",
"email": "notetaker2@fireflies.ai",
"phoneNumber": "xxxxxxxxxxxxxxxx"
}
]
}
}
}' \
https://api.fireflies.ai/graphql
```
```javascript javascript
const axios = require('axios');
const url = 'https://api.fireflies.ai/graphql';
const headers = {
'Content-Type': 'application/json',
Authorization: 'Bearer your_api_key'
};
const input = {
url: 'https://url-to-the-audio-file',
title: 'title of the file',
attendees: [
{
displayName: 'Fireflies Notetaker',
email: 'notetaker@fireflies.ai',
phoneNumber: 'xxxxxxxxxxxxxxxx'
},
{
displayName: 'Fireflies Notetaker 2',
email: 'notetaker2@fireflies.ai',
phoneNumber: 'xxxxxxxxxxxxxxxx'
}
]
};
const data = {
query: ` mutation($input: AudioUploadInput) {
uploadAudio(input: $input) {
success
title
message
}
}
`,
variables: { input }
};
axios
.post(url, data, { headers: headers })
.then(result => {
console.log(result.data);
})
.catch(e => {
console.log(JSON.stringify(e));
});
```
```python python
import requests
url = 'https://api.fireflies.ai/graphql'
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer your_api_key'
}
input_data = {
"url": "https://url_for_audio_file",
"title": "title of the file",
"attendees": [
{
"displayName": "Fireflies Notetaker",
"email": "notetaker@fireflies.ai",
"phoneNumber": "xxxxxxxxxxxxxxxx"
},
{
"displayName": "Fireflies Notetaker 2",
"email": "notetaker2@fireflies.ai",
"phoneNumber": "xxxxxxxxxxxxxxxx"
}
]}
data = {
'query': '''
mutation($input: AudioUploadInput) {
uploadAudio(input: $input) {
success
title
message
}
}
''',
'variables': {'input': input_data}
}
response = requests.post(url, headers=headers, json=data)
if response.status_code == 200:
print(response.json())
else:
print(response.text)
```
```java java
import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.http.HttpRequest.BodyPublishers;
import java.net.http.HttpResponse.BodyHandlers;
public class ApiRequest {
public static void main(String[] args) throws IOException, InterruptedException {
HttpClient client = HttpClient.newHttpClient();
String json = "{"
+ "\"query\":\"mutation($input: AudioUploadInput) { uploadAudio(input: $input) { success title message } }\","
+ "\"variables\":{"
+ "\"input\": {"
+ "\"url\":\"https://url_for_audio_file.com\","
+ "\"title\":\"title of the file\","
+ "\"attendees\":["
+ "{"
+ "\"displayName\": \"Fireflies Notetaker\","
+ "\"email\": \"notetaker@fireflies.ai\","
+ "\"phoneNumber\": \"xxxxxxxxxxxxxxxx\""
+ "},"
+ "{"
+ "\"displayName\": \"Fireflies Notetaker 2\","
+ "\"email\": \"notetaker2@fireflies.ai\","
+ "\"phoneNumber\": \"xxxxxxxxxxxxxxxx\""
+ "}"
+ "]"
+ "}"
+ "}"
+ "}";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.fireflies.ai/graphql"))
.header("Content-Type", "application/json")
.header("Authorization", "Bearer your_api_key")
.POST(BodyPublishers.ofString(json))
.build();
client.sendAsync(request, HttpResponse.BodyHandlers.ofString())
.thenApply(HttpResponse::body)
.thenAccept(System.out::println)
.join();
}
}
```
```json Response
{
"data": {
"uploadAudio": {
"success": true,
"title": "title of the file",
"message": "Uploaded audio has been queued for processing."
}
}
}
```
## FAQ
Audio upload only works with publicly accessible URLs. We cannot accept files hosted on your local machine or a private server.
You may use signed urls with short expiry times to upload audio files to Fireflies.ai. Fireflies will download the file from the url and process it.
## Error Codes
List of possible error codes that may be returned by the `uploadAudio` mutation. Full list of error codes can be found [here](/miscellaneous/error-codes).
The user account has been cancelled. Please contact support if you encounter this error.
You may receieve this error when uploading audio files or querying `audio_url` field.
Free plan users cannot upload audio files. Please upgrade to a paid plan to upload audio files.
You may receieve this error when querying `video_url` field.
Free/pro plan users cannot query `video_url` field. Please upgrade to a Business or Enterprise plan to query `video_url` field.
The audio file is too short to be processed. Please ensure the audio file is at least 50kb in size.
The language code you provided is invalid. Please refer to the [Language Codes](/miscellaneous/language-codes) page for a list of valid language codes.
## Additional Resources
Use the API to set user roles
Use the API to update meeting titles
# AI Apps
Source: https://docs.fireflies.ai/graphql-api/query/apps
Querying list of AI App outputs
## Overview
The apps query fetches the results of the AI App for all the meetings it ran successfully.
## Arguments
The `app_id` parameter retrieves all outputs against a specific AI App.
The `transcript_id` parameter retrieves all outputs against a specific meeting/transcript.
Number of records to skip over. Helps paginate results when used in combination with the `limit` param.
Maximum number of `apps` outputs to fetch in a single query. The default query fetches 10 records, which is the maximum for a single request.
## Schema
Fields available to the [AI Apps](/schema/apps) query
## Usage Example
```graphql
query GetAIAppsOutputs($appId: String, $transcriptId: String, $skip: Float, $limit: Float) {
apps(app_id: $appId, transcript_id: $transcriptId, skip: $skip, limit: $limit) {
outputs {
transcript_id
user_id
app_id
created_at
title
prompt
response
}
}
}
```
```bash curl
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your_api_key" \
--data '{ "query": "query GetAIAppsOutputs($transcriptId: String) { apps(transcript_id: $transcriptId) { outputs { transcript_id user_id app_id created_at title prompt response } } }", "variables": { "transcriptId": "your_transcript_id" } }' \
https://api.fireflies.ai/graphql
```
```javascript javascript
const axios = require('axios');
const url = 'https://api.fireflies.ai/graphql';
const headers = {
'Content-Type': 'application/json',
Authorization: 'Bearer your_api_key'
};
const data = {
query: 'query GetAIAppsOutputs($transcriptId: String) { apps(transcript_id: $transcriptId) { outputs { transcript_id user_id app_id created_at title prompt response } } }',
variables: { transcriptId: 'your_transcript_id' }
};
axios
.post(url, data, { headers: headers })
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error(error);
});
```
```python python
import requests
url = 'https://api.fireflies.ai/graphql'
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer your_api_key'
}
data = '{"query": "query GetAIAppsOutputs($transcriptId: String) { apps(transcript_id: $transcriptId) { outputs { transcript_id user_id app_id created_at title prompt response } } }", "variables": {"transcriptId": "transcript_id"}}'
response = requests.post(url, headers=headers, data=data)
print(response.json())
```
```java java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.http.HttpResponse.BodyHandlers;
public class ApiRequest {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newHttpClient();
String json = "{\"query\":\"query GetAIAppsOutputs($transcriptId: String) { apps(transcript_id: $transcriptId) { outputs { transcript_id user_id app_id created_at title prompt response } } } \", \"variables\":{\"transcriptId\":\"transcript_id\"}}";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.fireflies.ai/graphql"))
.header("Content-Type", "application/json")
.header("Authorization", "Bearer your_api_key")
.POST(HttpRequest.BodyPublishers.ofString(json))
.build();
client.sendAsync(request, HttpResponse.BodyHandlers.ofString())
.thenApply(HttpResponse::body)
.thenAccept(System.out::println)
.join();
}
}
```
```json Response
{
"data": {
"apps": [
{
"transcript_id": "transcript-id",
"user_id": "user-id",
"app_id": "app-id",
"title": "Weekly sync"
}
]
}
}
```
## Additional Resources
Advanced usage examples
Querying user details
# Bite
Source: https://docs.fireflies.ai/graphql-api/query/bite
Querying bite details
## Overview
The bite query is designed to fetch details associated with a specific bite ID.
## Arguments
Unique identifier of the bite
## Schema
Fields available to the [Bite](/schema/bite) query
## Usage Example
```graphql
query Bite($biteId: ID!) {
bite(id: $biteId) {
transcript_id
name
id
thumbnail
preview
status
summary
user_id
start_time
end_time
summary_status
media_type
created_at
created_from {
description
duration
id
name
type
}
captions {
end_time
index
speaker_id
speaker_name
start_time
text
}
sources {
src
type
}
privacies
user {
first_name
last_name
picture
name
id
}
}
}
```
```bash curl
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your_api_key" \
--data '{ "query": "query Bite($biteId: ID!) { bite(id: $biteId) { user_id name status summary } }", "variables": { "biteId": "your_bite_id" } }' \
https://api.fireflies.ai/graphql
```
```javascript javascript
const axios = require('axios');
const url = 'https://api.fireflies.ai/graphql';
const headers = {
'Content-Type': 'application/json',
Authorization: 'Bearer your_api_key'
};
const data = {
query: 'query Bite($biteId: ID!) { bite(id: $biteId) { user_id name status summary } }',
variables: { biteId: 'your_bite_id' }
};
axios
.post(url, data, { headers: headers })
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error('Error:', error);
});
```
```python python
import requests
url = 'https://api.fireflies.ai/graphql'
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer your_api_key'
}
data = '{"query": "query Bite($biteId: ID!) { bite(id: $biteId) { user_id name status summary } }", "variables": {"biteId": "your_bite_id"}}'
response = requests.post(url, headers=headers, data=data)
print(response.json())
```
```java java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.http.HttpRequest.BodyPublishers;
public class ApiRequest {
public static void main(String[] args) {
HttpClient client = HttpClient.newHttpClient();
String jsonRequest = "{\"query\": \"query Bite($biteId: ID!) { bite(id: $biteId) { user_id name status summary } }\", \"variables\": {\"biteId\": \"your_bite_id\"}}";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.fireflies.ai/graphql"))
.header("Content-Type", "application/json")
.header("Authorization", "Bearer your_api_key")
.POST(BodyPublishers.ofString(jsonRequest))
.build();
client.sendAsync(request, HttpResponse.BodyHandlers.ofString())
.thenApply(HttpResponse::body)
.thenAccept(System.out::println)
.join();
}
}
```
```json Response
{
"data": {
"bite": {
"user_id": "user-id",
"id": "bite-id",
}
}
}
```
## Additional Resources
Querying list of transcripts
Querying list of bites
# Bites
Source: https://docs.fireflies.ai/graphql-api/query/bites
Querying list of bites
## Overview
The bites query is designed to fetch a list of bites against input arguments.
## Arguments
The `mine` parameter, when set to true, fetches results specific to the owner of the API key
You can use `transcript_id` to query all bites against a specific transcript.
The `my_team` parameter, when set to true, fetches results for the owner of the API key
Maximum number of bites to fetch in a single query. Maximum of 50
Number of records to skip over. Helps paginate results when used in combination with the `limit`
param.
## Schema
Fields available to the [Bites](/schema/bite) query
## Usage Example
```graphql
query Bites($mine: Boolean) {
bites(mine: $mine) {
transcript_id
name
id
thumbnail
preview
status
summary
user_id
start_time
end_time
summary_status
media_type
created_at
created_from {
description
duration
id
name
type
}
captions {
end_time
index
speaker_id
speaker_name
start_time
text
}
sources {
src
type
}
privacies
user {
first_name
last_name
picture
name
id
}
}
}
```
```bash curl
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your_api_key" \
--data '{ "query": "query Bites($mine: Boolean) { bites(mine: $mine) { user_id name end_time } }", "variables": { "mine": true } }' \
https://api.fireflies.ai/graphql
```
```javascript javascript
const axios = require('axios');
const url = 'https://api.fireflies.ai/graphql';
const headers = {
'Content-Type': 'application/json',
Authorization: 'Bearer your_api_key'
};
const data = {
query: 'query Bites($mine: Boolean) { bites(mine: $mine) { user_id name end_time } }',
variables: { mine: true }
};
axios
.post(url, data, { headers: headers })
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error('Error:', error);
});
```
```python python
import requests
url = 'https://api.fireflies.ai/graphql'
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer your_api_key'
}
data = '{"query": "query Bites($mine: Boolean) { bites(mine: $mine) { user_id name end_time } }", "variables": {"mine": true }}'
response = requests.post(url, headers=headers, data=data)
print(response.json())
```
```java java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.http.HttpRequest.BodyPublishers;
public class ApiRequest {
public static void main(String[] args) {
HttpClient client = HttpClient.newHttpClient();
String jsonRequest = "{\"query\": \"query Bites($mine: Boolean) { bites(mine: $mine) { user_id name end_time } }\", \"variables\": {\"mine\": true}}";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.fireflies.ai/graphql"))
.header("Content-Type", "application/json")
.header("Authorization", "Bearer your_api_key")
.POST(BodyPublishers.ofString(jsonRequest))
.build();
client.sendAsync(request, HttpResponse.BodyHandlers.ofString())
.thenApply(HttpResponse::body)
.thenAccept(System.out::println)
.join();
}
}
```
```json Response
{
"data": {
"bites": [
{
"user_id": "user-id",
"id": "bite-id",
},
{
"user_id": "user-id",
"id": "bite-id-2",
}
]
}
}
```
## Error Codes
List of possible error codes that may be returned by the `bites` query. Full list of error codes can be found [here](/miscellaneous/error-codes).
You must provide at least one of the following arguments: `mine`, `transcript_id`, `my_team` to the bites query
## Additional Resources
Querying bite details
Use the API to add the Fireflies.ai bot to an ongoing meeting
# Transcript
Source: https://docs.fireflies.ai/graphql-api/query/transcript
Querying transcript details
## Overview
The transcript query is designed to fetch details associated with a specific transcript ID.
## Arguments
## Schema
Fields available to the [Transcript](/schema/transcript) query
## Usage Example
```graphql
query Transcript($transcriptId: String!) {
transcript(id: $transcriptId) {
id
dateString
privacy
speakers {
id
name
}
sentences {
index
speaker_name
speaker_id
text
raw_text
start_time
end_time
ai_filters {
task
pricing
metric
question
date_and_time
text_cleanup
sentiment
}
}
title
host_email
organizer_email
calendar_id
user {
user_id
email
name
num_transcripts
recent_meeting
minutes_consumed
is_admin
integrations
}
fireflies_users
participants
date
transcript_url
audio_url
video_url
duration
meeting_attendees {
displayName
email
phoneNumber
name
location
}
summary {
keywords
action_items
outline
shorthand_bullet
overview
bullet_gist
gist
short_summary
short_overview
meeting_type
topics_discussed
transcript_chapters
}
cal_id
calendar_type
meeting_info {
fred_joined
silent_meeting
summary_status
}
apps_preview {
outputs {
transcript_id
user_id
app_id
created_at
title
prompt
response
}
}
meeting_link
}
}
```
```bash curl
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your_api_key" \
--data '{ "query": "query Transcript($transcriptId: String!) { transcript(id: $transcriptId) { title id } }", "variables": { "transcriptId": "your_transcript_id" } }' \
https://api.fireflies.ai/graphql
```
```javascript javascript
const axios = require('axios');
const url = 'https://api.fireflies.ai/graphql';
const headers = {
'Content-Type': 'application/json',
Authorization: 'Bearer your_api_key'
};
const data = {
query: 'query Transcript($transcriptId: String!) { transcript(id: $transcriptId) { title id } }',
variables: { transcriptId: 'your_transcript_id' }
};
axios
.post(url, data, { headers: headers })
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error('Error:', error);
});
```
```python python
import requests
url = 'https://api.fireflies.ai/graphql'
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer your_api_key'
}
data = '{"query": "query Transcript($transcriptId: String!) { transcript(id: $transcriptId) { title id } }", "variables": {"transcriptId": "your_transcript_id"}}'
response = requests.post(url, headers=headers, data=data)
print(response.json())
```
```java java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.http.HttpRequest.BodyPublishers;
public class ApiRequest {
public static void main(String[] args) {
HttpClient client = HttpClient.newHttpClient();
String jsonRequest = "{\"query\": \"query Transcript($transcriptId: String!) { transcript(id: $transcriptId) { title id } }\", \"variables\": {\"transcriptId\": \"your_transcript_id\"}}";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.fireflies.ai/graphql"))
.header("Content-Type", "application/json")
.header("Authorization", "Bearer your_api_key")
.POST(BodyPublishers.ofString(jsonRequest))
.build();
client.sendAsync(request, HttpResponse.BodyHandlers.ofString())
.thenApply(HttpResponse::body)
.thenAccept(System.out::println)
.join();
}
}
```
```json Response
{
"data": {
"transcript": {
"title": "Weekly sync",
"id": "transcript-id",
}
}
}
```
## Error Codes
List of possible error codes that may be returned by the `transcript` query. Full list of error codes can be found [here](/miscellaneous/error-codes).
The transcript ID you are trying to query does not exist or you do not have access to it.
## Additional Resources
Querying list of users
Querying list of transcripts
# Transcripts
Source: https://docs.fireflies.ai/graphql-api/query/transcripts
Querying list of transcripts
## Overview
The transcripts query is designed to fetch a list of transcripts against input arguments.
## Arguments
Title of the transcript
Maximum length is 256 characters.
Return all transcripts created after `fromDate`. The `fromDate` parameter accepts a date-time
string in the ISO 8601 format, specifically in the form `YYYY-MM-DDTHH:mm.sssZ`. For example, a
valid timestamp would be `2024-07-08T22:13:46.660Z`.
Return all transcripts created before `toDate`. The `toDate` parameter accepts a date-time string
in the ISO 8601 format, specifically in the form `YYYY-MM-DDTHH:mm.sssZ`. For example, a valid
timestamp would be `2024-07-08T22:13:46.660Z`.
This field is deprecated. Please use `fromDate` and `toDate` instead.
Return all transcripts created within the date specified. Query input value must be in milliseconds.
For example, you can use the JavaScript `new Date().getTime()` to get the datetime in milliseconds
which should look like this `1621292557453`. The timezone for this field is UTC +00:00
For more details regarding time since [EPOCH](https://currentmillis.com/)
Number of transcripts to return. Maxiumum 50 in one query
Number of transcripts to skip.
Filter all meetings accordingly to meetings that have this email as the host.
Filter all meetings accordingly to meetings that have this email as the organizer.
Filter all meetings accordingly to all meetings that contains this email as an attendee.
[User id](/schema/user). Filter all meetings that have this user ID as the organizer or participant.
Filter all meetings that have the API key owner as the organizer.
## Schema
Fields available to the [Transcript](/schema/transcript) query
## Usage Example
```graphql
query Transcripts(
$title: String
$date: Float
$limit: Int
$skip: Int
$hostEmail: String
$participantEmail: String
$userId: String
) {
transcripts(
title: $title
date: $date
limit: $limit
skip: $skip
host_email: $hostEmail
participant_email: $participantEmail
user_id: $userId
) {
id
sentences {
index
speaker_name
speaker_id
text
raw_text
start_time
end_time
ai_filters {
task
pricing
metric
question
date_and_time
text_cleanup
sentiment
}
}
title
speakers {
id
name
}
host_email
organizer_email
meeting_info {
fred_joined
silent_meeting
summary_status
}
calendar_id
user {
user_id
email
name
num_transcripts
recent_meeting
minutes_consumed
is_admin
integrations
}
fireflies_users
participants
date
transcript_url
audio_url
video_url
duration
meeting_attendees {
displayName
email
phoneNumber
name
location
}
summary {
keywords
action_items
outline
shorthand_bullet
overview
bullet_gist
gist
short_summary
short_overview
meeting_type
topics_discussed
transcript_chapters
}
cal_id
calendar_type
apps_preview {
outputs {
transcript_id
user_id
app_id
created_at
title
prompt
response
}
}
meeting_link
}
}
```
```bash curl
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your_api_key" \
--data '{ "query": "query Transcripts($userId: String) { transcripts(user_id: $userId) { title id } }" }' \
https://api.fireflies.ai/graphql
```
```javascript javascript
const axios = require('axios');
const url = 'https://api.fireflies.ai/graphql';
const headers = {
'Content-Type': 'application/json',
Authorization: 'Bearer your_api_key'
};
const data = {
query: 'query Transcripts($userId: String) { transcripts(user_id: $userId) { title id } }',
variables: { userId: 'your_user_id' }
};
axios
.post(url, data, { headers: headers })
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error(error);
});
```
```python python
import requests
url = 'https://api.fireflies.ai/graphql'
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer your_api_key'
}
data = '{"query": "query Transcripts($userId: String) { transcripts(user_id: $userId) { title id } }", "variables": {"userId": "user_id"}}'
response = requests.post(url, headers=headers, data=data)
print(response.json())
```
```java java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.http.HttpResponse.BodyHandlers;
public class ApiRequest {
public static void main(String[] args) throws Exception {
HttpClient client = HttpClient.newHttpClient();
String json = "{\"query\":\"query Transcripts { transcripts { title id } } \"}";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.fireflies.ai/graphql"))
.header("Content-Type", "application/json")
.header("Authorization", "Bearer your_api_key")
.POST(HttpRequest.BodyPublishers.ofString(json))
.build();
client.sendAsync(request, HttpResponse.BodyHandlers.ofString())
.thenApply(HttpResponse::body)
.thenAccept(System.out::println)
.join();
}
}
```
```json Response
{
"data": {
"transcripts": [
{
"title": "Weekly sync",
"id": "transcript-id",
},
{
"title": "ClientMeeting.mp3",
"id": "transcript-id-2",
}
]
}
}
```
## Error Codes
List of possible error codes that may be returned by the `transcripts` query. Full list of error codes can be found [here](/miscellaneous/error-codes).
This may indicate that you are not a part of any team. Please contact support if you encounter
this error
The user ID you are trying to query does not exist or you do not have access to it.
## Additional Resources
Querying transcript details
Querying bite details
# User
Source: https://docs.fireflies.ai/graphql-api/query/user
Querying user details
## Overview
The user query is designed to fetch details associated with a specific user id.
## Arguments
`id` is an optional argument. Not passing an ID to this query will return user details for the
owner of the API key
## Schema
Fields available to the [User](/schema/user) query
## Usage Example
```graphql
query User($userId: String!) {
user(id: $userId) {
user_id
recent_transcript
recent_meeting
num_transcripts
name
minutes_consumed
is_admin
integrations
email
}
}
```
```bash curl
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your_api_key" \
--data '{ "query": "query User($userId: String!) { user(id: $userId) { name integrations } }", "variables": { "userId": "your_user_id" } }' \
https://api.fireflies.ai/graphql
```
```javascript javascript
const axios = require('axios');
const url = 'https://api.fireflies.ai/graphql';
const headers = {
'Content-Type': 'application/json',
Authorization: 'Bearer your_api_key'
};
const data = {
query: 'query User($userId: String!) { user(id: $userId) { name integrations } }',
variables: { userId: 'your_user_id' }
};
axios
.post(url, data, { headers: headers })
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error('Error:', error);
});
```
```python python
import requests
url = 'https://api.fireflies.ai/graphql'
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer your_api_key'
}
data = '{"query": "query User($userId: String!) { user(id: $userId) { name integrations } }", "variables": {"userId": "your_user_id"}}'
response = requests.post(url, headers=headers, data=data)
print(response.json())
```
```java java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.http.HttpRequest.BodyPublishers;
public class ApiRequest {
public static void main(String[] args) {
HttpClient client = HttpClient.newHttpClient();
String jsonRequest = "{\"query\": \"query User($userId: String!) { user(id: $userId) { name integrations } }\", \"variables\": {\"userId\": \"your_user_id\"}}";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.fireflies.ai/graphql"))
.header("Content-Type", "application/json")
.header("Authorization", "Bearer your_api_key")
.POST(BodyPublishers.ofString(jsonRequest))
.build();
client.sendAsync(request, HttpResponse.BodyHandlers.ofString())
.thenApply(HttpResponse::body)
.thenAccept(System.out::println)
.join();
}
}
```
```json Response
{
"data": {
"user": {
"name": "Justin Fly",
"integrations": ["string"],
}
}
}
```
## Error Codes
List of possible error codes that may be returned by the `user` query. Full list of error codes can be found [here](/miscellaneous/error-codes).
The user ID you are trying to query does not exist.
This may indicate that you are not a part of any team. Please contact support if you encounter this error
The user ID you are trying to query is not in your team.
## Additional Resources
Querying AI App details
Querying list of users
# Users
Source: https://docs.fireflies.ai/graphql-api/query/users
Querying list of users
## Overview
The users query is designed to fetch a list of all users within the team. You can also view this list on your dashboard at [app.fireflies.ai/team](http://app.fireflies.ai/team)
## Schema
Fields available to the [User](/schema/user) query
## Usage Example
```graphql
query Users {
users {
user_id
email
name
num_transcripts
recent_meeting
minutes_consumed
is_admin
integrations
}
}
```
```bash curl
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your_api_key" \
--data '{ "query": "{ users { name integrations } }" }' \
https://api.fireflies.ai/graphql
```
```javascript javascript
const axios = require('axios');
const url = 'https://api.fireflies.ai/graphql';
const headers = {
'Content-Type': 'application/json',
Authorization: 'Bearer your_api_key'
};
const data = {
query: '{ users { name integrations } }'
};
axios
.post(url, data, { headers: headers })
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error('Error:', error);
});
```
```python python
import requests
url = 'https://api.fireflies.ai/graphql'
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer your_api_key'
}
data = '{"query": "{ users { name integrations } }"}'
response = requests.post(url, headers=headers, data=data)
print(response.json())
```
```java java
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.http.HttpRequest.BodyPublishers;
public class ApiRequest {
public static void main(String[] args) {
HttpClient client = HttpClient.newHttpClient();
String jsonRequest = "{\"query\": \"{ users { name integrations } }\"}";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.fireflies.ai/graphql"))
.header("Content-Type", "application/json")
.header("Authorization", "Bearer your_api_key")
.POST(BodyPublishers.ofString(jsonRequest))
.build();
client.sendAsync(request, HttpResponse.BodyHandlers.ofString())
.thenApply(HttpResponse::body)
.thenAccept(System.out::println)
.join();
}
}
```
```json Response
{
"data": {
"users": [
{
"name": "Justin Fly",
"integrations": []
},
{
"name": "Peter Fire",
"integrations": []
}
]
}
}
```
## Error Codes
List of possible error codes that may be returned by the `users` query. Full list of error codes can be found [here](/miscellaneous/error-codes).
This may indicate that you are not a part of any team. Please contact support if you encounter this error
## Additional Resources
Querying user details
Querying transcript details
# Webhooks
Source: https://docs.fireflies.ai/graphql-api/webhooks
Webhook events for the Fireflies.ai API
## Overview
Webhooks enable your application to set up event based notifications. In this section, you'll learn how to configure webhooks to receive updates from Fireflies.
## Events supported
The webhooks support the following events:
* Transcription complete: Triggers when a meeting has been processed and the transcript is ready for viewing
Fireflies sends webhook notifications as POST requests to your specified endpoint. Each request contains a JSON payload with information about the event that occurred.
## Saving a webhook
Follow the instructions below to save a webhook URL that sends notifications for all subscribed events. This webhook will only be fired for meetings that you own.
Visit the [Fireflies.ai dashboard settings](https://app.fireflies.ai/settings)
Navigate to the Developer settings tab
Enter a valid https URL in the webhooks field and save
You may test your webhook using the upload audio API or by uploading through the dashboard at [app.fireflies.ai/upload](https://app.fireflies.ai/upload)
## Upload audio webhook
You can also include a webhook URL as part of an upload audio request. This is different from the saved webhook as it will only send notifications for that singular audio upload request.
```bash curl
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your_api_key" \
-d '{
"query": "mutation($input: AudioUploadInput) { uploadAudio(input: $input) { success title message } }",
"variables": {
"input": {
"url": "https://url_to_the_audio_file",
"title": "title of the file",
"webhook": "https://url_for_the_webhook"
}
}
}' \
https://api.fireflies.ai/graphql
```
```javascript javascript
const axios = require('axios');
const url = 'https://api.fireflies.ai/graphql';
const headers = {
'Content-Type': 'application/json',
Authorization: 'Bearer your_api_key'
};
const input = {
url: 'https://url_to_the_audio_file',
title: 'title of the file',
webhook: 'https://url_for_the_webhook'
};
const data = {
query: ` mutation($input: AudioUploadInput) {
uploadAudio(input: $input) {
success
title
message
}
}
`,
variables: { input }
};
axios
.post(url, data, { headers: headers })
.then(result => {
console.log(result.data);
})
.catch(e => {
console.log(JSON.stringify(e));
});
```
```python python
import requests
url = 'https://api.fireflies.ai/graphql'
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer your_api_key'
}
input_data = {
"url": "https://url_for_audio_file",
"title": "title of the file",
"webhook": "https://url_for_the_webhook"
}
data = {
'query': '''
mutation($input: AudioUploadInput) {
uploadAudio(input: $input) {
success
title
message
}
}
''',
'variables': {'input': input_data}
}
response = requests.post(url, headers=headers, json=data)
if response.status_code == 200:
print(response.json())
else:
print(response.text)
```
```java java
import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.http.HttpRequest.BodyPublishers;
import java.net.http.HttpResponse.BodyHandlers;
public class ApiRequest {
public static void main(String[] args) throws IOException, InterruptedException {
HttpClient client = HttpClient.newHttpClient();
String json = "{"
+ "\"query\":\"mutation($input: AudioUploadInput) { uploadAudio(input: $input) { success title message } }\","
+ "\"variables\":{"
+ "\"input\": {"
+ "\"url\":\"https://url_for_audio_file.com\","
+ "\"title\":\"title of the file\","
+ "\"webhook\":\"https://url_for_the_webhook\""
+ "}"
+ "}"
+ "}";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.fireflies.ai/graphql"))
.header("Content-Type", "application/json")
.header("Authorization", "Bearer your_api_key")
.POST(BodyPublishers.ofString(json))
.build();
client.sendAsync(request, HttpResponse.BodyHandlers.ofString())
.thenApply(HttpResponse::body)
.thenAccept(System.out::println)
.join();
}
}
```
## Webhook Authentication
Webhook authentication ensures that incoming webhook requests are securely verified before processing. This allows consumers to trust that webhook events originate from a secure and verified source.
### How It Works
Each webhook request sent from the server includes an `x-hub-signature` header containing a SHA-256 HMAC signature of the request payload. This signature is generated using a secret key known only to the server and your application.
When the consumer receives a webhook, they can use the signature provided in the `x-hub-signature` header to verify that the request has not been tampered with. This is done by computing their own HMAC signature using the shared secret key and comparing it to the signature included in the header.
### Saving a secret
1. Go to the settings page at [app.fireflies.ai/settings](https://app.fireflies.ai/settings)
2. Navigate to the **Developer Settings** tab
3. You can either:
* Enter a custom secret key of 16-32 characters in the input field
* Click on the refresh button to generate a random secret key
4. Click Save to ensure the secret gets updated
5. Make sure to store this secret key securely, as it will be used to authenticate incoming webhook requests
### Verifying the Signature
1. **Receive the Webhook**:
* Each request will include the payload and an `x-hub-signature` header
2. **Verify the Signature**:
* Compute the HMAC SHA-256 signature using the payload and the shared secret key
* Compare the computed signature to the `x-hub-signature` header value
* If they match, the request is verified as authentic. If they do not match, treat the request with caution or reject it
By verifying webhook signatures, consumers can ensure that webhook events received are secure and have not been altered during transmission
### See it in action
To see webhook authentication in action, you can view an example at [Fireflies.ai Verifying Webhook Requests](https://replit.com/@firefliesai/Firefliesai-Verifying-webhook-requests#index.js). This example demonstrates how to receive a webhook, compute the HMAC SHA-256 signature, and verify it against the `x-hub-signature` header to ensure the request's authenticity.
## Webhook Schema
Identifier for the meeting / transcript that the webhook has triggered for. MeetingId and
TranscriptId are used interchangeably for the Fireflies.ai Platform.
Name of the event type that has been fired against the webhook
Custom identifier set by the user during upload. You may use this to identify your uploads in your
events.
## Example Payload
```json
{
"meetingId": "ASxwZxCstx",
"eventType": "Transcription completed",
"clientReferenceId": "be582c46-4ac9-4565-9ba6-6ab4264496a8"
}
```
## FAQ
There may be multiple reasons why you are not receiving webhook requests. Please go through the following checklist:
- Webhooks are only fired for meeting owners, referred to in the API as the `organizer_email.` Ensure that you have correctly setup the webhooks for the meeting owner.
- Ensure that your webhook is setup as a POST request
- If you have setup secret verification, ensure that you are correctly verifying the request by checking the example implementation [here](https://replit.com/@firefliesai/Firefliesai-Verifying-webhook-requests?v=1).
Team-wide webhooks are only supported for the Enterprise tier with the Super Admin role. This allows you to setup one webhook for all meetings owned by your team. Details [here](/fundamentals/super-admin).
## Additional Resources
Use the API to update meeting titles
Schema for AIFilter
# Error codes
Source: https://docs.fireflies.ai/miscellaneous/error-codes
Error codes and their explanations
## Overview
This page lists the error codes and their corresponding reasons for the Fireflies.ai API. You can refer to this page to understand the meaning and possible causes of different error codes that you may encounter while using the API. It provides a comprehensive reference for troubleshooting and resolving issues. Please visit [Errors](/fundamentals/errors) page for more details
## API Errors
### `invalid_arguments`
Returned when invalid arguments are passed to a query or mutation
```json
{
"errors": [
{
... other fields for error
"message": "Invalid argument(s) were provided",
"code": "invalid_arguments",
"extensions": {
"code": "invalid_arguments",
"status": 400,
"metadata": {
"fields": [
{
"name": "fromDate",
"message": "fromDate must be a Date instance",
"constraints": [
{
"type": "isDate",
"message": "fromDate must be a Date instance"
}
]
}
]
}
}
}
]
}
```
### `object_not_found`
Returned when the subject of your query or mutation is not found. For example, querying a non-existent userId would throw an `object_not_found` error of the type `User`
```json
{
"errors": [
{
... other fields for error
"message": "User not found",
"code": "object_not_found",
"extensions": {
"code": "object_not_found",
"status": 404,
"metadata": {
"objectType": "User"
}
}
}
],
}
```
### `forbidden`
Returned when you are not allowed to perform an action
```json
{
"errors": [
{
... other fields for error
"message": "You are not authorized to perform this action",
"code": "forbidden",
"extensions": {
"code": "forbidden",
"status": 403,
}
}
]
}
```
### `paid_required`
Returned when you are required to be subscribed to a paid plan for the Fireflies.ai platform. The error will also mentioned the required `tier` for such actions. For example, making a request to `uploadAudio` as a free user will throw a `paid_required` error with tier `pro_or_higher`, which means that you need to be subscribed to a Pro or Higher plan to perform this action
```json
{
"errors": [
{
... other fields for error
"message": "You need to be subscribed to a paid plan to perform this action",
"code": "paid_required",
"extensions": {
"code": "paid_required",
"status": 403,
"metadata": {
"tier": "pro_or_higher"
},
}
}
]
}
```
### `not_in_team`
Returned when you are attempting to query against a `userId` that is not a part of your team
```json
{
"errors": [
{
... other fields for error
"message": "You do not have permissions for this team",
"code": "not_in_team",
"extensions": {
"code": "not_in_team",
"status": 403,
}
}
]
}
```
### `require_elevated_privilege`
Returned when you are attempting to perform admin actions as a non-admin user
```json
{
"errors": [
{
.. other fields for error
"message": "You do not have permission to perform this action",
"code": "require_elevated_privilege",
"extensions": {
"code": "require_elevated_privilege",
"status": 403,
}
}
]
}
```
### `account_cancelled`
Returned when your account has been cancelled due to non-payment or some other reason. Please contact support if you think this is a mistake
```json
{
"errors": [
{
... other fields for error
"message": "Your account is inactive. If this is not expected, please contact support",
"code": "account_cancelled",
"extensions": {
"code": "account_cancelled",
"status": 403,
}
}
]
}
```
### `args_required`
Returned when your query or mutation is missing one or more required arguments. The property `extesions.metadata.fields` will provide the list of fields that have this constraints
```json
{
"errors": [
{
... other fields for error
"message": "You must provide one of the following: mine, transcript_id, my_team",
"code": "args_required",
"extensions": {
"code": "args_required",
"status": 400,
"metadata": {
"fields": [
"mine",
"transcript_id",
"my_team"
]
},
}
}
]
}
```
### `too_many_requests`
Returned when you have been rate-limited due to making too many requests. The field `extensions.metadata.retryAfter` mentions the `retryAfter` time
```json
{
"errors": [
{
... other fields for error
"message": "Too many requests. Please retry after 2:45:45 AM (UTC)",
"code": "too_many_requests",
"extensions": {
"code": "too_many_requests",
"status": 429,
"metadata": {
"retryAfter": 1720651545066
}
}
}
]
}
```
### `payload_too_small`
Returned when the content size for `uploadAudio` mutation is too small. Upload files larger than `50kb` to avoid this error
```json
{
"errors": [
{
... other fields for error
"message": "Content size is too small. Please upload files larger than 50kb",
"code": "payload_too_small",
"extensions": {
"code": "payload_too_small",
"status": 400,
}
}
]
}
```
### `request_timeout`
Returned when your request has taken too long to respond.
```json
{
"errors": [
{
... other fields for error
"message": "Request timed out. Please try again or contact support",
"code": "request_timeout",
"extensions": {
"code": "request_timeout",
"status": 408,
}
}
]
}
```
### `invalid_language_code`
Returned when an invalid language code has been passed to a query or mutation
```json
{
"errors": [
{
... other fields for error
"message": "Language code is invalid or not supported. Please refer to API docs for supported languages",
"code": "invalid_language_code",
"extensions": {
"code": "invalid_language_code",
"status": 400,
}
}
]
}
```
### `admin_must_exist`
Returned when you are attempting to call `setUserRole` for a single member team
```json
{
"errors": [
{
... other fields for error
"message": "You must have at least one admin your team",
"code": "admin_must_exist",
"extensions": {
"code": "admin_must_exist",
"status": 400,
}
}
]
}
```
# Language codes
Source: https://docs.fireflies.ai/miscellaneous/language-codes
Language code abbreviations for the Fireflies.ai API
## Overview
This page lists the language codes supported by the Fireflies.ai API. You may use these codes with the `uploadAudio` or `addToLive` functionality to specify custom languages for your meetings. Each language entry includes the language name and its corresponding code, providing a quick and easy reference.
## References
* [Add to Live](/graphql-api/mutation/add-to-live)
* [Upload Audio](/graphql-api/mutation/upload-audio)
## Codes
```json
[
{
"languageName": "Arabic",
"languageCode": "ar"
},
{
"languageName": "Bulgarian",
"languageCode": "bg"
},
{
"languageName": "Chinese",
"languageCode": "zh"
},
{
"languageName": "Croatian",
"languageCode": "hr"
},
{
"languageName": "Czech",
"languageCode": "cs"
},
{
"languageName": "Danish",
"languageCode": "da"
},
{
"languageName": "Dutch",
"languageCode": "nl"
},
{
"languageName": "English",
"languageCode": "en"
},
{
"languageName": "US English",
"languageCode": "en-US"
},
{
"languageName": "Australia English",
"languageCode": "en-AU"
},
{
"languageName": "UK English",
"languageCode": "en-GB"
},
{
"languageName": "Finnish",
"languageCode": "fi"
},
{
"languageName": "French",
"languageCode": "fr"
},
{
"languageName": "German",
"languageCode": "de"
},
{
"languageName": "Hebrew",
"languageCode": "he"
},
{
"languageName": "Hindi",
"languageCode": "hi"
},
{
"languageName": "Hungarian",
"languageCode": "hu"
},
{
"languageName": "Indonesian",
"languageCode": "id"
},
{
"languageName": "Italian",
"languageCode": "it"
},
{
"languageName": "Japanese",
"languageCode": "ja"
},
{
"languageName": "Korean",
"languageCode": "ko"
},
{
"languageName": "Malay",
"languageCode": "ms"
},
{
"languageName": "Norwegian",
"languageCode": "no"
},
{
"languageName": "Polish",
"languageCode": "pl"
},
{
"languageName": "Portuguese",
"languageCode": "pt"
},
{
"languageName": "Romanian",
"languageCode": "ro"
},
{
"languageName": "Russian",
"languageCode": "ru"
},
{
"languageName": "Slovak",
"languageCode": "sk"
},
{
"languageName": "Spanish",
"languageCode": "es"
},
{
"languageName": "Latin American Spanish",
"languageCode": "es-419"
},
{
"languageName": "Swedish",
"languageCode": "sv"
},
{
"languageName": "Tamil",
"languageCode": "ta"
},
{
"languageName": "Thai",
"languageCode": "th"
},
{
"languageName": "Filipino",
"languageCode": "tl"
},
{
"languageName": "Turkish",
"languageCode": "tr"
},
{
"languageName": "Ukrainian",
"languageCode": "uk"
},
{
"languageName": "Vietnamese",
"languageCode": "vi"
}
]
```
# AIFilter
Source: https://docs.fireflies.ai/schema/aifilter
Schema for AIFilter
Description
Description
Description
Description
Description
Description
Description
## Additional Resources
Create notifications using webhooks
Schema for AI Apps
# App Output
Source: https://docs.fireflies.ai/schema/app-output
Schema for App Output
The ID of the meeting transcript.
The ID of the user who owns the AI App
The ID of the AI App
The timestamp in milliseconds from epoch when the output was generated
The title of the AI App
The prompt given to the AI App
The response generated by the AI App
## Additional Resources
Schema for Apps
Schema for AudioUploadStatus
# AI Apps
Source: https://docs.fireflies.ai/schema/apps
Schema for Apps
List of [AI App outputs](/schema/app-output)
## Additional Resources
Schema for AIFilter
Schema for App Output
# AudioUploadStatus
Source: https://docs.fireflies.ai/schema/audio-upload-status
Schema for AudioUploadStatus
Indicates whether the AudioUpload request was a success or not.
Title of the uploaded file.
Message from AudioUpload request.
## Additional Resources
Schema for App Output
Schema for Bite
# Bite
Source: https://docs.fireflies.ai/schema/bite
Schema for Bite
A unique identifier for the Bite
A unique identifier for the transcript the Bite is associated to
Start time for the Bite
End time for the Bite
A string representing the title of the Bite
URL of the Bite's thumbnail image
URL to a short preview video of the Bite
Current processing status of the Bite. Acceptable values include 'pending', 'processing', 'ready',
and 'error'
An AI-generated summary describing the content of the Bite
Identifier of the user who created the Bite
Status of the AI summary generation process
Type of the Bite, either 'video' or 'audio'
Array specifying the visibility of the Bite. Possible values are `public`, `team`, and
`participants`. For example, `["team", "participants"]` indicates visibility to both team members
and participants, while `["public"]` allows anyone to access the bite through its link
The date when this Bite was created
Object representing the user who created the Bite, including relevant user details
Name associated with the User
ID of the User
First name of the User
Last name of the User
Picture associated with the User
Array of MediaSource objects for the Bite
Source of the media
Type of the media
Array of Object describing text captions associated with the Bite
Index
SpeakerId associated with the caption object
Text associated with the caption
Name of the speaker associated with this caption
Start time for the caption
End time for the caption
Object describing the origin of the Bite with the following properties
Unique identifier
Name of the origin source
Type of the original source, e.g., 'meeting'
Length of the original source in seconds
## Additional Resources
Schema for AudioUploadStatus
Schema for MeetingAttendee
# Attendee
Source: https://docs.fireflies.ai/schema/input/attendee
Schema for Attendee
Display name of the attendee as it appears in meeting platforms like Google Chat, Zoom, etc.
Email address of the attendee.
Maximum length is 20 characters.
Phone number of the attendee.
# AudioUploadInput
Source: https://docs.fireflies.ai/schema/input/audio-upload-input
Schema for AudioUploadInput
URL from which the audio file will be fetched. This should be a direct link to the audio resource.
Title assigned to the uploaded file. If not provided, the file's original name will be used as its
title.
Maximum length is 256 characters.
Array of [Attendee](/schema/attendee) objects, as defined in the [Attendee](/schema/attendee)
schema. Each element in this array represents an attendee.
Max length of 100 attendees.
Custom language code for the meeting
Custom identifier set by the user during upload. You may use this to identify your uploads in your
events.
Maximum length is 128 characters.
Boolean value that specifies whether the content video needs to be saved.
# Role
Source: https://docs.fireflies.ai/schema/input/role
Schema for Role
Valid types for role are `admin` and `user`
# UpdateMeetingTitleInput
Source: https://docs.fireflies.ai/schema/input/update-meeting-title-input
Schema for UpdateMeetingTitleInput
The new title to be assigned to the meeting / transcript. The title must be a string between 5 and 250 characters long and should not contain any special characters.
Min / max of 5 / 256 characters.
The unique identifier of the meeting / transcript.
# MeetingAttendee
Source: https://docs.fireflies.ai/schema/meeting-attendee
Schema for MeetingAttendee
Display name of the meeting attendee.
Email address of the meeting attendee.
Phone number of the meeting attendee.
Full name of the meeting attendee.
Deprecated field
## Additional Resources
Use the API to upload audio to Fireflies.ai
Schema for MeetingInfo
# MeetingInfo
Source: https://docs.fireflies.ai/schema/meeting-info
Schema for MeetingInfo
Boolean value that returns `true` if the bot joined the call, `false` otherwise.
Boolean value that returns `true` if the meeting does not contain any spoken words. Otherwise
false.
String value representing the summary status. Possible values are `processing`, `processed`,
`failed`, `skipped`.
## Additional Resources
Schema for MeetingAttendee
Schema for Sentence
# Sentence
Source: https://docs.fireflies.ai/schema/sentence
Schema for Sentence
Index
Default transcription sentence or user edited transcription sentence.
Transcribed sentence from meeting audio
Start time of Sentence
End time of Sentence
Unique identifier for Speaker
Name of the speaker.
Sentiment analysis from meeting audio. Type of [AIFilter](/schema/aifilter)
## Additional Resources
Schema for MeetingInfo
Schema for Summary
# Speaker
Source: https://docs.fireflies.ai/schema/speaker
Schema for Speaker
ID of the speaker identified within the transcript
Name of the speaker identified within the transcript
## Additional Resources
Schema for Summary Section
Schema for Transcript
# Summary
Source: https://docs.fireflies.ai/schema/summary
AI generated summary of the meeting.
Meeting AI summary prompts are defined by [AI apps](https://app.fireflies.ai/apps) and can be
customized to your needs.
A list of action items generated by the AI based on the meeting transcript
A list of keywords generated by the AI based on the meeting transcript
An outline of the meeting with timestamps generated by the AI based on the meeting transcript.
A summary of the meeting generated by the AI
A list of shorthand bullets generated by the AI
A summary of the meeting in 1 sentence
Summary of the meeting in a few bullet points with descriptive emojis
Summary of the meeting in a single paragraph
Brief overview of the meeting
Meeting classification
List of topics discussed during the meeting.
Chapters of the short transcript. The short transcript is an LLM-condensed transcript that may be helpful for downstream applications
Optional sections of the summary included by customizing the summary from the dashboard.
## Additional Resources
Schema for Sentence
Schema for Summary Section
# SummarySection
Source: https://docs.fireflies.ai/schema/summary-section
Extended sections of the summary included by customizing the summary from the dashboard.
Title of the section
Response summary content of the section
## Additional Resources
Schema for Summary
Schema for Speaker
# Transcript
Source: https://docs.fireflies.ai/schema/transcript
Schema for Transcript
Unique identifier of the Transcript.
Title of the Transcript.
[DEPRECATED](/additional-info/deprecated)
Email address of the meeting host.
Email address of the meeting organizer.
The [User](/schema/user) who Fred recorded the meeting on behalf of
The speakers array contains the id and name of the speaker as it appears within the transcript
The url to view the transcript in the dashboard
An array of email addresses of meeting participants guests, including participants that do not
have Fireflies account.
List of [MeetingAttendee](/schema/meeting-attendee)
An array of email addresses of only Fireflies users participants that have fireflies account that
participated in the meeting
Duration of the audio
String representation of DateTime. Example: `2024-04-22T20:14:04.454Z`
Date the transcript was created represented in milliseconds from
[EPOCH](https://en.wikipedia.org/wiki/Epoch_\(computing\)).
The timezone for this field is UTC +00:00
Secure, newly generated hashed url that allows you download meeting audio. This url expires after
every 24 hours. You'd have to make another request to generate a new audio\_url.
You need to be subscribed to subscribed to a pro or higher plan to query audio\_url. View plans [here](https://fireflies.ai/pricing)
Secure, newly generated hashed url that allows you download meeting video. This url expires after
every 24 hours. You'd have to make another request to generate a new video\_url. You will need to
enable `RECORD MEETING VIDEO` setting on your Fireflies
[dashboard](https://app.fireflies.ai/settings) for this to work.
You need to be subscribed to a business or higher plan to query video\_url. View plans [here](https://fireflies.ai/pricing)
An array of [Sentence](/schema/sentence)(s), containing transcript details like `raw_text`,
`speaker_name`, etc.
Calendar provider event ID. This field represents calId for google calendar and iCalUID for
outlook calendar.
AI generated [Summary](/schema/summary) of the meeting.
[MeetingInfo](/schema/meeting-info) metadata fields.
Calendar provider event ID with a timestamp that helps uniquely identify recurring events
Calendar provider name
Preview of [Apps](/schema/apps) generated from the transcript. Max limit of 5 most recent AI App Outputs per meeting. Use the [Apps Query](/graphql-api/query/apps) to fetch the entire list of AI App Outputs
The web conferencing url of the meeting. This field is only populated if the meeting was hosted on a supported platform such as Google Meet, Zoom, etc.
## Additional Resources
Schema for Speaker
Schema for User
# User
Source: https://docs.fireflies.ai/schema/user
Schema for User
Unique identifier for the User.
Email address for the User.
Full name of the User.
Total number of transcripts associated with the user.
Most recent transcript generated by the user.
Details about the user's most recent meeting.
Total number of minutes consumed by the user in meetings.
Indicates whether the user has administrative privileges. True if the user is an admin, false
otherwise.
A list of integrations enabled for the user's account.