!npm list graphql graphql-request 2>/dev/null || echo 'No graphql packages'
Fireflies.ai uses a GraphQL API (no versioned SDK). Breaking changes come as field deprecations and new query parameter patterns. This skill covers all known deprecations and migration paths.
// DEPRECATED: Single organizer email string
const OLD = `{ transcripts(organizer_email: "alice@co.com") { id } }`;
// CURRENT: Array of organizer emails
const NEW = `{ transcripts(organizers: ["alice@co.com"]) { id } }`;
// DEPRECATED: Single participant email string
const OLD = `{ transcripts(participant_email: "bob@co.com") { id } }`;
// CURRENT: Array of participant emails
const NEW = `{ transcripts(participants: ["bob@co.com"]) { id } }`;
// DEPRECATED: title parameter for search
const OLD = `{ transcripts(title: "standup") { id } }`;
// CURRENT: keyword with scope
const NEW = `{ transcripts(keyword: "standup") { id } }`;
// DEPRECATED: date parameter (single date)
const OLD = `{ transcripts(date: "2026-03-01") { id } }`;
// CURRENT: fromDate/toDate range
const NEW = `{
transcripts(
fromDate: "2026-03-01T00:00:00Z"
toDate: "2026-03-31T23:59:59Z"
) { id }
}`;
// DEPRECATED
transcript.host_email
// CURRENT
transcript.organizer_email
set -euo pipefail
echo "=== Scanning for deprecated Fireflies patterns ==="
# Deprecated query parameters
grep -rn 'organizer_email:' --include='*.ts' --include='*.js' --include='*.py' . || echo "No organizer_email (good)"
grep -rn 'participant_email:' --include='*.ts' --include='*.js' --include='*.py' . || echo "No participant_email (good)"
grep -rn 'host_email' --include='*.ts' --include='*.js' --include='*.py' . || echo "No host_email (good)"
grep -rn 'transcripts(.*title:' --include='*.ts' --include='*.js' --include='*.py' . || echo "No title param (good)"
grep -rn 'transcripts(.*date:' --include='*.ts' --include='*.js' --include='*.py' . || echo "No date param (good)"
Create a migration helper:
// migrations/fireflies-deprecations.ts
/**
* Maps old query parameter names to new ones.
* Update your GraphQL queries to use the new parameter names.
*/
const PARAM_MIGRATIONS: Record<string, string> = {
"organizer_email": "organizers (now an array)",
"participant_email": "participants (now an array)",
"title": "keyword",
"date": "fromDate + toDate",
"host_email": "organizer_email",
};
export function checkForDeprecations(query: string): string[] {
const warnings: string[] = [];
for (const [old, replacement] of Object.entries(PARAM_MIGRATIONS)) {
if (query.includes(old)) {
warnings.push(`Deprecated: "${old}" → use "${replacement}"`);
}
}
return warnings;
}
set -euo pipefail
# Discover all available query fields
curl -s -X POST https://api.fireflies.ai/graphql \
-H "Authorization: Bearer $FIREFLIES_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"query": "{ __schema { queryType { fields { name args { name type { name kind } } } } } }"
}' | jq '.data.__schema.queryType.fields[] | {name, args: [.args[] | .name]}'
# Discover transcript fields
curl -s -X POST https://api.fireflies.ai/graphql \
-H "Authorization: Bearer $FIREFLIES_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"query": "{ __type(name: \"Transcript\") { fields { name type { name kind } } } }"
}' | jq '.data.__type.fields[] | .name'
import { describe, it, expect } from "vitest";
import { checkForDeprecations } from "../migrations/fireflies-deprecations";
describe("Deprecation Check", () => {
it("should flag deprecated parameters", () => {
const warnings = checkForDeprecations(
'{ transcripts(organizer_email: "test") { id } }'
);
expect(warnings.length).toBeGreaterThan(0);
expect(warnings[0]).toContain("organizers");
});
it("should pass clean queries", () => {
const warnings = checkForDeprecations(
'{ transcripts(organizers: ["test"]) { id } }'
);
expect(warnings.length).toBe(0);
});
});
# Check for API updates
set -euo pipefail
curl -s https://docs.fireflies.ai/additional-info/change-log | head -100
# Or visit: https://docs.fireflies.ai/getting-started/whats-new
| Issue | Cause | Solution |
|---|---|---|
| Field not found | Using removed field | Introspect schema, update query |
| Unexpected null | Field renamed | Check deprecation list above |
| Query validation error | Old parameter name | Update to array-based params |
| Type mismatch | String vs array param | Wrap single value in array |
For CI integration during upgrades, see fireflies-ci-integration.