{
  "openapi": "3.0.3",
  "info": {
    "title": "ecfin API Reference",
    "version": "0.1.0",
    "description": "EarningsCalls.dev source API for bluedoor Financial Data.\nTranscript-native source with speaker and segment decomposition.\nCoverage: Earnings call calendars; Full transcripts; Speaker lists; Parsed transcript segments.\nGenerated from the live source contract and representative live API responses on 2026-06-07T01:30:59.456Z."
  },
  "servers": [
    {
      "url": "https://api.ecfin.bluedoor.sh",
      "description": "ecfin source API"
    }
  ],
  "externalDocs": {
    "description": "EarningsCalls.dev source API docs",
    "url": "https://bluedoor.sh/apis/financial-data/sources/ecfin"
  },
  "tags": [
    {
      "name": "Calendars"
    },
    {
      "name": "Transcripts"
    }
  ],
  "paths": {
    "/v1/calendar": {
      "get": {
        "operationId": "ecfin_get_calendar",
        "summary": "Month",
        "parameters": [
          {
            "name": "month",
            "in": "query",
            "schema": {
              "type": "string",
              "pattern": "^\\d{4}-\\d{2}$",
              "example": "2026-05"
            }
          },
          {
            "name": "refresh",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "x-ecfin-contact",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "format": "email"
            },
            "description": "Optional contact email for higher public rate limits and support diagnostics."
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "example": "Bearer <key>"
            },
            "description": "Optional API-key authorization for higher-volume access tiers."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ecfin_get_calendarResponse"
                },
                "examples": {
                  "live": {
                    "summary": "Live response",
                    "value": {
                      "meta": {
                        "provider": "earningscalls.dev",
                        "route": "calendar_month",
                        "contract": "earningscalls.calendar.month",
                        "cache": "miss",
                        "identity_tier": "contact",
                        "ttl_seconds": 900,
                        "generated_at": "2026-06-07T01:35:34.103Z"
                      },
                      "data": {
                        "month": {
                          "year": 2026,
                          "month": 5,
                          "name": "May"
                        },
                        "limits": {
                          "minMonth": "2026-03",
                          "maxMonth": "2026-09"
                        },
                        "sectors": [
                          "Communication Services",
                          "Consumer Discretionary",
                          "Consumer Staples"
                        ],
                        "total_calls": 5443,
                        "days": [
                          {
                            "date": "2026-04-26",
                            "day_number": 26,
                            "is_current_month": false,
                            "events": []
                          },
                          {
                            "date": "2026-04-27",
                            "day_number": 27,
                            "is_current_month": false,
                            "events": []
                          },
                          {
                            "date": "2026-04-28",
                            "day_number": 28,
                            "is_current_month": false,
                            "events": []
                          }
                        ],
                        "events": [
                          {
                            "calendar_date": "2026-05-01",
                            "id": 27586,
                            "company_name": "Pizza Pizza Royalty Corp.",
                            "company_ticker": "PZA:CA",
                            "stock_symbol": "PZA",
                            "event_date_time": "2026-05-01T21:00:00.000Z",
                            "sector": "Consumer Discretionary",
                            "industry": "Hotels, Restaurants and Leisure",
                            "title": "Pizza Pizza Royalty Corp., Q1 2026 Earnings Call, May 01, 2026",
                            "type": "transcript",
                            "exchange": null,
                            "market_cap": null
                          },
                          {
                            "calendar_date": "2026-05-01",
                            "id": 27573,
                            "company_name": "Morguard Real Estate Investment Trust",
                            "company_ticker": "MRTUN:CA",
                            "stock_symbol": "MRTUN",
                            "event_date_time": "2026-05-01T20:00:00.000Z",
                            "sector": "Real Estate",
                            "industry": "Diversified REITs",
                            "title": "Morguard Real Estate Investment Trust, Q1 2026 Earnings Call, May 01, 2026",
                            "type": "transcript",
                            "exchange": null,
                            "market_cap": null
                          },
                          {
                            "calendar_date": "2026-05-01",
                            "id": 27574,
                            "company_name": "Zions Bancorporation, National Association",
                            "company_ticker": "ZION:US",
                            "stock_symbol": "ZION",
                            "event_date_time": "2026-05-01T19:00:00.000Z",
                            "sector": "Financials",
                            "industry": "Banks",
                            "title": "Zions Bancorporation, National Association - Shareholder/Analyst Call",
                            "type": "transcript",
                            "exchange": null,
                            "market_cap": null
                          }
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request. A required parameter is missing, malformed, or outside the supported range.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 400 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "bad_request",
                        "message": "Required query parameter is missing or invalid."
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized. API-key authenticated tiers use an Authorization bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 401 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "unauthorized",
                        "message": "A valid API key is required for this tier."
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not found. The requested route, resource, or symbol could not be resolved.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 404 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "not_found",
                        "message": "The requested resource was not found."
                      }
                    }
                  }
                }
              }
            }
          },
          "405": {
            "description": "Method not allowed. Source API routes are documented as HTTP GET unless otherwise specified.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 405 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "method_not_allowed",
                        "message": "This route does not support the requested HTTP method."
                      }
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 429 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "rate_limited",
                        "message": "Too many requests. Retry after the rate-limit reset."
                      }
                    }
                  }
                }
              }
            }
          },
          "502": {
            "description": "Upstream source error. The source service rejected or failed the upstream request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 502 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "upstream_error",
                        "message": "The upstream source returned an error."
                      }
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Origin temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 503 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "service_unavailable",
                        "message": "The service is temporarily unavailable."
                      }
                    }
                  }
                }
              }
            }
          },
          "504": {
            "description": "Upstream timeout. The upstream source did not return within the source API timeout window.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 504 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "upstream_timeout",
                        "message": "The upstream source timed out."
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {},
          {
            "ContactEmail": []
          },
          {
            "BearerAuth": []
          },
          {
            "EcfinApiKey": []
          }
        ],
        "description": "Returns month with source-native dates, event fields, and pagination where available.",
        "tags": [
          "Calendars"
        ],
        "x-source-api": "ecfin",
        "x-source-name": "EarningsCalls.dev",
        "x-source-upstream": "earningscalls.dev",
        "x-docs-example-url": "https://api.ecfin.bluedoor.sh/v1/calendar?month=2026-05",
        "x-docs-example-status": 200,
        "x-docs-captured-at": "2026-06-07T01:35:34.353Z"
      }
    },
    "/v1/calendar/day": {
      "get": {
        "operationId": "ecfin_get_calendar_day",
        "summary": "Day",
        "parameters": [
          {
            "name": "date",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "refresh",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "x-ecfin-contact",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "format": "email"
            },
            "description": "Optional contact email for higher public rate limits and support diagnostics."
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "example": "Bearer <key>"
            },
            "description": "Optional API-key authorization for higher-volume access tiers."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ecfin_get_calendar_dayResponse"
                },
                "examples": {
                  "live": {
                    "summary": "Live response",
                    "value": {
                      "meta": {
                        "provider": "earningscalls.dev",
                        "route": "calendar_day",
                        "contract": "earningscalls.calendar.day",
                        "cache": "miss",
                        "identity_tier": "contact",
                        "ttl_seconds": 900,
                        "generated_at": "2026-06-07T01:35:36.273Z"
                      },
                      "data": {
                        "date": "2026-05-01",
                        "day": {
                          "date": "2026-05-01",
                          "day_number": 1,
                          "is_current_month": true,
                          "events": [
                            {
                              "id": 27586,
                              "company_name": "Pizza Pizza Royalty Corp.",
                              "company_ticker": "PZA:CA",
                              "stock_symbol": "PZA",
                              "event_date_time": "2026-05-01T21:00:00.000Z",
                              "sector": "Consumer Discretionary",
                              "industry": "Hotels, Restaurants and Leisure",
                              "title": "Pizza Pizza Royalty Corp., Q1 2026 Earnings Call, May 01, 2026",
                              "type": "transcript",
                              "exchange": null,
                              "market_cap": null
                            },
                            {
                              "id": 27573,
                              "company_name": "Morguard Real Estate Investment Trust",
                              "company_ticker": "MRTUN:CA",
                              "stock_symbol": "MRTUN",
                              "event_date_time": "2026-05-01T20:00:00.000Z",
                              "sector": "Real Estate",
                              "industry": "Diversified REITs",
                              "title": "Morguard Real Estate Investment Trust, Q1 2026 Earnings Call, May 01, 2026",
                              "type": "transcript",
                              "exchange": null,
                              "market_cap": null
                            },
                            {
                              "id": 27574,
                              "company_name": "Zions Bancorporation, National Association",
                              "company_ticker": "ZION:US",
                              "stock_symbol": "ZION",
                              "event_date_time": "2026-05-01T19:00:00.000Z",
                              "sector": "Financials",
                              "industry": "Banks",
                              "title": "Zions Bancorporation, National Association - Shareholder/Analyst Call",
                              "type": "transcript",
                              "exchange": null,
                              "market_cap": null
                            }
                          ]
                        },
                        "events": [
                          {
                            "id": 27586,
                            "company_name": "Pizza Pizza Royalty Corp.",
                            "company_ticker": "PZA:CA",
                            "stock_symbol": "PZA",
                            "event_date_time": "2026-05-01T21:00:00.000Z",
                            "sector": "Consumer Discretionary",
                            "industry": "Hotels, Restaurants and Leisure",
                            "title": "Pizza Pizza Royalty Corp., Q1 2026 Earnings Call, May 01, 2026",
                            "type": "transcript",
                            "exchange": null,
                            "market_cap": null
                          },
                          {
                            "id": 27573,
                            "company_name": "Morguard Real Estate Investment Trust",
                            "company_ticker": "MRTUN:CA",
                            "stock_symbol": "MRTUN",
                            "event_date_time": "2026-05-01T20:00:00.000Z",
                            "sector": "Real Estate",
                            "industry": "Diversified REITs",
                            "title": "Morguard Real Estate Investment Trust, Q1 2026 Earnings Call, May 01, 2026",
                            "type": "transcript",
                            "exchange": null,
                            "market_cap": null
                          },
                          {
                            "id": 27574,
                            "company_name": "Zions Bancorporation, National Association",
                            "company_ticker": "ZION:US",
                            "stock_symbol": "ZION",
                            "event_date_time": "2026-05-01T19:00:00.000Z",
                            "sector": "Financials",
                            "industry": "Banks",
                            "title": "Zions Bancorporation, National Association - Shareholder/Analyst Call",
                            "type": "transcript",
                            "exchange": null,
                            "market_cap": null
                          }
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request. A required parameter is missing, malformed, or outside the supported range.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 400 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "bad_request",
                        "message": "Required query parameter is missing or invalid."
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized. API-key authenticated tiers use an Authorization bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 401 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "unauthorized",
                        "message": "A valid API key is required for this tier."
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not found. The requested route, resource, or symbol could not be resolved.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 404 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "not_found",
                        "message": "The requested resource was not found."
                      }
                    }
                  }
                }
              }
            }
          },
          "405": {
            "description": "Method not allowed. Source API routes are documented as HTTP GET unless otherwise specified.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 405 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "method_not_allowed",
                        "message": "This route does not support the requested HTTP method."
                      }
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 429 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "rate_limited",
                        "message": "Too many requests. Retry after the rate-limit reset."
                      }
                    }
                  }
                }
              }
            }
          },
          "502": {
            "description": "Upstream source error. The source service rejected or failed the upstream request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 502 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "upstream_error",
                        "message": "The upstream source returned an error."
                      }
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Origin temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 503 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "service_unavailable",
                        "message": "The service is temporarily unavailable."
                      }
                    }
                  }
                }
              }
            }
          },
          "504": {
            "description": "Upstream timeout. The upstream source did not return within the source API timeout window.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 504 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "upstream_timeout",
                        "message": "The upstream source timed out."
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {},
          {
            "ContactEmail": []
          },
          {
            "BearerAuth": []
          },
          {
            "EcfinApiKey": []
          }
        ],
        "description": "Returns day with source-native dates, event fields, and pagination where available.",
        "tags": [
          "Calendars"
        ],
        "x-source-api": "ecfin",
        "x-source-name": "EarningsCalls.dev",
        "x-source-upstream": "earningscalls.dev",
        "x-docs-example-url": "https://api.ecfin.bluedoor.sh/v1/calendar/day?date=2026-05-01",
        "x-docs-example-status": 200,
        "x-docs-captured-at": "2026-06-07T01:35:36.388Z"
      }
    },
    "/v1/calendar/search": {
      "get": {
        "operationId": "ecfin_get_calendar_search",
        "summary": "Search",
        "parameters": [
          {
            "name": "month",
            "in": "query",
            "schema": {
              "type": "string",
              "pattern": "^\\d{4}-\\d{2}$",
              "example": "2026-05"
            }
          },
          {
            "name": "q",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ticker",
            "in": "query",
            "schema": {
              "type": "string",
              "example": "ZION"
            }
          },
          {
            "name": "sector",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "industry",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "date",
            "in": "query",
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 1000,
              "default": 100
            }
          },
          {
            "name": "refresh",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "x-ecfin-contact",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "format": "email"
            },
            "description": "Optional contact email for higher public rate limits and support diagnostics."
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "example": "Bearer <key>"
            },
            "description": "Optional API-key authorization for higher-volume access tiers."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ecfin_get_calendar_searchResponse"
                },
                "examples": {
                  "live": {
                    "summary": "Live response",
                    "value": {
                      "meta": {
                        "provider": "earningscalls.dev",
                        "route": "calendar_search",
                        "contract": "earningscalls.calendar.search",
                        "cache": "miss",
                        "identity_tier": "contact",
                        "ttl_seconds": 900,
                        "generated_at": "2026-06-07T01:35:38.069Z"
                      },
                      "data": {
                        "criteria": {
                          "q": "pizza",
                          "ticker": "",
                          "sector": "",
                          "industry": "",
                          "date": "",
                          "limit": 100
                        },
                        "total_matches": 2,
                        "events": [
                          {
                            "calendar_date": "2026-05-01",
                            "id": 27586,
                            "company_name": "Pizza Pizza Royalty Corp.",
                            "company_ticker": "PZA:CA",
                            "stock_symbol": "PZA",
                            "event_date_time": "2026-05-01T21:00:00.000Z",
                            "sector": "Consumer Discretionary",
                            "industry": "Hotels, Restaurants and Leisure",
                            "title": "Pizza Pizza Royalty Corp., Q1 2026 Earnings Call, May 01, 2026",
                            "type": "transcript",
                            "exchange": null,
                            "market_cap": null
                          },
                          {
                            "calendar_date": "2026-05-13",
                            "id": 30420,
                            "company_name": "Boston Pizza Royalties Income Fund",
                            "company_ticker": "BPFUN:CA",
                            "stock_symbol": "BPFUN",
                            "event_date_time": "2026-05-13T15:30:00.000Z",
                            "sector": "Consumer Discretionary",
                            "industry": "Hotels, Restaurants and Leisure",
                            "title": "Boston Pizza Royalties Income Fund, Q1 2026 Earnings Call, May 13, 2026",
                            "type": "transcript",
                            "exchange": null,
                            "market_cap": null
                          }
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request. A required parameter is missing, malformed, or outside the supported range.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 400 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "bad_request",
                        "message": "Required query parameter is missing or invalid."
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized. API-key authenticated tiers use an Authorization bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 401 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "unauthorized",
                        "message": "A valid API key is required for this tier."
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not found. The requested route, resource, or symbol could not be resolved.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 404 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "not_found",
                        "message": "The requested resource was not found."
                      }
                    }
                  }
                }
              }
            }
          },
          "405": {
            "description": "Method not allowed. Source API routes are documented as HTTP GET unless otherwise specified.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 405 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "method_not_allowed",
                        "message": "This route does not support the requested HTTP method."
                      }
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 429 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "rate_limited",
                        "message": "Too many requests. Retry after the rate-limit reset."
                      }
                    }
                  }
                }
              }
            }
          },
          "502": {
            "description": "Upstream source error. The source service rejected or failed the upstream request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 502 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "upstream_error",
                        "message": "The upstream source returned an error."
                      }
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Origin temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 503 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "service_unavailable",
                        "message": "The service is temporarily unavailable."
                      }
                    }
                  }
                }
              }
            }
          },
          "504": {
            "description": "Upstream timeout. The upstream source did not return within the source API timeout window.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 504 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "upstream_timeout",
                        "message": "The upstream source timed out."
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {},
          {
            "ContactEmail": []
          },
          {
            "BearerAuth": []
          },
          {
            "EcfinApiKey": []
          }
        ],
        "description": "Returns search with source-native dates, event fields, and pagination where available.",
        "tags": [
          "Calendars"
        ],
        "x-source-api": "ecfin",
        "x-source-name": "EarningsCalls.dev",
        "x-source-upstream": "earningscalls.dev",
        "x-docs-example-url": "https://api.ecfin.bluedoor.sh/v1/calendar/search?month=2026-05&q=Pizza",
        "x-docs-example-status": 200,
        "x-docs-captured-at": "2026-06-07T01:35:38.215Z"
      }
    },
    "/v1/transcripts/{id}": {
      "get": {
        "operationId": "ecfin_get_transcripts_id",
        "summary": "Transcript",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "example": 27586
            }
          },
          {
            "name": "refresh",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "x-ecfin-contact",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "format": "email"
            },
            "description": "Optional contact email for higher public rate limits and support diagnostics."
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "example": "Bearer <key>"
            },
            "description": "Optional API-key authorization for higher-volume access tiers."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ecfin_get_transcripts_idResponse"
                },
                "examples": {
                  "live": {
                    "summary": "Live response",
                    "value": {
                      "meta": {
                        "provider": "earningscalls.dev",
                        "route": "transcript",
                        "contract": "earningscalls.transcript.full",
                        "cache": "hit",
                        "identity_tier": "contact",
                        "ttl_seconds": 86400,
                        "generated_at": "2026-06-07T00:20:36.481Z"
                      },
                      "data": {
                        "earnings": {
                          "id": 27586,
                          "company_name": "Pizza Pizza Royalty Corp.",
                          "company_ticker": "PZA:CA",
                          "stock_symbol": "PZA",
                          "event_date_time": "2026-05-01T21:00:00.000Z",
                          "sector": "Consumer Discretionary",
                          "industry": "Hotels, Restaurants and Leisure",
                          "title": "Pizza Pizza Royalty Corp., Q1 2026 Earnings Call, May 01, 2026",
                          "type": null,
                          "exchange": "TSX",
                          "market_cap": null
                        },
                        "has_transcript": true,
                        "has_speakers": true,
                        "transcript": "\nOperator (Operator):\nLadies and gentlemen, thank you for standing by, and welcome to the Pizza Pizza Royalty Corp.'s Earnings Call for the First Quarter of 2026. [Operator Instructions] As a reminder, this conference is being recorded on May 1, 2026. \r\nI will now turn the call over to Christine D'Sylva, CFO. Please go...",
                        "transcript_chars": 23626,
                        "speakers": [
                          {
                            "order": 0,
                            "name": "Operator",
                            "type": "Operator",
                            "text": "Ladies and gentlemen, thank you for standing by, and welcome to the Pizza Pizza Royalty Corp.'s Earnings Call for the First Quarter of 2026. [Operator Instructions] As a reminder, this conference is being recorded on May 1, 2026. \r\nI will now turn the call over to Christine D'Sylva, CFO. Please go ahead.",
                            "text_chars": 305
                          },
                          {
                            "order": 1,
                            "name": "Christine D'Sylva",
                            "type": "Executives",
                            "text": "Thank you. Good afternoon, everyone, and welcome to Pizza Pizza Royalty Corp.'s Earnings Call for the First Quarter ended March 31, 2026. Joining me on the call today is Pizza Pizza Limited's President and Chief Executive Officer, Paul Goddard. \r\nJust a quick note, our discussion today will contain forward-looking stat...",
                            "text_chars": 1059
                          },
                          {
                            "order": 2,
                            "name": "Paul Goddard",
                            "type": "Executives",
                            "text": "Thank you, Christine, and good afternoon, everyone. We appreciate you joining our call. This afternoon, we released our results for the First Quarter of 2026, which you can find posted on our website. The overall macroeconomic conditions remained challenging through the first quarter of 2026. We saw the impact on consu...",
                            "text_chars": 4491
                          }
                        ],
                        "segments": [
                          {
                            "order": 0,
                            "speaker_name": "Operator",
                            "speaker_type": "Operator",
                            "text": "Ladies and gentlemen, thank you for standing by, and welcome to the Pizza Pizza Royalty Corp.'s Earnings Call for the First Quarter of 2026. [Operator Instructions] As a reminder, this conference is being recorded on May 1, 2026. \r\nI will now turn the call over to Christine D'Sylva, CFO. Please go ahead.",
                            "text_chars": 305
                          },
                          {
                            "order": 1,
                            "speaker_name": "Christine D'Sylva",
                            "speaker_type": "Executives",
                            "text": "Thank you. Good afternoon, everyone, and welcome to Pizza Pizza Royalty Corp.'s Earnings Call for the First Quarter ended March 31, 2026. Joining me on the call today is Pizza Pizza Limited's President and Chief Executive Officer, Paul Goddard. \r\nJust a quick note, our discussion today will contain forward-looking stat...",
                            "text_chars": 1059
                          },
                          {
                            "order": 2,
                            "speaker_name": "Paul Goddard",
                            "speaker_type": "Executives",
                            "text": "Thank you, Christine, and good afternoon, everyone. We appreciate you joining our call. This afternoon, we released our results for the First Quarter of 2026, which you can find posted on our website. The overall macroeconomic conditions remained challenging through the first quarter of 2026. We saw the impact on consu...",
                            "text_chars": 4491
                          }
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request. A required parameter is missing, malformed, or outside the supported range.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 400 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "bad_request",
                        "message": "Required query parameter is missing or invalid."
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized. API-key authenticated tiers use an Authorization bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 401 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "unauthorized",
                        "message": "A valid API key is required for this tier."
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not found. The requested route, resource, or symbol could not be resolved.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 404 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "not_found",
                        "message": "The requested resource was not found."
                      }
                    }
                  }
                }
              }
            }
          },
          "405": {
            "description": "Method not allowed. Source API routes are documented as HTTP GET unless otherwise specified.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 405 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "method_not_allowed",
                        "message": "This route does not support the requested HTTP method."
                      }
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 429 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "rate_limited",
                        "message": "Too many requests. Retry after the rate-limit reset."
                      }
                    }
                  }
                }
              }
            }
          },
          "502": {
            "description": "Upstream source error. The source service rejected or failed the upstream request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 502 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "upstream_error",
                        "message": "The upstream source returned an error."
                      }
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Origin temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 503 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "service_unavailable",
                        "message": "The service is temporarily unavailable."
                      }
                    }
                  }
                }
              }
            }
          },
          "504": {
            "description": "Upstream timeout. The upstream source did not return within the source API timeout window.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 504 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "upstream_timeout",
                        "message": "The upstream source timed out."
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {},
          {
            "ContactEmail": []
          },
          {
            "BearerAuth": []
          },
          {
            "EcfinApiKey": []
          }
        ],
        "description": "Returns transcript with transcript, speaker, segment, and company fields where available.",
        "tags": [
          "Transcripts"
        ],
        "x-source-api": "ecfin",
        "x-source-name": "EarningsCalls.dev",
        "x-source-upstream": "earningscalls.dev",
        "x-docs-example-url": "https://api.ecfin.bluedoor.sh/v1/transcripts/27586",
        "x-docs-example-status": 200,
        "x-docs-captured-at": "2026-06-07T01:35:38.461Z"
      }
    },
    "/v1/transcripts/{id}/segments": {
      "get": {
        "operationId": "ecfin_get_transcripts_id_segments",
        "summary": "Segments",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "example": 27586
            }
          },
          {
            "name": "refresh",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "x-ecfin-contact",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "format": "email"
            },
            "description": "Optional contact email for higher public rate limits and support diagnostics."
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "example": "Bearer <key>"
            },
            "description": "Optional API-key authorization for higher-volume access tiers."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ecfin_get_transcripts_id_segmentsResponse"
                },
                "examples": {
                  "live": {
                    "summary": "Live response",
                    "value": {
                      "meta": {
                        "provider": "earningscalls.dev",
                        "route": "transcript_segments",
                        "contract": "earningscalls.transcript.segments",
                        "cache": "hit",
                        "identity_tier": "contact",
                        "ttl_seconds": 86400,
                        "generated_at": "2026-06-07T00:20:37.554Z"
                      },
                      "data": {
                        "earnings": {
                          "id": 27586,
                          "company_name": "Pizza Pizza Royalty Corp.",
                          "company_ticker": "PZA:CA",
                          "stock_symbol": "PZA",
                          "event_date_time": "2026-05-01T21:00:00.000Z",
                          "sector": "Consumer Discretionary",
                          "industry": "Hotels, Restaurants and Leisure",
                          "title": "Pizza Pizza Royalty Corp., Q1 2026 Earnings Call, May 01, 2026",
                          "type": null,
                          "exchange": "TSX",
                          "market_cap": null
                        },
                        "segments": [
                          {
                            "order": 0,
                            "speaker_name": "Operator",
                            "speaker_type": "Operator",
                            "text": "Ladies and gentlemen, thank you for standing by, and welcome to the Pizza Pizza Royalty Corp.'s Earnings Call for the First Quarter of 2026. [Operator Instructions] As a reminder, this conference is being recorded on May 1, 2026. \r\nI will now turn the call over to Christine D'Sylva, CFO. Please go ahead.",
                            "text_chars": 305
                          },
                          {
                            "order": 1,
                            "speaker_name": "Christine D'Sylva",
                            "speaker_type": "Executives",
                            "text": "Thank you. Good afternoon, everyone, and welcome to Pizza Pizza Royalty Corp.'s Earnings Call for the First Quarter ended March 31, 2026. Joining me on the call today is Pizza Pizza Limited's President and Chief Executive Officer, Paul Goddard. \r\nJust a quick note, our discussion today will contain forward-looking stat...",
                            "text_chars": 1059
                          },
                          {
                            "order": 2,
                            "speaker_name": "Paul Goddard",
                            "speaker_type": "Executives",
                            "text": "Thank you, Christine, and good afternoon, everyone. We appreciate you joining our call. This afternoon, we released our results for the First Quarter of 2026, which you can find posted on our website. The overall macroeconomic conditions remained challenging through the first quarter of 2026. We saw the impact on consu...",
                            "text_chars": 4491
                          }
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request. A required parameter is missing, malformed, or outside the supported range.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 400 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "bad_request",
                        "message": "Required query parameter is missing or invalid."
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized. API-key authenticated tiers use an Authorization bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 401 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "unauthorized",
                        "message": "A valid API key is required for this tier."
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not found. The requested route, resource, or symbol could not be resolved.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 404 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "not_found",
                        "message": "The requested resource was not found."
                      }
                    }
                  }
                }
              }
            }
          },
          "405": {
            "description": "Method not allowed. Source API routes are documented as HTTP GET unless otherwise specified.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 405 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "method_not_allowed",
                        "message": "This route does not support the requested HTTP method."
                      }
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 429 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "rate_limited",
                        "message": "Too many requests. Retry after the rate-limit reset."
                      }
                    }
                  }
                }
              }
            }
          },
          "502": {
            "description": "Upstream source error. The source service rejected or failed the upstream request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 502 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "upstream_error",
                        "message": "The upstream source returned an error."
                      }
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Origin temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 503 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "service_unavailable",
                        "message": "The service is temporarily unavailable."
                      }
                    }
                  }
                }
              }
            }
          },
          "504": {
            "description": "Upstream timeout. The upstream source did not return within the source API timeout window.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 504 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "upstream_timeout",
                        "message": "The upstream source timed out."
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {},
          {
            "ContactEmail": []
          },
          {
            "BearerAuth": []
          },
          {
            "EcfinApiKey": []
          }
        ],
        "description": "Returns segments with transcript, speaker, segment, and company fields where available.",
        "tags": [
          "Transcripts"
        ],
        "x-source-api": "ecfin",
        "x-source-name": "EarningsCalls.dev",
        "x-source-upstream": "earningscalls.dev",
        "x-docs-example-url": "https://api.ecfin.bluedoor.sh/v1/transcripts/27586/segments",
        "x-docs-example-status": 200,
        "x-docs-captured-at": "2026-06-07T01:35:38.708Z"
      }
    },
    "/v1/transcripts/{id}/speakers": {
      "get": {
        "operationId": "ecfin_get_transcripts_id_speakers",
        "summary": "Speakers",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "example": 27586
            }
          },
          {
            "name": "refresh",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "x-ecfin-contact",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "format": "email"
            },
            "description": "Optional contact email for higher public rate limits and support diagnostics."
          },
          {
            "name": "authorization",
            "in": "header",
            "required": false,
            "schema": {
              "type": "string",
              "example": "Bearer <key>"
            },
            "description": "Optional API-key authorization for higher-volume access tiers."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ecfin_get_transcripts_id_speakersResponse"
                },
                "examples": {
                  "live": {
                    "summary": "Live response",
                    "value": {
                      "meta": {
                        "provider": "earningscalls.dev",
                        "route": "transcript_speakers",
                        "contract": "earningscalls.transcript.speakers",
                        "cache": "hit",
                        "identity_tier": "contact",
                        "ttl_seconds": 86400,
                        "generated_at": "2026-06-07T00:20:36.878Z"
                      },
                      "data": {
                        "earnings": {
                          "id": 27586,
                          "company_name": "Pizza Pizza Royalty Corp.",
                          "company_ticker": "PZA:CA",
                          "stock_symbol": "PZA",
                          "event_date_time": "2026-05-01T21:00:00.000Z",
                          "sector": "Consumer Discretionary",
                          "industry": "Hotels, Restaurants and Leisure",
                          "title": "Pizza Pizza Royalty Corp., Q1 2026 Earnings Call, May 01, 2026",
                          "type": null,
                          "exchange": "TSX",
                          "market_cap": null
                        },
                        "speakers": [
                          {
                            "order": 0,
                            "name": "Operator",
                            "type": "Operator",
                            "text": "Ladies and gentlemen, thank you for standing by, and welcome to the Pizza Pizza Royalty Corp.'s Earnings Call for the First Quarter of 2026. [Operator Instructions] As a reminder, this conference is being recorded on May 1, 2026. \r\nI will now turn the call over to Christine D'Sylva, CFO. Please go ahead.",
                            "text_chars": 305
                          },
                          {
                            "order": 1,
                            "name": "Christine D'Sylva",
                            "type": "Executives",
                            "text": "Thank you. Good afternoon, everyone, and welcome to Pizza Pizza Royalty Corp.'s Earnings Call for the First Quarter ended March 31, 2026. Joining me on the call today is Pizza Pizza Limited's President and Chief Executive Officer, Paul Goddard. \r\nJust a quick note, our discussion today will contain forward-looking stat...",
                            "text_chars": 1059
                          },
                          {
                            "order": 2,
                            "name": "Paul Goddard",
                            "type": "Executives",
                            "text": "Thank you, Christine, and good afternoon, everyone. We appreciate you joining our call. This afternoon, we released our results for the First Quarter of 2026, which you can find posted on our website. The overall macroeconomic conditions remained challenging through the first quarter of 2026. We saw the impact on consu...",
                            "text_chars": 4491
                          }
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request. A required parameter is missing, malformed, or outside the supported range.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 400 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "bad_request",
                        "message": "Required query parameter is missing or invalid."
                      }
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized. API-key authenticated tiers use an Authorization bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 401 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "unauthorized",
                        "message": "A valid API key is required for this tier."
                      }
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Not found. The requested route, resource, or symbol could not be resolved.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 404 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "not_found",
                        "message": "The requested resource was not found."
                      }
                    }
                  }
                }
              }
            }
          },
          "405": {
            "description": "Method not allowed. Source API routes are documented as HTTP GET unless otherwise specified.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 405 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "method_not_allowed",
                        "message": "This route does not support the requested HTTP method."
                      }
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 429 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "rate_limited",
                        "message": "Too many requests. Retry after the rate-limit reset."
                      }
                    }
                  }
                }
              }
            }
          },
          "502": {
            "description": "Upstream source error. The source service rejected or failed the upstream request.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 502 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "upstream_error",
                        "message": "The upstream source returned an error."
                      }
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Origin temporarily unavailable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 503 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "service_unavailable",
                        "message": "The service is temporarily unavailable."
                      }
                    }
                  }
                }
              }
            }
          },
          "504": {
            "description": "Upstream timeout. The upstream source did not return within the source API timeout window.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorEnvelope"
                },
                "examples": {
                  "default": {
                    "summary": "HTTP 504 error",
                    "value": {
                      "ok": false,
                      "error": {
                        "code": "upstream_timeout",
                        "message": "The upstream source timed out."
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {},
          {
            "ContactEmail": []
          },
          {
            "BearerAuth": []
          },
          {
            "EcfinApiKey": []
          }
        ],
        "description": "Returns speakers with transcript, speaker, segment, and company fields where available.",
        "tags": [
          "Transcripts"
        ],
        "x-source-api": "ecfin",
        "x-source-name": "EarningsCalls.dev",
        "x-source-upstream": "earningscalls.dev",
        "x-docs-example-url": "https://api.ecfin.bluedoor.sh/v1/transcripts/27586/speakers",
        "x-docs-example-status": 200,
        "x-docs-captured-at": "2026-06-07T01:35:38.954Z"
      }
    }
  },
  "components": {
    "securitySchemes": {
      "ContactEmail": {
        "type": "apiKey",
        "in": "header",
        "name": "X-Ecfin-Contact"
      },
      "BearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "description": "API keys are available by emailing sam@bluedoor.sh."
      },
      "EcfinApiKey": {
        "type": "apiKey",
        "in": "header",
        "name": "X-Ecfin-Key"
      }
    },
    "schemas": {
      "ErrorEnvelope": {
        "type": "object",
        "additionalProperties": true,
        "properties": {
          "ok": {
            "type": "boolean",
            "example": false
          },
          "error": {
            "type": "object",
            "additionalProperties": true,
            "properties": {
              "code": {
                "type": "string"
              },
              "message": {
                "type": "string"
              }
            }
          },
          "meta": {
            "type": "object",
            "additionalProperties": true
          }
        }
      },
      "ecfin_get_calendarResponse": {
        "type": "object",
        "additionalProperties": true,
        "properties": {
          "meta": {
            "type": "object",
            "additionalProperties": true,
            "properties": {
              "provider": {
                "type": "string"
              },
              "route": {
                "type": "string"
              },
              "contract": {
                "type": "string"
              },
              "cache": {
                "type": "string"
              },
              "identity_tier": {
                "type": "string"
              },
              "ttl_seconds": {
                "type": "integer"
              },
              "generated_at": {
                "type": "string"
              }
            },
            "required": [
              "cache",
              "contract",
              "generated_at",
              "identity_tier",
              "provider",
              "route",
              "ttl_seconds"
            ]
          },
          "data": {
            "type": "object",
            "additionalProperties": true,
            "properties": {
              "month": {
                "type": "object",
                "additionalProperties": true,
                "properties": {
                  "year": {
                    "type": "integer"
                  },
                  "month": {
                    "type": "integer"
                  },
                  "name": {
                    "type": "string"
                  }
                },
                "required": [
                  "month",
                  "name",
                  "year"
                ]
              },
              "limits": {
                "type": "object",
                "additionalProperties": true,
                "properties": {
                  "minMonth": {
                    "type": "string"
                  },
                  "maxMonth": {
                    "type": "string"
                  }
                },
                "required": [
                  "maxMonth",
                  "minMonth"
                ]
              },
              "sectors": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "total_calls": {
                "type": "integer"
              },
              "days": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": true,
                  "properties": {
                    "date": {
                      "type": "string"
                    },
                    "day_number": {
                      "type": "integer"
                    },
                    "is_current_month": {
                      "type": "boolean"
                    },
                    "events": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": true,
                        "properties": {
                          "id": {
                            "type": "integer"
                          },
                          "company_name": {
                            "type": "string"
                          },
                          "company_ticker": {
                            "type": "string"
                          },
                          "stock_symbol": {
                            "type": "string"
                          },
                          "event_date_time": {
                            "type": "string"
                          },
                          "sector": {
                            "type": "string"
                          },
                          "industry": {
                            "type": "string"
                          },
                          "title": {
                            "type": "string"
                          },
                          "type": {
                            "type": "string"
                          },
                          "exchange": {
                            "nullable": true
                          },
                          "market_cap": {
                            "nullable": true
                          }
                        },
                        "required": [
                          "company_name",
                          "company_ticker",
                          "event_date_time",
                          "exchange",
                          "id",
                          "industry",
                          "market_cap",
                          "sector",
                          "stock_symbol",
                          "title",
                          "type"
                        ]
                      }
                    }
                  },
                  "required": [
                    "date",
                    "day_number",
                    "events",
                    "is_current_month"
                  ]
                }
              },
              "events": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": true,
                  "properties": {
                    "calendar_date": {
                      "type": "string"
                    },
                    "id": {
                      "type": "integer"
                    },
                    "company_name": {
                      "type": "string"
                    },
                    "company_ticker": {
                      "type": "string"
                    },
                    "stock_symbol": {
                      "type": "string"
                    },
                    "event_date_time": {
                      "type": "string"
                    },
                    "sector": {
                      "type": "string"
                    },
                    "industry": {
                      "type": "string"
                    },
                    "title": {
                      "type": "string"
                    },
                    "type": {
                      "type": "string"
                    },
                    "exchange": {
                      "nullable": true
                    },
                    "market_cap": {
                      "nullable": true
                    }
                  },
                  "required": [
                    "calendar_date",
                    "company_name",
                    "company_ticker",
                    "event_date_time",
                    "exchange",
                    "id",
                    "industry",
                    "market_cap",
                    "sector",
                    "stock_symbol",
                    "title",
                    "type"
                  ]
                }
              }
            },
            "required": [
              "days",
              "events",
              "limits",
              "month",
              "sectors",
              "total_calls"
            ]
          }
        },
        "required": [
          "data",
          "meta"
        ]
      },
      "ecfin_get_calendar_dayResponse": {
        "type": "object",
        "additionalProperties": true,
        "properties": {
          "meta": {
            "type": "object",
            "additionalProperties": true,
            "properties": {
              "provider": {
                "type": "string"
              },
              "route": {
                "type": "string"
              },
              "contract": {
                "type": "string"
              },
              "cache": {
                "type": "string"
              },
              "identity_tier": {
                "type": "string"
              },
              "ttl_seconds": {
                "type": "integer"
              },
              "generated_at": {
                "type": "string"
              }
            },
            "required": [
              "cache",
              "contract",
              "generated_at",
              "identity_tier",
              "provider",
              "route",
              "ttl_seconds"
            ]
          },
          "data": {
            "type": "object",
            "additionalProperties": true,
            "properties": {
              "date": {
                "type": "string"
              },
              "day": {
                "type": "object",
                "additionalProperties": true,
                "properties": {
                  "date": {
                    "type": "string"
                  },
                  "day_number": {
                    "type": "integer"
                  },
                  "is_current_month": {
                    "type": "boolean"
                  },
                  "events": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "additionalProperties": true,
                      "properties": {
                        "id": {
                          "type": "integer"
                        },
                        "company_name": {
                          "type": "string"
                        },
                        "company_ticker": {
                          "type": "string"
                        },
                        "stock_symbol": {
                          "type": "string"
                        },
                        "event_date_time": {
                          "type": "string"
                        },
                        "sector": {
                          "type": "string"
                        },
                        "industry": {
                          "type": "string"
                        },
                        "title": {
                          "type": "string"
                        },
                        "type": {
                          "type": "string"
                        },
                        "exchange": {
                          "nullable": true
                        },
                        "market_cap": {
                          "nullable": true
                        }
                      },
                      "required": [
                        "company_name",
                        "company_ticker",
                        "event_date_time",
                        "exchange",
                        "id",
                        "industry",
                        "market_cap",
                        "sector",
                        "stock_symbol",
                        "title",
                        "type"
                      ]
                    }
                  }
                },
                "required": [
                  "date",
                  "day_number",
                  "events",
                  "is_current_month"
                ]
              },
              "events": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": true,
                  "properties": {
                    "id": {
                      "type": "integer"
                    },
                    "company_name": {
                      "type": "string"
                    },
                    "company_ticker": {
                      "type": "string"
                    },
                    "stock_symbol": {
                      "type": "string"
                    },
                    "event_date_time": {
                      "type": "string"
                    },
                    "sector": {
                      "type": "string"
                    },
                    "industry": {
                      "type": "string"
                    },
                    "title": {
                      "type": "string"
                    },
                    "type": {
                      "type": "string"
                    },
                    "exchange": {
                      "nullable": true
                    },
                    "market_cap": {
                      "nullable": true
                    }
                  },
                  "required": [
                    "company_name",
                    "company_ticker",
                    "event_date_time",
                    "exchange",
                    "id",
                    "industry",
                    "market_cap",
                    "sector",
                    "stock_symbol",
                    "title",
                    "type"
                  ]
                }
              }
            },
            "required": [
              "date",
              "day",
              "events"
            ]
          }
        },
        "required": [
          "data",
          "meta"
        ]
      },
      "ecfin_get_calendar_searchResponse": {
        "type": "object",
        "additionalProperties": true,
        "properties": {
          "meta": {
            "type": "object",
            "additionalProperties": true,
            "properties": {
              "provider": {
                "type": "string"
              },
              "route": {
                "type": "string"
              },
              "contract": {
                "type": "string"
              },
              "cache": {
                "type": "string"
              },
              "identity_tier": {
                "type": "string"
              },
              "ttl_seconds": {
                "type": "integer"
              },
              "generated_at": {
                "type": "string"
              }
            },
            "required": [
              "cache",
              "contract",
              "generated_at",
              "identity_tier",
              "provider",
              "route",
              "ttl_seconds"
            ]
          },
          "data": {
            "type": "object",
            "additionalProperties": true,
            "properties": {
              "criteria": {
                "type": "object",
                "additionalProperties": true,
                "properties": {
                  "q": {
                    "type": "string"
                  },
                  "ticker": {
                    "type": "string"
                  },
                  "sector": {
                    "type": "string"
                  },
                  "industry": {
                    "type": "string"
                  },
                  "date": {
                    "type": "string"
                  },
                  "limit": {
                    "type": "integer"
                  }
                },
                "required": [
                  "date",
                  "industry",
                  "limit",
                  "q",
                  "sector",
                  "ticker"
                ]
              },
              "total_matches": {
                "type": "integer"
              },
              "events": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": true,
                  "properties": {
                    "calendar_date": {
                      "type": "string"
                    },
                    "id": {
                      "type": "integer"
                    },
                    "company_name": {
                      "type": "string"
                    },
                    "company_ticker": {
                      "type": "string"
                    },
                    "stock_symbol": {
                      "type": "string"
                    },
                    "event_date_time": {
                      "type": "string"
                    },
                    "sector": {
                      "type": "string"
                    },
                    "industry": {
                      "type": "string"
                    },
                    "title": {
                      "type": "string"
                    },
                    "type": {
                      "type": "string"
                    },
                    "exchange": {
                      "nullable": true
                    },
                    "market_cap": {
                      "nullable": true
                    }
                  },
                  "required": [
                    "calendar_date",
                    "company_name",
                    "company_ticker",
                    "event_date_time",
                    "exchange",
                    "id",
                    "industry",
                    "market_cap",
                    "sector",
                    "stock_symbol",
                    "title",
                    "type"
                  ]
                }
              }
            },
            "required": [
              "criteria",
              "events",
              "total_matches"
            ]
          }
        },
        "required": [
          "data",
          "meta"
        ]
      },
      "ecfin_get_transcripts_idResponse": {
        "type": "object",
        "additionalProperties": true,
        "properties": {
          "meta": {
            "type": "object",
            "additionalProperties": true,
            "properties": {
              "provider": {
                "type": "string"
              },
              "route": {
                "type": "string"
              },
              "contract": {
                "type": "string"
              },
              "cache": {
                "type": "string"
              },
              "identity_tier": {
                "type": "string"
              },
              "ttl_seconds": {
                "type": "integer"
              },
              "generated_at": {
                "type": "string"
              }
            },
            "required": [
              "cache",
              "contract",
              "generated_at",
              "identity_tier",
              "provider",
              "route",
              "ttl_seconds"
            ]
          },
          "data": {
            "type": "object",
            "additionalProperties": true,
            "properties": {
              "earnings": {
                "type": "object",
                "additionalProperties": true,
                "properties": {
                  "id": {
                    "type": "integer"
                  },
                  "company_name": {
                    "type": "string"
                  },
                  "company_ticker": {
                    "type": "string"
                  },
                  "stock_symbol": {
                    "type": "string"
                  },
                  "event_date_time": {
                    "type": "string"
                  },
                  "sector": {
                    "type": "string"
                  },
                  "industry": {
                    "type": "string"
                  },
                  "title": {
                    "type": "string"
                  },
                  "type": {
                    "nullable": true
                  },
                  "exchange": {
                    "type": "string"
                  },
                  "market_cap": {
                    "nullable": true
                  }
                },
                "required": [
                  "company_name",
                  "company_ticker",
                  "event_date_time",
                  "exchange",
                  "id",
                  "industry",
                  "market_cap",
                  "sector",
                  "stock_symbol",
                  "title",
                  "type"
                ]
              },
              "has_transcript": {
                "type": "boolean"
              },
              "has_speakers": {
                "type": "boolean"
              },
              "transcript": {
                "type": "string"
              },
              "transcript_chars": {
                "type": "integer"
              },
              "speakers": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": true,
                  "properties": {
                    "order": {
                      "type": "integer"
                    },
                    "name": {
                      "type": "string"
                    },
                    "type": {
                      "type": "string"
                    },
                    "text": {
                      "type": "string"
                    },
                    "text_chars": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "name",
                    "order",
                    "text",
                    "text_chars",
                    "type"
                  ]
                }
              },
              "segments": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": true,
                  "properties": {
                    "order": {
                      "type": "integer"
                    },
                    "speaker_name": {
                      "type": "string"
                    },
                    "speaker_type": {
                      "type": "string"
                    },
                    "text": {
                      "type": "string"
                    },
                    "text_chars": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "order",
                    "speaker_name",
                    "speaker_type",
                    "text",
                    "text_chars"
                  ]
                }
              }
            },
            "required": [
              "earnings",
              "has_speakers",
              "has_transcript",
              "segments",
              "speakers",
              "transcript",
              "transcript_chars"
            ]
          }
        },
        "required": [
          "data",
          "meta"
        ]
      },
      "ecfin_get_transcripts_id_segmentsResponse": {
        "type": "object",
        "additionalProperties": true,
        "properties": {
          "meta": {
            "type": "object",
            "additionalProperties": true,
            "properties": {
              "provider": {
                "type": "string"
              },
              "route": {
                "type": "string"
              },
              "contract": {
                "type": "string"
              },
              "cache": {
                "type": "string"
              },
              "identity_tier": {
                "type": "string"
              },
              "ttl_seconds": {
                "type": "integer"
              },
              "generated_at": {
                "type": "string"
              }
            },
            "required": [
              "cache",
              "contract",
              "generated_at",
              "identity_tier",
              "provider",
              "route",
              "ttl_seconds"
            ]
          },
          "data": {
            "type": "object",
            "additionalProperties": true,
            "properties": {
              "earnings": {
                "type": "object",
                "additionalProperties": true,
                "properties": {
                  "id": {
                    "type": "integer"
                  },
                  "company_name": {
                    "type": "string"
                  },
                  "company_ticker": {
                    "type": "string"
                  },
                  "stock_symbol": {
                    "type": "string"
                  },
                  "event_date_time": {
                    "type": "string"
                  },
                  "sector": {
                    "type": "string"
                  },
                  "industry": {
                    "type": "string"
                  },
                  "title": {
                    "type": "string"
                  },
                  "type": {
                    "nullable": true
                  },
                  "exchange": {
                    "type": "string"
                  },
                  "market_cap": {
                    "nullable": true
                  }
                },
                "required": [
                  "company_name",
                  "company_ticker",
                  "event_date_time",
                  "exchange",
                  "id",
                  "industry",
                  "market_cap",
                  "sector",
                  "stock_symbol",
                  "title",
                  "type"
                ]
              },
              "segments": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": true,
                  "properties": {
                    "order": {
                      "type": "integer"
                    },
                    "speaker_name": {
                      "type": "string"
                    },
                    "speaker_type": {
                      "type": "string"
                    },
                    "text": {
                      "type": "string"
                    },
                    "text_chars": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "order",
                    "speaker_name",
                    "speaker_type",
                    "text",
                    "text_chars"
                  ]
                }
              }
            },
            "required": [
              "earnings",
              "segments"
            ]
          }
        },
        "required": [
          "data",
          "meta"
        ]
      },
      "ecfin_get_transcripts_id_speakersResponse": {
        "type": "object",
        "additionalProperties": true,
        "properties": {
          "meta": {
            "type": "object",
            "additionalProperties": true,
            "properties": {
              "provider": {
                "type": "string"
              },
              "route": {
                "type": "string"
              },
              "contract": {
                "type": "string"
              },
              "cache": {
                "type": "string"
              },
              "identity_tier": {
                "type": "string"
              },
              "ttl_seconds": {
                "type": "integer"
              },
              "generated_at": {
                "type": "string"
              }
            },
            "required": [
              "cache",
              "contract",
              "generated_at",
              "identity_tier",
              "provider",
              "route",
              "ttl_seconds"
            ]
          },
          "data": {
            "type": "object",
            "additionalProperties": true,
            "properties": {
              "earnings": {
                "type": "object",
                "additionalProperties": true,
                "properties": {
                  "id": {
                    "type": "integer"
                  },
                  "company_name": {
                    "type": "string"
                  },
                  "company_ticker": {
                    "type": "string"
                  },
                  "stock_symbol": {
                    "type": "string"
                  },
                  "event_date_time": {
                    "type": "string"
                  },
                  "sector": {
                    "type": "string"
                  },
                  "industry": {
                    "type": "string"
                  },
                  "title": {
                    "type": "string"
                  },
                  "type": {
                    "nullable": true
                  },
                  "exchange": {
                    "type": "string"
                  },
                  "market_cap": {
                    "nullable": true
                  }
                },
                "required": [
                  "company_name",
                  "company_ticker",
                  "event_date_time",
                  "exchange",
                  "id",
                  "industry",
                  "market_cap",
                  "sector",
                  "stock_symbol",
                  "title",
                  "type"
                ]
              },
              "speakers": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": true,
                  "properties": {
                    "order": {
                      "type": "integer"
                    },
                    "name": {
                      "type": "string"
                    },
                    "type": {
                      "type": "string"
                    },
                    "text": {
                      "type": "string"
                    },
                    "text_chars": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "name",
                    "order",
                    "text",
                    "text_chars",
                    "type"
                  ]
                }
              }
            },
            "required": [
              "earnings",
              "speakers"
            ]
          }
        },
        "required": [
          "data",
          "meta"
        ]
      }
    }
  },
  "x-generated-at": "2026-06-07T01:30:59.456Z",
  "x-source-api": "ecfin",
  "x-source-base-url": "https://api.ecfin.bluedoor.sh"
}
