openapi: 3.0.3
info:
  title: Wokelo API
  description: |-
    Wokelo's API suite is purpose-built for developers building dealmaking AI infrastructure.
    It delivers structured, processed intelligence at the quality standard investment and
    advisory workflows demand.

    This 2.0.0 release aligns the canonical OpenAPI with the current official Wokelo docs,
    Postman collection, and the 26 standalone capability specifications stored under `sources/`.

    - Entities resolved across a proprietary database of 20M+ public and private companies.
    - News signals deduplicated across 1,000+ curated sources.
    - Every output is agent-native, source-traced, and ready to plug directly into your models,
      agents, and workflows without additional processing.
  version: 2.0.0
  contact:
    name: Wokelo
    url: https://wokelo.ai
    email: support@wokelo.ai
  license:
    name: Proprietary
    url: https://wokelo.ai/terms
servers:
  - url: https://api.wokelo.ai
security:
  - bearerAuth: []
tags:
  - name: Authentication
    description: Token issuance and authentication entry points.
  - name: Enrichment
    description: Company and industry enrichment capabilities.
  - name: Discovery
    description: Discovery workflows such as market maps and screening.
  - name: Monitoring
    description: Monitoring and legacy news-report workflows.
  - name: Workflow Automation
    description: Workflow-driven report generation endpoints.
  - name: Supporting APIs
    description: Supporting endpoints for uploads, status, downloads, and configuration.
paths:
  /api/assets/get_notebook_status/:
    get:
      tags:
        - Supporting APIs
      summary: Get Report Status
      description: Retrieves the current status of a previously triggered report using its unique ID
      operationId: get_api_assets_get_notebook_status
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  report_id:
                    type: integer
                  status:
                    type: string
                  title:
                    type: string
                required:
                  - report_id
                  - status
                  - title
                description: '[FROM OFFICIAL DOCS] Response schema derived from example in get-report-status.md.'
              example:
                report_id: 98564
                status: Delayed
                title: One Signal
        '400':
          description: Notebooks Status
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                required:
                  - message
              example:
                message: No data found for the given report_id.
        '401':
          description: Notebooks Status
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
                required:
                  - detail
              example:
                detail: Authentication credentials were not provided.
        '403':
          description: Notebooks Status
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                required:
                  - message
              example:
                message: You are not authorized to access this report.
      parameters:
        - name: report_id
          in: query
          required: true
          schema:
            type: integer
          description: The id returned in response to the start report request
      security:
        - bearerAuth: []
      x-codeSamples:
        - label: JavaScript - Fetch
          lang: JavaScript
          source: |-
            const myHeaders = new Headers();
            myHeaders.append("Authorization", "Bearer YOUR_TOKEN");

            const requestOptions = {
              method: "GET",
              headers: myHeaders,
              redirect: "follow"
            };

            fetch("https://api.wokelo.ai/api/assets/get_notebook_status/?report_id=", requestOptions)
              .then((response) => response.text())
              .then((result) => console.log(result))
              .catch((error) => console.error(error));
        - label: Python
          lang: Python
          source: |-
            import requests, time

            headers = {"Authorization": "Bearer YOUR_TOKEN"}
            while True:
                r = requests.get(
                    "https://api.wokelo.ai/api/assets/get_notebook_status/",
                    headers=headers,
                    params={"report_id": 98564}
                )
                data = r.json()
                if data["status"] in ("Completed", "Exported", "No Data Found"):
                    break
                time.sleep(10)
            print(data)
        - label: cURL
          lang: cURL
          source: |-
            curl --request GET \
              --url 'https://api.wokelo.ai/api/assets/get_notebook_status/?report_id=98564' \
              --header 'Authorization: Bearer YOUR_TOKEN'
        - label: Go
          lang: Go
          source: |-
            package main

            import (
              "encoding/json"
              "fmt"
              "io"
              "net/http"
              "time"
            )

            func main() {
              for {
                req, _ := http.NewRequest("GET",
                  "https://api.wokelo.ai/api/assets/get_notebook_status/?report_id=98564", nil)
                req.Header.Set("Authorization", "Bearer YOUR_TOKEN")
                resp, _ := http.DefaultClient.Do(req)
                body, _ := io.ReadAll(resp.Body)
                resp.Body.Close()
                var result map[string]interface{}
                json.Unmarshal(body, &result)
                s := result["status"].(string)
                if s == "Completed" || s == "Exported" || s == "No Data Found" {
                  fmt.Println(string(body)); break
                }
                time.Sleep(10 * time.Second)
              }
            }
        - label: Java
          lang: Java
          source: |-
            import java.net.URI;
            import java.net.http.*;

            public class GetReportStatus {
              public static void main(String[] args) throws Exception {
                while (true) {
                  HttpRequest request = HttpRequest.newBuilder()
                      .uri(URI.create("https://api.wokelo.ai/api/assets/get_notebook_status/?report_id=98564"))
                      .header("Authorization", "Bearer YOUR_TOKEN")
                      .GET().build();
                  HttpResponse<String> response = HttpClient.newHttpClient()
                      .send(request, HttpResponse.BodyHandlers.ofString());
                  String body = response.body();
                  if (body.contains("Completed") || body.contains("Exported") || body.contains("No Data Found")) {
                    System.out.println(body); break;
                  }
                  Thread.sleep(10000);
                }
              }
            }
  /api/enterprise/company/earnings-calls/:
    get:
      tags:
        - Enrichment
      summary: Company Earnings Transcripts
      description: Fetch earnings call transcripts for a public company. Supports year-range filtering.
      operationId: get_api_enterprise_company_earnings-calls
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        transcript_title:
                          type: string
                        transcript_name:
                          type: string
                        ticker:
                          type: string
                        transcript_url:
                          type: string
                        date:
                          type: string
                        year:
                          type: integer
                        quarter:
                          type: integer
                        transcript_data:
                          type: object
                          properties:
                            date:
                              type: string
                            participant:
                              type: array
                              items:
                                type: object
                                properties:
                                  name:
                                    type: string
                                  role:
                                    type: string
                                  pro_id:
                                    type: integer
                                  job_title:
                                    type: string
                                  description:
                                    type: string
                                  company_name:
                                    type: string
                                  transcript_person_id:
                                    type: integer
                                required:
                                  - name
                                  - role
                                  - pro_id
                                  - job_title
                                  - description
                                  - company_name
                                  - transcript_person_id
                            transcript:
                              type: array
                              items:
                                type: object
                                properties:
                                  name:
                                    type: string
                                  speech:
                                    type: string
                                  session:
                                    type: string
                                  person_id:
                                    type: integer
                                  person_company: {}
                                  component_order:
                                    type: integer
                                required:
                                  - name
                                  - speech
                                  - session
                                  - person_id
                                  - person_company
                                  - component_order
                            title:
                              type: string
                            quarter:
                              type: integer
                            year:
                              type: integer
                          required:
                            - date
                            - participant
                            - transcript
                            - title
                            - quarter
                            - year
                      required:
                        - transcript_title
                        - transcript_name
                        - ticker
                        - transcript_url
                        - date
                        - year
                        - quarter
                        - transcript_data
                  count:
                    type: integer
                  from_year:
                    type: integer
                  to_year:
                    type: integer
                required:
                  - status
                  - data
                  - count
                  - from_year
                  - to_year
                description: '[FROM OFFICIAL DOCS] Response schema derived from example in earnings-transcripts.md.'
              example:
                status: success
                data:
                  - transcript_title: Tesla, Inc. - Q4 2023
                    transcript_name: Tesla, Inc., Q4 2023 Earnings Call, Jan 24, 2024
                    ticker: NASDAQ:TSLA
                    transcript_url: https://wkarticles.blob.core.windows.net/finnhub/snp_transcript_3003051
                    date: '2024-01-24'
                    year: 2023
                    quarter: 4
                    transcript_data:
                      date: '2024-01-24'
                      participant:
                        - name: Adam Jonas
                          role: Analysts
                          pro_id: 29412103
                          job_title: MD & Head of Global Auto & Shared Mobility Research
                          description: Analysts
                          company_name: Morgan Stanley, Research Division
                          transcript_person_id: 118469
                        - name: Colin Langan
                          role: Analysts
                          pro_id: 710566519
                          job_title: Senior Equity Analyst
                          description: Analysts
                          company_name: Wells Fargo Securities, LLC, Research Division
                          transcript_person_id: 480193
                        - name: Dan Levy
                          role: Analysts
                          pro_id: 214533139
                          job_title: Senior Analyst
                          description: Analysts
                          company_name: Barclays Bank PLC, Research Division
                          transcript_person_id: 253177
                      transcript:
                        - name: Martin Viecha
                          speech: "Good afternoon, everyone, and welcome to Tesla's Fourth Quarter 2023 Q&A Webcast. My name is Martin Viecha, VP of Investor Relations, and I'm joined today by Elon Musk, Vaibhav Taneja, and a number of other executives. Our Q4 results were announced at about 3:00 p.m. Central Time in the update deck we published at the same link as this webcast.\r\nDuring this call, we will discuss our business outlook and make forward-looking statements. These comments are based on our predictions and expectations... [truncated]"
                          session: Presenter Speech
                          person_id: 370659
                          person_company: null
                          component_order: 0
                        - name: Elon Musk
                          speech: Thank you. So the Tesla team did an incredible job in 2023. We achieved record production and deliveries of [ about ] 1.8 million vehicles, in line with our official guidance. And in Q4, we're producing vehicles at an annualized run rate of almost 2 million cars a year. This is really a phenomenal achievement. Looking at just the Fremont factory alone, we made 560,000 cars. This is a record. In fact, it's the highest output of automotive plant in North America. And people are often surprised tha... [truncated]
                          session: Presenter Speech
                          person_id: 175883
                          person_company: null
                          component_order: 1
                        - name: Martin Viecha
                          speech: Thank you. And our CFO, Vaibhav, has opening remarks as well.
                          session: Presenter Speech
                          person_id: 370659
                          person_company: null
                          component_order: 2
                      title: Tesla, Inc., Q4 2023 Earnings Call, Jan 24, 2024
                      quarter: 4
                      year: 2023
                  - transcript_title: Tesla, Inc. - Q3 2023
                    transcript_name: Tesla, Inc., Q3 2023 Earnings Call, Oct 18, 2023
                    ticker: NASDAQ:TSLA
                    transcript_url: https://wkarticles.blob.core.windows.net/finnhub/snp_transcript_3078546
                    date: '2024-04-03'
                    year: 2023
                    quarter: 3
                    transcript_data:
                      date: '2024-04-03'
                      participant:
                        - name: Colin Langan
                          role: Analysts
                          pro_id: 710566519
                          job_title: Senior Equity Analyst
                          description: Analysts
                          company_name: Wells Fargo Securities, LLC, Research Division
                          transcript_person_id: 480193
                        - name: Drew Baglino
                          role: Executives
                          pro_id: 621069668
                          job_title: Former Senior Vice President of Powertrain & Energy Engineering
                          description: Executives
                          company_name: Tesla, Inc.
                          transcript_person_id: 393478
                        - name: Elon Musk
                          role: Executives
                          pro_id: 27546373
                          job_title: Co-Founder, Technoking of Tesla, CEO & Director
                          description: Executives
                          company_name: Tesla, Inc.
                          transcript_person_id: 175883
                      transcript:
                        - name: Martin Viecha
                          speech: Good afternoon, everyone and welcome to Tesla's Third Quarter 2023 Q&A Webcast. My name is Martin Viecha, VP of Investor Relations, and I'm joined today by Elon Musk, Vaibhav Taneja and a number of other executives. Our Q3 results were announced at about 3:00 p.m. Central Time in the update that we published at the same link as this webcast. During this call, we will discuss our business outlook and make forward-looking statements. These comments are based on our predictions and expectations as ... [truncated]
                          session: Presenter Speech
                          person_id: 370659
                          person_company: null
                          component_order: 0
                        - name: Elon Musk
                          speech: Thanks, Martin. So just a Q3 recap. Our last quarter was impacted by down time for global factory upgrades that will help us reduce cost per vehicle as well as increase production. We remain focused on 3 main objectives which is the cost reduction of our products, investments in artificial intelligence, and other growth projects like Optimus. And continued free cash flow generation. Regarding vehicle cost, our team was able to reduce the cost per vehicle further in Q3 despite headwinds from fact... [truncated]
                          session: Presenter Speech
                          person_id: 175883
                          person_company: null
                          component_order: 1
                        - name: Martin Viecha
                          speech: Thank you very much, Elon. And our CFO, Vaibhav, had some opening remarks as well.
                          session: Presenter Speech
                          person_id: 370659
                          person_company: null
                          component_order: 2
                      title: Tesla, Inc., Q3 2023 Earnings Call, Oct 18, 2023
                      quarter: 3
                      year: 2023
                  - transcript_title: Tesla, Inc. - Q2 2023
                    transcript_name: Tesla, Inc., Q2 2023 Earnings Call, Jul 19, 2023
                    ticker: NASDAQ:TSLA
                    transcript_url: https://wkarticles.blob.core.windows.net/finnhub/snp_transcript_2854174
                    date: '2023-07-19'
                    year: 2023
                    quarter: 2
                    transcript_data:
                      date: '2023-07-19'
                      participant:
                        - name: Colin Rusch
                          role: Analysts
                          pro_id: 311020585
                          job_title: MD & Senior Analyst and Head of Sustainable Growth & Resource Optimization
                          description: Analysts
                          company_name: Oppenheimer & Co. Inc., Research Division
                          transcript_person_id: 310676
                        - name: Dan Levy
                          role: Analysts
                          pro_id: 214533139
                          job_title: Senior Analyst
                          description: Analysts
                          company_name: Barclays Bank PLC, Research Division
                          transcript_person_id: 253177
                        - name: Drew Baglino
                          role: Executives
                          pro_id: 621069668
                          job_title: Former Senior Vice President of Powertrain & Energy Engineering
                          description: Executives
                          company_name: Tesla, Inc.
                          transcript_person_id: 393478
                      transcript:
                        - name: Martin Viecha
                          speech: "Good afternoon, everyone, and welcome to Tesla's Second Quarter 2023 Q&A Webcast. My name is Martin Viecha, I'm VP of Investor Relations, and I'm joined today by Elon Musk, Zachary Kirkhorn and a number of other executives. \r\nOur Q2 results were announced at about 3 p.m. Central Time in the update deck we published at the same link as this webcast. During this call, we will discuss our business outlook and make forward-looking statements. These comments are based on our predictions and expectati... [truncated]"
                          session: Presenter Speech
                          person_id: 370659
                          person_company: null
                          component_order: 0
                        - name: Elon Musk
                          speech: "Thank you, Martin. So just a Q2 recap. In Q2, we achieved record vehicle production and deliveries and record revenue of about $25 billion in a single quarter. And Model Y became the best-selling vehicle of any kind globally in Q1, surpassing the likes of Corolla and Gulf. So it was the #1 vehicle of any kind, including vehicles that are sold at a far lower price. This is, I think, an incredible achievement by the Tesla team, and just a huge thank you to our customers for their support. \r\nSo thi... [truncated]"
                          session: Presenter Speech
                          person_id: 175883
                          person_company: null
                          component_order: 1
                        - name: Martin Viecha
                          speech: Thank you very much, Elon. And I think Zach has some opening remarks as well.
                          session: Presenter Speech
                          person_id: 370659
                          person_company: null
                          component_order: 2
                      title: Tesla, Inc., Q2 2023 Earnings Call, Jul 19, 2023
                      quarter: 2
                      year: 2023
                count: 12
                from_year: 2021
                to_year: 2023
        '401':
          $ref: '#/components/responses/UnauthorizedError'
      parameters:
        - name: company
          in: query
          required: true
          schema:
            type: string
          description: Permalink or URL of the company. E.g. `"salesforce"`
        - name: from_year
          in: query
          required: false
          schema:
            type: integer
          description: Start year of the date range.
        - name: to_year
          in: query
          required: false
          schema:
            type: integer
          description: End year of the date range.
      security:
        - bearerAuth: []
      x-codeSamples:
        - label: JavaScript - Fetch
          lang: JavaScript
          source: |-
            const myHeaders = new Headers();
            myHeaders.append("Authorization", "Bearer YOUR_TOKEN");
            myHeaders.append("Content-Type", "application/json");

            const requestOptions = {
              method: "GET",
              headers: myHeaders,
              redirect: "follow"
            };

            fetch("https://api.wokelo.ai/api/enterprise/company/earnings-calls/?company=tesla-motors&from_year=2021&to_year=2023", requestOptions)
              .then((response) => response.text())
              .then((result) => console.log(result))
              .catch((error) => console.error(error));
        - label: Python
          lang: Python
          source: |-
            import requests
            import json

            url = "https://api.wokelo.ai/api/enterprise/company/earnings-calls/?company=tesla-motors&from_year=2021&to_year=2023"

            payload = {}
            headers = {
              'Authorization': 'Bearer YOUR_TOKEN',
              'Content-Type': 'application/json'
            }

            response = requests.request("GET", url, headers=headers, data=payload)

            print(response.text)
        - label: cURL
          lang: cURL
          source: |-
            curl --location 'https://api.wokelo.ai/api/enterprise/company/earnings-calls/?company=tesla-motors&from_year=2021&to_year=2023' \
            --header 'Authorization: Bearer YOUR_TOKEN' \
            --header 'Content-Type: application/json'
        - label: Go
          lang: Go
          source: |-
            package main

            import (
              "fmt"
              "net/http"
              "io"
            )

            func main() {

              url := "https://api.wokelo.ai/api/enterprise/company/earnings-calls/?company=tesla-motors&from_year=2021&to_year=2023"
              method := "GET"

              client := &http.Client {
              }
              req, err := http.NewRequest(method, url, nil)

              if err != nil {
                fmt.Println(err)
                return
              }
              req.Header.Add("Authorization", "Bearer YOUR_TOKEN")
              req.Header.Add("Content-Type", "application/json")

              res, err := client.Do(req)
              if err != nil {
                fmt.Println(err)
                return
              }
              defer res.Body.Close()

              body, err := io.ReadAll(res.Body)
              if err != nil {
                fmt.Println(err)
                return
              }
              fmt.Println(string(body))
            }
  /api/enterprise/company/employee-reviews/:
    get:
      tags:
        - Enrichment
      summary: Employee Reviews
      description: Retrieves paginated employee reviews for a specified company, supporting configurable result limits and offsets for efficient data navigation. Returns a structured list of product reviews.
      operationId: get_api_enterprise_company_employee-reviews
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                  data:
                    type: object
                    properties:
                      company:
                        type: string
                      overview:
                        type: object
                        properties:
                          rating:
                            type: number
                          business_outlook_rating:
                            type: number
                          ceo_rating:
                            type: number
                          recommend_to_friend_rating:
                            type: number
                          compensation_and_benefits_rating:
                            type: number
                          culture_and_values_rating:
                            type: integer
                          diversity_and_inclusion_rating:
                            type: number
                          senior_management_rating:
                            type: number
                          work_life_balance_rating:
                            type: number
                        required:
                          - rating
                          - business_outlook_rating
                          - ceo_rating
                          - recommend_to_friend_rating
                          - compensation_and_benefits_rating
                          - culture_and_values_rating
                          - diversity_and_inclusion_rating
                          - senior_management_rating
                          - work_life_balance_rating
                    required:
                      - company
                      - overview
                required:
                  - status
                  - data
                description: '[FROM OFFICIAL DOCS] Response schema derived from example in employee-reviews.md.'
              example:
                status: success
                data:
                  company: salesforce
                  overview:
                    rating: 4.1
                    business_outlook_rating: 0.71
                    ceo_rating: 0.82
                    recommend_to_friend_rating: 0.8
                    compensation_and_benefits_rating: 4.4
                    culture_and_values_rating: 4
                    diversity_and_inclusion_rating: 4.2
                    senior_management_rating: 3.6
                    work_life_balance_rating: 3.9
        '401':
          $ref: '#/components/responses/UnauthorizedError'
      parameters:
        - name: company
          in: query
          required: true
          schema:
            type: string
          description: Permalink of the company whose employee reviews need to be fetched E.g. `"salesforce"`
        - name: limit
          in: query
          required: false
          schema:
            type: integer
          description: Maximum number of employee reviews to return
        - name: offset
          in: query
          required: false
          schema:
            type: integer
          description: Number of records to skip before starting to return results
      security:
        - bearerAuth: []
      x-codeSamples:
        - label: JavaScript - Fetch
          lang: JavaScript
          source: |-
            const myHeaders = new Headers();
            myHeaders.append("Authorization", "Bearer YOUR_TOKEN");
            myHeaders.append("Content-Type", "application/json");

            const requestOptions = {
              method: "GET",
              headers: myHeaders,
              redirect: "follow"
            };

            fetch("https://api.wokelo.ai/api/enterprise/company/employee-reviews/?company=salesforce&limit=50&offset=0", requestOptions)
              .then((response) => response.text())
              .then((result) => console.log(result))
              .catch((error) => console.error(error));
        - label: Python
          lang: Python
          source: |-
            import requests

            headers = {
                "Authorization": "Bearer YOUR_TOKEN",
                "Content-Type": "application/json"
            }
            response = requests.get(
                "https://api.wokelo.ai/api/enterprise/company/employee-reviews/",
                headers=headers,
                params={"company": "salesforce", "limit": 50, "offset": 0}
            )
            print(response.json())
        - label: cURL
          lang: cURL
          source: |-
            curl --request GET \
              --url 'https://api.wokelo.ai/api/enterprise/company/employee-reviews/?company=salesforce&limit=50&offset=0' \
              --header 'Authorization: Bearer YOUR_TOKEN'
        - label: Go
          lang: Go
          source: |-
            package main

            import (
              "fmt"
              "io"
              "net/http"
            )

            func main() {
              req, _ := http.NewRequest("GET",
                "https://api.wokelo.ai/api/enterprise/company/employee-reviews/?company=salesforce&limit=50&offset=0", nil)
              req.Header.Set("Authorization", "Bearer YOUR_TOKEN")
              resp, _ := http.DefaultClient.Do(req)
              defer resp.Body.Close()
              body, _ := io.ReadAll(resp.Body)
              fmt.Println(string(body))
            }
        - label: Java
          lang: Java
          source: |-
            import java.net.URI;
            import java.net.http.*;

            public class EmployeeReviews {
              public static void main(String[] args) throws Exception {
                HttpRequest request = HttpRequest.newBuilder()
                    .uri(URI.create("https://api.wokelo.ai/api/enterprise/company/employee-reviews/?company=salesforce&limit=50&offset=0"))
                    .header("Authorization", "Bearer YOUR_TOKEN")
                    .GET()
                    .build();
                HttpResponse<String> response = HttpClient.newHttpClient()
                    .send(request, HttpResponse.BodyHandlers.ofString());
                System.out.println(response.body());
              }
            }
  /api/enterprise/company/filings/:
    get:
      tags:
        - Enrichment
      summary: Company Filings
      description: Fetch SEC filings for a public company. Supports filtering by form type (10-K, 10-Q, 8-K, etc.) and year range.
      operationId: get_api_enterprise_company_filings
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        title:
                          type: string
                        symbol:
                          type: string
                        form:
                          type: string
                        filedDate:
                          type: string
                        acceptedDate:
                          type: string
                        reportUrl:
                          type: string
                        filingUrl:
                          type: string
                        filingData:
                          type: string
                      required:
                        - title
                        - symbol
                        - form
                        - filedDate
                        - acceptedDate
                        - reportUrl
                        - filingUrl
                        - filingData
                  count:
                    type: integer
                  from_year:
                    type: integer
                  to_year:
                    type: integer
                  form:
                    type: string
                required:
                  - status
                  - data
                  - count
                  - from_year
                  - to_year
                  - form
                description: '[FROM OFFICIAL DOCS] Response schema derived from example in company-filings.md.'
              example:
                status: success
                data:
                  - title: TSLA 10-K January 2023
                    symbol: TSLA
                    form: 10-K
                    filedDate: '2023-01-31 00:00:00'
                    acceptedDate: '2023-01-31 02:29:15'
                    reportUrl: https://www.sec.gov/Archives/edgar/data/1318605/000095017023001409/tsla-20221231.htm
                    filingUrl: https://www.sec.gov/Archives/edgar/data/1318605/000095017023001409/0000950170-23-001409-index.html
                    filingData: <html xmlns="http://www.w3.org/1999/xhtml" xmlns:xbrldi="http://xbrl.org/2006/xbrldi" xmlns:xbrldt="http://xbrl.org/2005/xbrldt" xmlns:xbrli="http://www.xbrl.org/2003/instance" xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ix="http://www.xbrl.org/2013/inlineXBRL" xmlns:nonnumeric="http://www.xbrl.org/dtr/type/non-numeric" xmlns:ixt="http://www.xbrl.org/inlineXBRL/transformation/2015-02-26" xmlns:ixt-sec="http://www.sec.gov/inlineXBRL/transformati... [truncated]
                count: 1
                from_year: 2023
                to_year: 2023
                form: 10-K
        '401':
          $ref: '#/components/responses/UnauthorizedError'
      parameters:
        - name: company
          in: query
          required: true
          schema:
            type: string
          description: Permalink/ URL of the company whose filings need to be fetched E.g. `"salesforce"`
        - name: form
          in: query
          required: false
          schema:
            type: string
          description: 'SEC form type to filter by. Supported values: 10-K, 10-Q, 8-K'
        - name: from_year
          in: query
          required: false
          schema:
            type: integer
          description: Start year for the date range
        - name: to_year
          in: query
          required: false
          schema:
            type: integer
          description: End year for the date range
      security:
        - bearerAuth: []
      x-codeSamples:
        - label: JavaScript - Fetch
          lang: JavaScript
          source: |-
            const myHeaders = new Headers();
            myHeaders.append("Authorization", "Bearer YOUR_TOKEN");
            myHeaders.append("Content-Type", "application/json");

            const requestOptions = {
              method: "GET",
              headers: myHeaders,
              redirect: "follow"
            };

            fetch("https://api.wokelo.ai/api/enterprise/company/filings/?company=tesla-motors&form=10-K&from_year=2021&to_year=2023", requestOptions)
              .then((response) => response.text())
              .then((result) => console.log(result))
              .catch((error) => console.error(error));
        - label: Python
          lang: Python
          source: |-
            import requests
            import json

            url = "https://api.wokelo.ai/api/enterprise/company/filings/?company=tesla-motors&form=10-K&from_year=2021&to_year=2023"

            payload = {}
            headers = {
              'Authorization': 'Bearer YOUR_TOKEN',
              'Content-Type': 'application/json'
            }

            response = requests.request("GET", url, headers=headers, data=payload)

            print(response.text)
        - label: cURL
          lang: cURL
          source: |-
            curl --location 'https://api.wokelo.ai/api/enterprise/company/filings/?company=tesla-motors&form=10-K&from_year=2021&to_year=2023' \
            --header 'Authorization: Bearer YOUR_TOKEN' \
            --header 'Content-Type: application/json'
        - label: Go
          lang: Go
          source: |-
            package main

            import (
              "fmt"
              "net/http"
              "io"
            )

            func main() {

              url := "https://api.wokelo.ai/api/enterprise/company/filings/?company=tesla-motors&form=10-K&from_year=2021&to_year=2023"
              method := "GET"

              client := &http.Client {
              }
              req, err := http.NewRequest(method, url, nil)

              if err != nil {
                fmt.Println(err)
                return
              }
              req.Header.Add("Authorization", "Bearer YOUR_TOKEN")
              req.Header.Add("Content-Type", "application/json")

              res, err := client.Do(req)
              if err != nil {
                fmt.Println(err)
                return
              }
              defer res.Body.Close()

              body, err := io.ReadAll(res.Body)
              if err != nil {
                fmt.Println(err)
                return
              }
              fmt.Println(string(body))
            }
  /api/enterprise/company/news/:
    get:
      tags:
        - Monitoring
      summary: Company News Monitoring
      description: The Monitoring API fetches the latest news articles for a given company, enriched with AI-generated summaries, categories and publisher details. Optionally, you can refine the output by specifying date range, publisher list, blacklisted publishers, article limit, and news categories. Results are returned in the API response.
      operationId: get_api_enterprise_company_news
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    description: '`"success"` if the request was processed successfully.'
                  data:
                    type: array
                    items: {}
                    description: List of news
                  count:
                    type: integer
                    description: Total number of results returned.
                description: '[FROM OFFICIAL DOCS] Response schema from company-news-monitoring.md.'
                example:
                  status: success
                  data:
                    - ai_summary: 'Nordea Investment Management AB reduced its stake in Tesla, Inc. by 8.4% in the fourth quarter, according to its SEC filing. Several institutional investors increased their holdings, and Tesla reported quarterly earnings with a net margin of 4%, revenue of $24.90 billion, and an EPS of $0.50. '
                      type: Secondary Transactions
                      url: https://www.defenseworld.net/2026/03/23/nordea-investment-management-ab-lowers-position-in-tesla-inc-tsla.html
                      title: Nordea Investment Management AB Lowers Position in Tesla, Inc. $TSLA
                      company_name: Tesla
                      publisher: defenseworld
                      published_date: '2026-03-23 10:52:44'
                      source: Wokelo
                      author: Defense World Staff
                      countries:
                        - USA
                      sentiment: Neutral
                      primary_tag: Secondary Transactions
                      original_language: EN
                      secondary_tags:
                        - Earnings Releases
                        - Revenue & Growth Metrics
                        - Guidance & Forecast Revisions
                      newsworthiness_impact: Medium
                  count: 4
              example:
                status: success
                data:
                  - ai_summary: 'Nordea Investment Management AB reduced its stake in Tesla, Inc. by 8.4% in the fourth quarter, according to its SEC filing. Several institutional investors increased their holdings, and Tesla reported quarterly earnings with a net margin of 4%, revenue of $24.90 billion, and an EPS of $0.50. '
                    type: Secondary Transactions
                    url: https://www.defenseworld.net/2026/03/23/nordea-investment-management-ab-lowers-position-in-tesla-inc-tsla.html
                    title: Nordea Investment Management AB Lowers Position in Tesla, Inc. $TSLA
                    company_name: Tesla
                    publisher: defenseworld
                    published_date: '2026-03-23 10:52:44'
                    source: Wokelo
                    author: Defense World Staff
                    countries:
                      - USA
                    sentiment: Neutral
                    primary_tag: Secondary Transactions
                    original_language: EN
                    secondary_tags:
                      - Earnings Releases
                      - Revenue & Growth Metrics
                      - Guidance & Forecast Revisions
                    newsworthiness_impact: Medium
                count: 4
        '401':
          $ref: '#/components/responses/UnauthorizedError'
      parameters:
        - name: blacklisted
          in: query
          required: false
          schema:
            type: string
          description: Comma-separated list of publisher domains to exclude from results.
        - name: category
          in: query
          required: false
          schema:
            type: string
          description: Comma-separated list of news categories to filter by. [View](https://wkemails.blob.core.windows.net/clients/%28%27808dda00-141d-4952-b44c-c50bd41c2ce3%27%2C%29/news_category_names.csv) complete list of all the supported news categories.
        - name: company
          in: query
          required: true
          schema:
            type: string
          description: Company permalink or a valid company URL for which news articles need to be fetched (e.g., `tesla` or `https://www.tesla.com/`)
        - name: end_date
          in: query
          required: false
          schema:
            type: string
          description: End date for the timeframe to consider when fetching news (e.g., `2024-12-31`)
        - name: limit
          in: query
          required: false
          schema:
            type: integer
          description: Maximum number of news articles to return Default = 100 Max value= 1000
        - name: offset
          in: query
          required: false
          schema:
            type: integer
          description: Number of news to skip before starting to return results
        - name: publishers
          in: query
          required: false
          schema:
            type: string
          description: Comma-separated list of publisher domains whose articles will be included.
        - name: start_date
          in: query
          required: false
          schema:
            type: string
          description: Start date for the timeframe to consider when fetching news (e.g., `2024-01-01`)
      security:
        - bearerAuth: []
      x-codeSamples:
        - label: JavaScript - Fetch
          lang: JavaScript
          source: |-
            const myHeaders = new Headers();
            myHeaders.append("Authorization", "Bearer YOUR_TOKEN");
            myHeaders.append("Content-Type", "application/json");

            const requestOptions = {
              method: "GET",
              headers: myHeaders,
              redirect: "follow"
            };

            fetch("https://api.wokelo.ai/api/enterprise/company/news/?company=tesla&category=PRODUCT RELATED", requestOptions)
              .then((response) => response.text())
              .then((result) => console.log(result))
              .catch((error) => console.error(error));
        - label: Python
          lang: Python
          source: |-
            import requests

            headers = {
                "Authorization": "Bearer YOUR_TOKEN",
                "Content-Type": "application/json"
            }
            response = requests.get(
                "https://api.wokelo.ai/api/enterprise/company/news/",
                headers=headers,
                params={"company": "tesla", "category": "PRODUCT RELATED", "limit": 100}
            )
            print(response.json())
        - label: cURL
          lang: cURL
          source: |-
            curl --request GET \
              --url 'https://api.wokelo.ai/api/enterprise/company/news/?company=tesla&category=PRODUCT%20RELATED' \
              --header 'Authorization: Bearer YOUR_TOKEN'
        - label: Go
          lang: Go
          source: |-
            package main

            import (
              "fmt"
              "io"
              "net/http"
              "net/url"
            )

            func main() {
              params := url.Values{"company": {"tesla"}, "category": {"PRODUCT RELATED"}}
              req, _ := http.NewRequest("GET",
                "https://api.wokelo.ai/api/enterprise/company/news/?"+params.Encode(), nil)
              req.Header.Set("Authorization", "Bearer YOUR_TOKEN")
              resp, _ := http.DefaultClient.Do(req)
              defer resp.Body.Close()
              body, _ := io.ReadAll(resp.Body)
              fmt.Println(string(body))
            }
        - label: Java
          lang: Java
          source: |-
            import java.net.URI;
            import java.net.http.*;

            public class NewsMonitoring {
              public static void main(String[] args) throws Exception {
                HttpRequest request = HttpRequest.newBuilder()
                    .uri(URI.create("https://api.wokelo.ai/api/enterprise/company/news/?company=tesla&category=PRODUCT%20RELATED"))
                    .header("Authorization", "Bearer YOUR_TOKEN")
                    .GET()
                    .build();
                HttpResponse<String> response = HttpClient.newHttpClient()
                    .send(request, HttpResponse.BodyHandlers.ofString());
                System.out.println(response.body());
              }
            }
  /api/enterprise/company/product-reviews/:
    get:
      tags:
        - Enrichment
      summary: Product Reviews
      description: Retrieves paginated product reviews for a specified company, supporting configurable result limits and offsets for efficient data navigation. Returns a structured list of product reviews.
      operationId: get_api_enterprise_company_product-reviews
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                  data:
                    type: object
                    properties:
                      company:
                        type: string
                      product_name:
                        type: string
                      rating:
                        type: number
                      star_distribution:
                        type: object
                        properties:
                          '1':
                            type: integer
                          '2':
                            type: integer
                          '3':
                            type: integer
                          '4':
                            type: integer
                          '5':
                            type: integer
                        required:
                          - '1'
                          - '2'
                          - '3'
                          - '4'
                          - '5'
                      reviews:
                        type: array
                        items:
                          type: object
                          properties:
                            review_id:
                              type: integer
                            review_title:
                              type: string
                          required:
                            - review_id
                            - review_title
                    required:
                      - company
                      - product_name
                      - rating
                      - star_distribution
                      - reviews
                required:
                  - status
                  - data
                description: '[FROM OFFICIAL DOCS] Response schema derived from example in product-reviews.md.'
              example:
                status: success
                data:
                  company: salesforce
                  product_name: Slack
                  rating: 4.5
                  star_distribution:
                    '1': 128
                    '2': 270
                    '3': 1239
                    '4': 7083
                    '5': 25056
                  reviews:
                    - review_id: 10674077
                      review_title: Easy to use enterprise communication platform
        '401':
          $ref: '#/components/responses/UnauthorizedError'
      parameters:
        - name: company
          in: query
          required: true
          schema:
            type: string
          description: Permalink of the company whose product reviews need to be fetched E.g. `"salesforce"`
        - name: limit
          in: query
          required: false
          schema:
            type: integer
          description: Maximum number of product reviews to return
        - name: offset
          in: query
          required: false
          schema:
            type: integer
          description: Number of records to skip before starting to return results
      security:
        - bearerAuth: []
      x-codeSamples:
        - label: JavaScript - Fetch
          lang: JavaScript
          source: |-
            const myHeaders = new Headers();
            myHeaders.append("Authorization", "Bearer YOUR_TOKEN");
            myHeaders.append("Content-Type", "application/json");

            const requestOptions = {
              method: "GET",
              headers: myHeaders,
              redirect: "follow"
            };

            fetch("https://api.wokelo.ai/api/enterprise/company/product-reviews/?company=https://www.salesforce.com/&limit=5&offset=0", requestOptions)
              .then((response) => response.text())
              .then((result) => console.log(result))
              .catch((error) => console.error(error));
        - label: Python
          lang: Python
          source: |-
            import requests

            headers = {
                "Authorization": "Bearer YOUR_TOKEN",
                "Content-Type": "application/json"
            }
            response = requests.get(
                "https://api.wokelo.ai/api/enterprise/company/product-reviews/",
                headers=headers,
                params={"company": "salesforce", "limit": 5, "offset": 0}
            )
            print(response.json())
        - label: cURL
          lang: cURL
          source: |-
            curl --request GET \
              --url 'https://api.wokelo.ai/api/enterprise/company/product-reviews/?company=salesforce&limit=5&offset=0' \
              --header 'Authorization: Bearer YOUR_TOKEN' \
              --header 'Content-Type: application/json'
        - label: Go
          lang: Go
          source: |-
            package main

            import (
              "fmt"
              "io"
              "net/http"
            )

            func main() {
              req, _ := http.NewRequest("GET",
                "https://api.wokelo.ai/api/enterprise/company/product-reviews/?company=salesforce&limit=5&offset=0", nil)
              req.Header.Set("Authorization", "Bearer YOUR_TOKEN")
              req.Header.Set("Content-Type", "application/json")
              resp, _ := http.DefaultClient.Do(req)
              defer resp.Body.Close()
              body, _ := io.ReadAll(resp.Body)
              fmt.Println(string(body))
            }
        - label: Java
          lang: Java
          source: |-
            import java.net.URI;
            import java.net.http.*;

            public class ProductReviews {
              public static void main(String[] args) throws Exception {
                HttpRequest request = HttpRequest.newBuilder()
                    .uri(URI.create("https://api.wokelo.ai/api/enterprise/company/product-reviews/?company=salesforce&limit=5&offset=0"))
                    .header("Authorization", "Bearer YOUR_TOKEN")
                    .header("Content-Type", "application/json")
                    .GET()
                    .build();
                HttpResponse<String> response = HttpClient.newHttpClient()
                    .send(request, HttpResponse.BodyHandlers.ofString());
                System.out.println(response.body());
              }
            }
  /api/enterprise/company/search:
    get:
      tags:
        - Supporting APIs
      summary: Company Search
      description: Search for companies using name, website or ticker. It returns a list of companies with their permalink and other attributes.
      operationId: get_api_enterprise_company_search
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    description: '`"success"` if the request was processed successfully.'
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        name:
                          type: string
                          description: Company name.
                        permalink:
                          type: string
                          description: Unique identifier/slug for the company.
                        short_description:
                          type: string
                          description: Brief description of the company.
                        founded_year:
                          type: string
                          description: Year the company was founded.
                        ipo_status:
                          type: string
                          description: IPO status (e.g., `private`, `public`).
                        hq:
                          type: string
                          description: Headquarters location.
                        industries:
                          type: string
                          description: Industry or sector the company operates in.
                        website:
                          type: string
                          description: Company website URL.
                        ticker:
                          type: string
                          description: Stock ticker symbol (if applicable).
                        country_code:
                          type: string
                          description: ISO country code.
                        country:
                          type: string
                          description: Full country name.
                        domain:
                          type: string
                          description: Company domain name.
                        last_funding_round:
                          type: string
                          description: Most recent funding round (e.g., `Seed`, `Pre Seed` etc)
                    description: List of matching company objects.
                  count:
                    type: integer
                    description: Total number of results returned.
                description: '[FROM OFFICIAL DOCS] Response schema from company-search.md.'
                example:
                  status: success
                  data:
                    - name: Wokelo AI
                      permalink: wokelo-ai
                      short_description: Wokelo builds purpose-built AI agents for dealmaking and consulting.
                      founded_year: '2023'
                      ipo_status: private
                      hq: Seattle, United States
                      industries: AI Investment Research Platform
                      website: https://www.wokelo.ai/
                      ticker: ''
                      country_code: US
                      country: United States
                      domain: wokelo.ai
                      last_funding_round: Seed
                  count: 10
              example:
                status: success
                data:
                  - name: Wokelo AI
                    permalink: wokelo-ai
                    short_description: Wokelo builds purpose-built AI agents for dealmaking and consulting.
                    founded_year: '2023'
                    ipo_status: private
                    hq: Seattle, United States
                    industries: AI Investment Research Platform
                    website: https://www.wokelo.ai/
                    ticker: ''
                    country_code: US
                    country: United States
                    domain: wokelo.ai
                    last_funding_round: Seed
                count: 10
        '401':
          $ref: '#/components/responses/UnauthorizedError'
      parameters:
        - name: query
          in: query
          required: true
          schema:
            type: string
          description: 'The search query string (e.g., company name, website or ticker). Examples: Tesla OR `https://tesla.com` OR TSLA'
        - name: search_by
          in: query
          required: false
          schema:
            type: string
          description: 'Field to search by. Supported value: `name`, `website`, `ticker`'
        - name: company_type
          in: query
          required: false
          schema:
            type: string
          description: 'Filter by company type. Supported values: `private`, `public`, `all` Note: Use `all` to return all types. (This is the default value is nothing is mentioned)'
      security:
        - bearerAuth: []
      x-codeSamples:
        - label: JavaScript - Fetch
          lang: JavaScript
          source: |-
            const myHeaders = new Headers();
            myHeaders.append("Authorization", "Bearer YOUR_TOKEN");
            myHeaders.append("Content-Type", "application/json");

            const raw = JSON.stringify({
              "q": "wokelo"
            });

            const requestOptions = {
              method: "GET",
              headers: myHeaders,
              body: raw,
              redirect: "follow"
            };

            fetch("https://api.wokelo.ai/api/enterprise/company/search?query=wokelo&search_by=name&company_type=all", requestOptions)
              .then((response) => response.text())
              .then((result) => console.log(result))
              .catch((error) => console.error(error));
        - label: Python
          lang: Python
          source: |-
            import requests

            headers = {"Authorization": "Bearer YOUR_TOKEN", "Content-Type": "application/json"}
            response = requests.get(
                "https://api.wokelo.ai/api/enterprise/company/search",
                headers=headers,
                params={"query": "wokelo", "search_by": "name", "company_type": "all"}
            )
            print(response.json())
        - label: cURL
          lang: cURL
          source: |-
            curl --request GET \
              --url 'https://api.wokelo.ai/api/enterprise/company/search?query=wokelo&search_by=name&company_type=all' \
              --header 'Authorization: Bearer YOUR_TOKEN'
        - label: Go
          lang: Go
          source: |-
            package main

            import (
              "fmt"
              "io"
              "net/http"
            )

            func main() {
              req, _ := http.NewRequest("GET",
                "https://api.wokelo.ai/api/enterprise/company/search?query=wokelo&search_by=name&company_type=all", nil)
              req.Header.Set("Authorization", "Bearer YOUR_TOKEN")
              resp, _ := http.DefaultClient.Do(req)
              defer resp.Body.Close()
              body, _ := io.ReadAll(resp.Body)
              fmt.Println(string(body))
            }
        - label: Java
          lang: Java
          source: |-
            import java.net.URI;
            import java.net.http.*;

            public class CompanySearch {
              public static void main(String[] args) throws Exception {
                HttpRequest request = HttpRequest.newBuilder()
                    .uri(URI.create("https://api.wokelo.ai/api/enterprise/company/search?query=wokelo&search_by=name&company_type=all"))
                    .header("Authorization", "Bearer YOUR_TOKEN")
                    .GET()
                    .build();
                HttpResponse<String> response = HttpClient.newHttpClient()
                    .send(request, HttpResponse.BodyHandlers.ofString());
                System.out.println(response.body());
              }
            }
  /api/enterprise/request/result/:
    get:
      tags:
        - Supporting APIs
      summary: Request Result
      description: Retrieves the result of a previously submitted API request.
      operationId: get_api_enterprise_request_result
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  request_id:
                    type: string
                    description: Request ID of the initiated request
                  status:
                    type: string
                    description: Status of the request
                  result:
                    type: array
                    items: {}
                    description: Result depending on the request
                description: '[FROM OFFICIAL DOCS] Response schema from request-result.md.'
                example:
                  request_id: d7a78d10-663a-493f-9b79-be1e6094f3bb
                  status: COMPLETED
                  result:
                    - tesla-motors:
                        firmographics:
                          name: Tesla
                          website: https://www.tesla.com
                          location: Austin, United States
                          founded: 2003
                          type: public
                          operating_status: IPO
                          ticker: NASDAQ:TSLA
              example:
                request_id: d7a78d10-663a-493f-9b79-be1e6094f3bb
                status: COMPLETED
                result:
                  - tesla-motors:
                      firmographics:
                        name: Tesla
                        website: https://www.tesla.com
                        location: Austin, United States
                        founded: 2003
                        type: public
                        operating_status: IPO
                        ticker: NASDAQ:TSLA
        '401':
          $ref: '#/components/responses/UnauthorizedError'
      parameters:
        - name: request_id
          in: query
          required: true
          schema:
            type: string
          description: 'The unique identifier of the async request whose status is being checked. Example: `11db67b6-8345-4837-950f-87bbd8d7dcbe`'
      security:
        - bearerAuth: []
      x-codeSamples:
        - label: JavaScript - Fetch
          lang: JavaScript
          source: |-
            const requestOptions = {
              method: "GET",
              redirect: "follow"
            };

            fetch("https://api.wokelo.ai/api/enterprise/request/result/?request_id=11db67b6-8345-4837-950f-87bbd8d7dcbe", requestOptions)
              .then((response) => response.text())
              .then((result) => console.log(result))
              .catch((error) => console.error(error));
        - label: Python
          lang: Python
          source: |-
            import requests

            headers = {"Authorization": "Bearer YOUR_TOKEN"}
            response = requests.get(
                "https://api.wokelo.ai/api/enterprise/request/result/",
                headers=headers,
                params={"request_id": "11db67b6-8345-4837-950f-87bbd8d7dcbe"}
            )
            print(response.json())
        - label: cURL
          lang: cURL
          source: |-
            curl --request GET \
              --url 'https://api.wokelo.ai/api/enterprise/request/result/?request_id=11db67b6-8345-4837-950f-87bbd8d7dcbe' \
              --header 'Authorization: Bearer YOUR_TOKEN'
        - label: Go
          lang: Go
          source: |-
            package main

            import (
              "fmt"
              "io"
              "net/http"
            )

            func main() {
              req, _ := http.NewRequest("GET",
                "https://api.wokelo.ai/api/enterprise/request/result/?request_id=11db67b6-8345-4837-950f-87bbd8d7dcbe", nil)
              req.Header.Set("Authorization", "Bearer YOUR_TOKEN")
              resp, _ := http.DefaultClient.Do(req)
              defer resp.Body.Close()
              body, _ := io.ReadAll(resp.Body)
              fmt.Println(string(body))
            }
        - label: Java
          lang: Java
          source: |-
            import java.net.URI;
            import java.net.http.*;

            public class RequestResult {
              public static void main(String[] args) throws Exception {
                HttpRequest request = HttpRequest.newBuilder()
                    .uri(URI.create("https://api.wokelo.ai/api/enterprise/request/result/?request_id=11db67b6-8345-4837-950f-87bbd8d7dcbe"))
                    .header("Authorization", "Bearer YOUR_TOKEN")
                    .GET().build();
                HttpResponse<String> response = HttpClient.newHttpClient()
                    .send(request, HttpResponse.BodyHandlers.ofString());
                System.out.println(response.body());
              }
            }
  /api/enterprise/request/status/:
    get:
      tags:
        - Supporting APIs
      summary: Request Status
      description: Retrieves the current status of a previously submitted API request.
      operationId: get_api_enterprise_request_status
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  request_id:
                    type: string
                  status:
                    type: string
                  request_type:
                    type: string
                  created_at:
                    type: string
                  updated_at:
                    type: string
                required:
                  - request_id
                  - status
                  - request_type
                  - created_at
                  - updated_at
                description: '[FROM OFFICIAL DOCS] Response schema derived from example in request-status.md.'
              example:
                request_id: b1f10ebf-a251-4e2d-b867-8482ac701987
                status: COMPLETED
                request_type: target_screening
                created_at: '2026-03-25T07:24:40.333168Z'
                updated_at: '2026-03-25T07:30:41.503082Z'
        '401':
          $ref: '#/components/responses/UnauthorizedError'
      parameters:
        - name: request_id
          in: query
          required: true
          schema:
            type: string
          description: 'The unique identifier of the request whose status is being checked. Example: `11db67b6-8345-4837-950f-87bbd8d7dcbe`'
      security:
        - bearerAuth: []
      x-codeSamples:
        - label: JavaScript - Fetch
          lang: JavaScript
          source: |-
            const myHeaders = new Headers();
            myHeaders.append("Authorization", "Bearer YOUR_TOKEN");
            myHeaders.append("Content-Type", "application/json");

            const requestOptions = {
              method: "GET",
              headers: myHeaders,
              redirect: "follow"
            };

            fetch("https://api.wokelo.ai/api/enterprise/request/status/?request_id=11db67b6-8345-4837-950f-87bbd8d7dcbe", requestOptions)
              .then((response) => response.text())
              .then((result) => console.log(result))
              .catch((error) => console.error(error));
        - label: Python
          lang: Python
          source: |-
            import requests, time

            headers = {"Authorization": "Bearer YOUR_TOKEN", "Content-Type": "application/json"}
            while True:
                r = requests.get(
                    "https://api.wokelo.ai/api/enterprise/request/status/",
                    headers=headers,
                    params={"request_id": "11db67b6-8345-4837-950f-87bbd8d7dcbe"}
                )
                data = r.json()
                if data["status"] in ("COMPLETED", "FAILED"):
                    break
                time.sleep(5)
            print(data)
        - label: cURL
          lang: cURL
          source: |-
            curl --request GET \
              --url 'https://api.wokelo.ai/api/enterprise/request/status/?request_id=11db67b6-8345-4837-950f-87bbd8d7dcbe' \
              --header 'Authorization: Bearer YOUR_TOKEN'
        - label: Go
          lang: Go
          source: |-
            package main

            import (
              "encoding/json"
              "fmt"
              "io"
              "net/http"
              "time"
            )

            func main() {
              for {
                req, _ := http.NewRequest("GET",
                  "https://api.wokelo.ai/api/enterprise/request/status/?request_id=11db67b6-8345-4837-950f-87bbd8d7dcbe", nil)
                req.Header.Set("Authorization", "Bearer YOUR_TOKEN")
                resp, _ := http.DefaultClient.Do(req)
                body, _ := io.ReadAll(resp.Body)
                resp.Body.Close()
                var result map[string]interface{}
                json.Unmarshal(body, &result)
                if result["status"] == "COMPLETED" || result["status"] == "FAILED" {
                  fmt.Println(string(body)); break
                }
                time.Sleep(5 * time.Second)
              }
            }
        - label: Java
          lang: Java
          source: |-
            import java.net.URI;
            import java.net.http.*;

            public class RequestStatus {
              public static void main(String[] args) throws Exception {
                while (true) {
                  HttpRequest request = HttpRequest.newBuilder()
                      .uri(URI.create("https://api.wokelo.ai/api/enterprise/request/status/?request_id=11db67b6-8345-4837-950f-87bbd8d7dcbe"))
                      .header("Authorization", "Bearer YOUR_TOKEN")
                      .GET().build();
                  HttpResponse<String> response = HttpClient.newHttpClient()
                      .send(request, HttpResponse.BodyHandlers.ofString());
                  if (response.body().contains("COMPLETED") || response.body().contains("FAILED")) {
                    System.out.println(response.body()); break;
                  }
                  Thread.sleep(5000);
                }
              }
            }
  /api/assets/download_report/:
    post:
      tags:
        - Supporting APIs
      summary: Download Report
      description: Downloads the generated report in the required format such as docx, pdf, and json. The format is passed in the request body.
      operationId: post_api_assets_download_report
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  Executive Summary:
                    type: object
                    properties:
                      Executive Summary:
                        type: object
                        properties:
                          summary:
                            type: object
                            properties:
                              source:
                                type: array
                                items:
                                  type: object
                                  properties:
                                    id:
                                      type: integer
                                    title:
                                      type: string
                                    url:
                                      type: string
                                    publisher:
                                      type: string
                                    date:
                                      type: string
                                  required:
                                    - id
                                    - title
                                    - url
                                    - publisher
                                    - date
                            required:
                              - source
                        required:
                          - summary
                    required:
                      - Executive Summary
                required:
                  - Executive Summary
                description: '[FROM OFFICIAL DOCS] Response schema derived from example in download-report.md.'
              example:
                Executive Summary:
                  Executive Summary:
                    summary:
                      source:
                        - id: 1
                          title: openPR.com L4 Self-driving Vehicle Market Current Status and Future Prospects till 2033
                          url: https://www.openpr.com/news/4132700/l4-self-driving-vehicle-market-current-status-and-future
                          publisher: ''
                          date: ''
        '401':
          $ref: '#/components/responses/UnauthorizedError'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                file_type:
                  type: string
                  description: 'Export format. Permitted values: "pdf", "docx", "json"'
                report_id:
                  type: integer
                  description: Id of the report to be exported
              description: '[FROM OFFICIAL DOCS] Request schema from download-report.md.'
              required:
                - file_type
                - report_id
            example:
              report_id: 84102
              file_type: json
      security:
        - bearerAuth: []
      x-codeSamples:
        - label: JavaScript - Fetch
          lang: JavaScript
          source: |-
            const myHeaders = new Headers();
            myHeaders.append("Content-Type", "application/json");
            myHeaders.append("Authorization", "Bearer YOUR_TOKEN");

            const raw = JSON.stringify({
              "report_id": 84102,
              "file_type": "json"
            });

            const requestOptions = {
              method: "POST",
              headers: myHeaders,
              body: raw,
              redirect: "follow"
            };

            fetch("https://api.wokelo.ai/api/assets/download_report/", requestOptions)
              .then((response) => response.text())
              .then((result) => console.log(result))
              .catch((error) => console.error(error));
        - label: Python
          lang: Python
          source: |-
            import requests

            headers = {
                "Content-Type": "application/json",
                "Authorization": "Bearer YOUR_TOKEN"
            }
            payload = {"report_id": 84102, "file_type": "json"}
            response = requests.post(
                "https://api.wokelo.ai/api/assets/download_report/",
                headers=headers,
                json=payload
            )

            # For JSON export
            print(response.json())

            # For binary (pdf/docx), save to file instead:
            # with open("report.pdf", "wb") as f:
            #     f.write(response.content)
        - label: cURL
          lang: cURL
          source: |-
            curl --request POST \
              --url https://api.wokelo.ai/api/assets/download_report/ \
              --header 'Authorization: Bearer YOUR_TOKEN' \
              --header 'Content-Type: application/json' \
              --data '{
                "report_id": 84102,
                "file_type": "json"
              }'
        - label: Go
          lang: Go
          source: |-
            package main

            import (
              "bytes"
              "encoding/json"
              "fmt"
              "io"
              "net/http"
            )

            func main() {
              payload := map[string]interface{}{
                "report_id": 84102,
                "file_type": "json",
              }
              body, _ := json.Marshal(payload)
              req, _ := http.NewRequest("POST", "https://api.wokelo.ai/api/assets/download_report/", bytes.NewBuffer(body))
              req.Header.Set("Authorization", "Bearer YOUR_TOKEN")
              req.Header.Set("Content-Type", "application/json")
              resp, _ := http.DefaultClient.Do(req)
              defer resp.Body.Close()
              respBody, _ := io.ReadAll(resp.Body)
              fmt.Println(string(respBody))
            }
        - label: Java
          lang: Java
          source: |-
            import java.net.URI;
            import java.net.http.*;

            public class DownloadReport {
              public static void main(String[] args) throws Exception {
                String body = "{\"report_id\":84102,\"file_type\":\"json\"}";
                HttpRequest request = HttpRequest.newBuilder()
                    .uri(URI.create("https://api.wokelo.ai/api/assets/download_report/"))
                    .header("Authorization", "Bearer YOUR_TOKEN")
                    .header("Content-Type", "application/json")
                    .POST(HttpRequest.BodyPublishers.ofString(body))
                    .build();
                HttpResponse<String> response = HttpClient.newHttpClient()
                    .send(request, HttpResponse.BodyHandlers.ofString());
                System.out.println(response.body());
              }
            }
  /api/assets/upload/:
    post:
      tags:
        - Supporting APIs
      summary: Upload file
      description: Upload your files to Wokelo to supplement research reports with proprietary data. Each uploaded file receives a unique identifier that you can reference in the `custom_files` parameter when creating reports.
      operationId: post_api_assets_upload
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    description: Overall upload status (success or error)
                  success:
                    type: array
                    items:
                      type: object
                      properties:
                        fileName:
                          type: string
                          description: Wokelo's unique file identifier—use this in the `custom_files` parameter when creating reports
                        originalName:
                          type: string
                          description: '[FROM EXAMPLE — not in formal docs schema] Original uploaded filename returned for each successful file.'
                        mimeType:
                          type: string
                          description: Detected file type/format
                        uuid:
                          type: string
                          description: '[FROM EXAMPLE — not in formal docs schema] Caller-provided UUID echoed back for each successful file when supplied.'
                    description: Array containing information on successfully uploaded files
                  fails:
                    type: array
                    items:
                      type: object
                      properties:
                        reason:
                          type: string
                          description: '[FROM EXAMPLE — not in formal docs schema] Reason given for each failed upload item when present.'
                    description: Array containing information about failed uploads (empty on success)
                description: '[FROM OFFICIAL DOCS] Response schema from upload-file.md.'
                example:
                  status: success
                  success:
                    - fileName: file_116e55ec-041d-4c1e-897c-3adef1576a09
                      originalName: lemonade.pdf
                      mimeType: pdf
                      uuid: a7f4b9e2c3
                    - fileName: file_e30c7d3f-8bed-46b2-ae9c-eebc879323cc
                      originalName: lemonade_diligence.pdf
                      mimeType: pdf
                      uuid: k3m8n5p1q6
                  fails: []
              example:
                status: success
                success:
                  - fileName: file_116e55ec-041d-4c1e-897c-3adef1576a09
                    originalName: lemonade.pdf
                    mimeType: pdf
                    uuid: a7f4b9e2c3
                  - fileName: file_e30c7d3f-8bed-46b2-ae9c-eebc879323cc
                    originalName: lemonade_diligence.pdf
                    mimeType: pdf
                    uuid: k3m8n5p1q6
                fails: []
        '401':
          $ref: '#/components/responses/UnauthorizedError'
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                files:
                  type: array
                  items:
                    type: string
                    format: binary
                  description: Array of files to be uploaded
                fileUUID:
                  type: array
                  items:
                    type: string
                    format: uuid
                  description: Your own UUIDs to track files. Must match the length and order of the `files` array. These UUIDs will be returned in the response alongside Wokelo's `fileName` identifiers.
              description: '[FROM OFFICIAL DOCS] Multipart upload payload.'
              required:
                - files
            encoding:
              files:
                style: form
                explode: true
              fileUUID:
                style: form
                explode: true
            example:
              files:
                - <binary file>
              fileUUID:
                - 550e8400-e29b-41d4-a716-446655440000
      security:
        - bearerAuth: []
      x-codeSamples:
        - label: JavaScript - Fetch
          lang: JavaScript
          source: |-
            const formdata = new FormData();
            formdata.append("files", fileInput.files[0], "lemonade.pdf");
            formdata.append("fileUUID", "550e8400-e29b-41d4-a716-446655440000");

            const requestOptions = {
              method: "POST",
              body: formdata,
              redirect: "follow"
            };

            fetch("https://api.wokelo.ai/api/assets/upload/", requestOptions)
              .then((response) => response.text())
              .then((result) => console.log(result))
              .catch((error) => console.error(error));
        - label: Python
          lang: Python
          source: |-
            import requests

            headers = {"Authorization": "Bearer YOUR_TOKEN"}
            with open("lemonade.pdf", "rb") as f:
                response = requests.post(
                    "https://api.wokelo.ai/api/assets/upload/",
                    headers=headers,
                    files={"files": ("lemonade.pdf", f, "application/pdf")},
                    data={"fileUUID": "550e8400-e29b-41d4-a716-446655440000"}
                )
            print(response.json())
        - label: cURL
          lang: cURL
          source: |-
            curl --request POST \
              --url https://api.wokelo.ai/api/assets/upload/ \
              --header 'Authorization: Bearer YOUR_TOKEN' \
              --form 'files=@/path/to/lemonade.pdf' \
              --form 'fileUUID=550e8400-e29b-41d4-a716-446655440000'
        - label: Go
          lang: Go
          source: |-
            package main

            import (
              "bytes"
              "fmt"
              "io"
              "mime/multipart"
              "net/http"
              "os"
            )

            func main() {
              var buf bytes.Buffer
              w := multipart.NewWriter(&buf)
              file, _ := os.Open("lemonade.pdf")
              defer file.Close()
              fw, _ := w.CreateFormFile("files", "lemonade.pdf")
              io.Copy(fw, file)
              w.WriteField("fileUUID", "550e8400-e29b-41d4-a716-446655440000")
              w.Close()
              req, _ := http.NewRequest("POST", "https://api.wokelo.ai/api/assets/upload/", &buf)
              req.Header.Set("Authorization", "Bearer YOUR_TOKEN")
              req.Header.Set("Content-Type", w.FormDataContentType())
              resp, _ := http.DefaultClient.Do(req)
              defer resp.Body.Close()
              body, _ := io.ReadAll(resp.Body)
              fmt.Println(string(body))
            }
        - label: Java
          lang: Java
          source: |-
            import java.net.URI;
            import java.net.http.*;
            import java.nio.file.*;

            public class UploadFile {
              public static void main(String[] args) throws Exception {
                String boundary = "----JavaBoundary";
                byte[] fileBytes = Files.readAllBytes(Path.of("lemonade.pdf"));
                String bodyPart1 = "--" + boundary + "\r\nContent-Disposition: form-data; name=\"files\"; filename=\"lemonade.pdf\"\r\nContent-Type: application/pdf\r\n\r\n";
                String bodyPart2 = "\r\n--" + boundary + "--";
                byte[] body = concat(bodyPart1.getBytes(), fileBytes, bodyPart2.getBytes());
                HttpRequest request = HttpRequest.newBuilder()
                    .uri(URI.create("https://api.wokelo.ai/api/assets/upload/"))
                    .header("Authorization", "Bearer YOUR_TOKEN")
                    .header("Content-Type", "multipart/form-data; boundary=" + boundary)
                    .POST(HttpRequest.BodyPublishers.ofByteArray(body))
                    .build();
                HttpResponse<String> response = HttpClient.newHttpClient()
                    .send(request, HttpResponse.BodyHandlers.ofString());
                System.out.println(response.body());
              }
              static byte[] concat(byte[]... arrays) {
                int len = 0; for (byte[] a : arrays) len += a.length;
                byte[] result = new byte[len]; int pos = 0;
                for (byte[] a : arrays) { System.arraycopy(a, 0, result, pos, a.length); pos += a.length; }
                return result;
              }
            }
  /api/enterprise/buyer-screening/enrich/:
    post:
      tags:
        - Discovery
      summary: Buyer Screening
      description: The Buyer Screening API generates a long list of potential buyers for a given target company, enriched with structured data. Optionally, you can refine the output by specifying buyer type, company type, geography, and a detailed query to narrow the strategic criteria. Returns a request\_id as a response.
      operationId: post_api_enterprise_buyer-screening_enrich
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  request_id:
                    type: string
                    description: Unique identifier for the request posted. Use this with the `/api/enterprise/request/status/` endpoint to check the status
                description: '[FROM OFFICIAL DOCS] Response schema from buyer-screening.md.'
                example:
                  request_id: 278412f8-87ca-47a9-9d1c-4a62a687eaf6
              example:
                request_id: 278412f8-87ca-47a9-9d1c-4a62a687eaf6
        '202':
          description: Company Grid Buyer Screening-202
          content:
            application/json:
              schema:
                type: object
                properties:
                  request_id:
                    type: string
                  status:
                    type: string
                required:
                  - request_id
                  - status
              example:
                request_id: 278412f8-87ca-47a9-9d1c-4a62a687eaf6
                status: PENDING
        '401':
          $ref: '#/components/responses/UnauthorizedError'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                company:
                  type: string
                  description: 'Permalink of the target company or its complete URL Example: `"acme-solar"` OR `https://www.acmesolar.in/`'
                parameters:
                  type: object
                  properties:
                    detailed_query:
                      type: string
                      description: A descriptive query to refine the buyer search scope and strategic criteria
                    buyer_type:
                      type: array
                      items: {}
                      description: 'Type of buyer to target. Accepted values: `"strategic"`, `"financial"`'
                    company_type:
                      type: string
                      description: 'Type of company to include. Accepted values: `"private"`, `"public"`, `"all"`'
                    geography:
                      type: array
                      items:
                        type: string
                      description: Geographic scope. It should be a comma separated list of ISO country codes. (Eg.. `["USA", "GBR"]`)
              description: '[FROM OFFICIAL DOCS] Request schema from buyer-screening.md.'
              required:
                - company
            example:
              company: acme-security
              parameters:
                buyer_type:
                  - strategic
                company_type: public
                geography:
                  - USA
      security:
        - bearerAuth: []
      x-codeSamples:
        - label: JavaScript - Fetch
          lang: JavaScript
          source: |-
            const myHeaders = new Headers();
            myHeaders.append("Authorization", "Bearer YOUR_TOKEN");
            myHeaders.append("Content-Type", "application/json");

            const raw = JSON.stringify({
              "company": "acme-security",
              "parameters": {
                "detailed_query": "Looking for strategic acquirers in enterprise software",
                "buyer_type": [
                  "strategic"
                ],
                "company_type": "public",
                "geography": [
                  "United States"
                ]
              }
            });

            const requestOptions = {
              method: "POST",
              headers: myHeaders,
              body: raw,
              redirect: "follow"
            };

            fetch("https://api.wokelo.ai/api/enterprise/buyer-screening/enrich/", requestOptions)
              .then((response) => response.text())
              .then((result) => console.log(result))
              .catch((error) => console.error(error));
        - label: Python
          lang: Python
          source: |-
            import requests

            headers = {
                "Authorization": "Bearer YOUR_TOKEN",
                "Content-Type": "application/json"
            }
            payload = {
                "company": "acme-security",
                "parameters": {
                    "detailed_query": "Looking for strategic acquirers in enterprise software",
                    "buyer_type": ["strategic"],
                    "company_type": "public",
                    "geography": ["USA"]
                }
            }
            response = requests.post(
                "https://api.wokelo.ai/api/enterprise/buyer-screening/enrich/",
                headers=headers, json=payload
            )
            print(response.json())
        - label: cURL
          lang: cURL
          source: |-
            curl --request POST \
              --url https://api.wokelo.ai/api/enterprise/buyer-screening/enrich/ \
              --header 'Authorization: Bearer YOUR_TOKEN' \
              --header 'Content-Type: application/json' \
              --data '{
                "company": "acme-security",
                "parameters": {
                  "buyer_type": ["strategic"],
                  "company_type": "public",
                  "geography": ["USA"]
                }
              }'
        - label: Go
          lang: Go
          source: |-
            package main

            import (
              "bytes"
              "encoding/json"
              "fmt"
              "io"
              "net/http"
            )

            func main() {
              payload := map[string]interface{}{
                "company": "acme-security",
                "parameters": map[string]interface{}{
                  "buyer_type":   []string{"strategic"},
                  "company_type": "public",
                  "geography":    []string{"USA"},
                },
              }
              body, _ := json.Marshal(payload)
              req, _ := http.NewRequest("POST", "https://api.wokelo.ai/api/enterprise/buyer-screening/enrich/", bytes.NewBuffer(body))
              req.Header.Set("Authorization", "Bearer YOUR_TOKEN")
              req.Header.Set("Content-Type", "application/json")
              resp, _ := http.DefaultClient.Do(req)
              defer resp.Body.Close()
              respBody, _ := io.ReadAll(resp.Body)
              fmt.Println(string(respBody))
            }
        - label: Java
          lang: Java
          source: |-
            import java.net.URI;
            import java.net.http.*;

            public class BuyerScreening {
              public static void main(String[] args) throws Exception {
                String body = "{\"company\":\"acme-security\",\"parameters\":{\"buyer_type\":[\"strategic\"],\"company_type\":\"public\",\"geography\":[\"USA\"]}}";
                HttpRequest request = HttpRequest.newBuilder()
                    .uri(URI.create("https://api.wokelo.ai/api/enterprise/buyer-screening/enrich/"))
                    .header("Authorization", "Bearer YOUR_TOKEN")
                    .header("Content-Type", "application/json")
                    .POST(HttpRequest.BodyPublishers.ofString(body))
                    .build();
                HttpResponse<String> response = HttpClient.newHttpClient()
                    .send(request, HttpResponse.BodyHandlers.ofString());
                System.out.println(response.body());
              }
            }
  /api/enterprise/company/enrich/:
    post:
      tags:
        - Enrichment
      summary: Enrich a company profile (instant or deep).
      description: Enrich one or more companies through Wokelo's shared company enrichment endpoint. This operation supports the Company Instant Enrichment and Company Deep Intelligence request variants using a discriminator-based request body.
      operationId: post_api_enterprise_company_enrich
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  request_id:
                    type: string
                    description: '[FROM EXAMPLE — not in formal docs schema] Request identifier returned when the enrichment job is accepted.'
                  status:
                    type: string
                    description: '[FROM EXAMPLE — not in formal docs schema] Async processing status returned with the request identifier.'
                description: '[FROM OFFICIAL DOCS] Response schema from company-deep-intelligence.md.'
                example:
                  request_id: 3c945250-a3e8-4673-b342-2ceb03af5b02
                  status: PENDING
              example:
                request_id: 3c945250-a3e8-4673-b342-2ceb03af5b02
                status: PENDING
        '202':
          description: Company Enrichment- 202
          content:
            application/json:
              schema:
                type: object
                properties:
                  request_id:
                    type: string
                  status:
                    type: string
                required:
                  - request_id
                  - status
              example:
                request_id: 931643e9-b6c7-45d4-9ba9-bd3b534221e7
                status: PENDING
        '400':
          description: Company Enrichment- 400
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  invalid:
                    type: array
                    items:
                      type: string
                required:
                  - error
                  - invalid
              example:
                error: Invalid companies not found in database
                invalid:
                  - Tesla
        '401':
          $ref: '#/components/responses/UnauthorizedError'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              oneOf:
                - $ref: '#/components/schemas/CompanyInstantEnrichmentRequest'
                - $ref: '#/components/schemas/CompanyDeepIntelligenceRequest'
              discriminator:
                propertyName: sections
                mapping:
                  firmographics: '#/components/schemas/CompanyInstantEnrichmentRequest'
                  products_and_services: '#/components/schemas/CompanyDeepIntelligenceRequest'
              description: '[FROM OFFICIAL DOCS] Company enrichment union request body. Variant selection is based on the documented `sections` vocabulary.'
            examples:
              company_deep_intelligence:
                value:
                  companies:
                    - tesla-motors
                    - stripe
                  sections:
                    - products_and_services
                    - product_launches
                  parameters:
                    custom_fields:
                      - field_name: AI Readiness
                        type: text
                        prompt: Rate this company's AI readiness on a scale of 1-10 with reasoning
              company_instant_enrichment:
                value:
                  companies:
                    - tesla-motors
                    - stripe
                  sections:
                    - firmographics
                    - products
                    - funding
      security:
        - bearerAuth: []
      x-codeSamples:
        - lang: Python
          label: Company Deep Intelligence · Python
          source: |-
            import requests

            headers = {
                "Authorization": "Bearer YOUR_TOKEN",
                "Content-Type": "application/json"
            }
            payload = {
                "companies": ["tesla-motors", "stripe"],
                "sections": ["products_and_services", "product_launches"],
                "parameters": {
                    "custom_fields": [
                        {
                            "field_name": "AI Readiness",
                            "type": "text",
                            "prompt": "Rate this company's AI readiness on a scale of 1-10 with reasoning"
                        }
                    ]
                }
            }
            response = requests.post(
                "https://api.wokelo.ai/api/enterprise/company/enrich/",
                headers=headers, json=payload
            )
            print(response.json())
        - lang: cURL
          label: Company Deep Intelligence · cURL
          source: |-
            curl --request POST \
              --url https://api.wokelo.ai/api/enterprise/company/enrich/ \
              --header 'Authorization: Bearer YOUR_TOKEN' \
              --header 'Content-Type: application/json' \
              --data '{
                "companies": ["tesla-motors", "stripe"],
                "sections": ["products_and_services", "product_launches"],
                "parameters": {
                  "custom_fields": [
                    {
                      "field_name": "AI Readiness",
                      "type": "text",
                      "prompt": "Rate this company'\''s AI readiness on a scale of 1-10 with reasoning"
                    }
                  ]
                }
              }'
        - lang: Python
          label: Company Instant Enrichment · Python
          source: |-
            import requests, json

            headers = {
                "Authorization": "Bearer YOUR_TOKEN",
                "Content-Type": "application/json"
            }
            payload = {
                "companies": ["tesla-motors", "stripe"],
                "sections": ["firmographics", "products", "funding"],
                "parameters": {
                    "custom_fields": [
                        {
                            "field_name": "AI Readiness",
                            "type": "text",
                            "prompt": "Rate this company's AI readiness on a scale of 1-10 with reasoning"
                        }
                    ]
                }
            }
            response = requests.post(
                "https://api.wokelo.ai/api/enterprise/company/enrich/",
                headers=headers, json=payload
            )
            print(response.json())
        - lang: cURL
          label: Company Instant Enrichment · cURL
          source: |-
            curl --request POST \
              --url https://api.wokelo.ai/api/enterprise/company/enrich/ \
              --header 'Authorization: Bearer YOUR_TOKEN' \
              --header 'Content-Type: application/json' \
              --data '{
                "companies": ["tesla-motors", "stripe"],
                "sections": ["firmographics", "products", "funding"]
              }'
  /api/enterprise/industry/enrich/:
    post:
      tags:
        - Enrichment
      summary: Industry Deep Intelligence
      description: The Industry Insights API generates structured insights for a given industry topic (e.g., *"Warehouse automation"*). Optionally, you can refine the output by specifying sections, keywords, geography, a custom industry definition, and sample companies. Returns a `request_id` as a response.
      operationId: post_api_enterprise_industry_enrich
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  request_id:
                    type: string
                    description: Unique identifier for the request posted. Use this with the `/api/wkl-api/request/status/` endpoint to check the status
                description: '[FROM OFFICIAL DOCS] Response schema from industry-deep-intelligence.md.'
                example:
                  request_id: c574254f-137d-40d5-84f1-ac8fa38b8aa7
              example:
                request_id: c574254f-137d-40d5-84f1-ac8fa38b8aa7
        '202':
          description: Industry Insights- 202
          content:
            application/json:
              schema:
                type: object
                properties:
                  request_id:
                    type: string
                  status:
                    type: string
                required:
                  - request_id
                  - status
              example:
                request_id: c574254f-137d-40d5-84f1-ac8fa38b8aa7
                status: PENDING
        '401':
          $ref: '#/components/responses/UnauthorizedError'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                topic:
                  type: string
                  description: The industry topic to generate insights for (e.g. `"Enterprise SaaS security"`)
                sections:
                  type: array
                  items:
                    type: string
                  description: 'Sections to include in the report. Supported values: `market_size`, `quant_insights`, `trends_and_innovations`, `transactions_mna`, `transactions_fundraising`, `transactions_ipo`, `partnerships`, `tier1_intelligence`, `case_studies`, `industry_regulations`'
                parameters:
                  type: object
                  properties:
                    keywords:
                      type: array
                      items:
                        type: string
                      description: Keywords to focus the analysis on (e.g. `"zero trust"`, `"SIEM"`)
                    geography:
                      type: array
                      items:
                        type: string
                      description: Geographic scope for the report. It should be a comma separated list of ISO country codes. (Eg.. `["USA", "GBR"]`)
                    definition:
                      type: string
                      description: A custom definition of the industry to guide the report generation
                    sample_companies:
                      type: array
                      items:
                        type: string
                      description: Permalinks of representative companies in the industry
              description: '[FROM OFFICIAL DOCS] Request schema from industry-deep-intelligence.md.'
              required:
                - topic
            example:
              topic: Enterprise SaaS security
              sections:
                - market_size
                - trends_and_innovations
                - transactions_mna
              parameters:
                keywords:
                  - zero trust
                  - SIEM
                geography:
                  - USA
                definition: B2B software focused on enterprise cybersecurity
                sample_companies:
                  - crowdstrike
                  - sentinel
      security:
        - bearerAuth: []
      x-codeSamples:
        - label: JavaScript - Fetch
          lang: JavaScript
          source: |-
            const myHeaders = new Headers();
            myHeaders.append("Authorization", "Bearer YOUR_TOKEN");
            myHeaders.append("Content-Type", "application/json");

            const raw = JSON.stringify({
              "topic": "Enterprise SaaS security",
              "sections": [
                "market_size",
                "trends_and_innovations",
                "transactions_mna"
              ],
              "parameters": {
                "keywords": [
                  "zero trust",
                  "SIEM"
                ],
                "geography": [
                  "United States"
                ],
                "definition": "B2B software focused on enterprise cybersecurity",
                "sample_companies": [
                  "crowdstrike",
                  "sentinel"
                ]
              }
            });

            const requestOptions = {
              method: "POST",
              headers: myHeaders,
              body: raw,
              redirect: "follow"
            };

            fetch("https://api.wokelo.ai/api/enterprise/industry/enrich/", requestOptions)
              .then((response) => response.text())
              .then((result) => console.log(result))
              .catch((error) => console.error(error));
        - label: Python
          lang: Python
          source: |-
            import requests

            headers = {
                "Authorization": "Bearer YOUR_TOKEN",
                "Content-Type": "application/json"
            }
            payload = {
                "topic": "Enterprise SaaS security",
                "sections": ["market_size", "trends_and_innovations", "transactions_mna"],
                "parameters": {
                    "keywords": ["zero trust", "SIEM"],
                    "geography": ["USA"],
                    "definition": "B2B software focused on enterprise cybersecurity",
                    "sample_companies": ["crowdstrike", "sentinel"]
                }
            }
            response = requests.post(
                "https://api.wokelo.ai/api/enterprise/industry/enrich/",
                headers=headers, json=payload
            )
            print(response.json())
        - label: cURL
          lang: cURL
          source: |-
            curl --request POST \
              --url https://api.wokelo.ai/api/enterprise/industry/enrich/ \
              --header 'Authorization: Bearer YOUR_TOKEN' \
              --header 'Content-Type: application/json' \
              --data '{
                "topic": "Enterprise SaaS security",
                "sections": ["market_size", "trends_and_innovations", "transactions_mna"],
                "parameters": {
                  "keywords": ["zero trust", "SIEM"],
                  "geography": ["USA"],
                  "definition": "B2B software focused on enterprise cybersecurity",
                  "sample_companies": ["crowdstrike", "sentinel"]
                }
              }'
        - label: Go
          lang: Go
          source: |-
            package main

            import (
              "bytes"
              "encoding/json"
              "fmt"
              "io"
              "net/http"
            )

            func main() {
              payload := map[string]interface{}{
                "topic":    "Enterprise SaaS security",
                "sections": []string{"market_size", "trends_and_innovations", "transactions_mna"},
                "parameters": map[string]interface{}{
                  "keywords":         []string{"zero trust", "SIEM"},
                  "geography":        []string{"USA"},
                  "definition":       "B2B software focused on enterprise cybersecurity",
                  "sample_companies": []string{"crowdstrike", "sentinel"},
                },
              }
              body, _ := json.Marshal(payload)
              req, _ := http.NewRequest("POST", "https://api.wokelo.ai/api/enterprise/industry/enrich/", bytes.NewBuffer(body))
              req.Header.Set("Authorization", "Bearer YOUR_TOKEN")
              req.Header.Set("Content-Type", "application/json")
              resp, _ := http.DefaultClient.Do(req)
              defer resp.Body.Close()
              respBody, _ := io.ReadAll(resp.Body)
              fmt.Println(string(respBody))
            }
        - label: Java
          lang: Java
          source: |-
            import java.net.URI;
            import java.net.http.*;

            public class IndustryIntelligence {
              public static void main(String[] args) throws Exception {
                String body = """
                    {"topic":"Enterprise SaaS security",
                     "sections":["market_size","trends_and_innovations","transactions_mna"],
                     "parameters":{"keywords":["zero trust","SIEM"],"geography":["USA"],
                     "definition":"B2B software focused on enterprise cybersecurity",
                     "sample_companies":["crowdstrike","sentinel"]}}
                    """;
                HttpRequest request = HttpRequest.newBuilder()
                    .uri(URI.create("https://api.wokelo.ai/api/enterprise/industry/enrich/"))
                    .header("Authorization", "Bearer YOUR_TOKEN")
                    .header("Content-Type", "application/json")
                    .POST(HttpRequest.BodyPublishers.ofString(body))
                    .build();
                HttpResponse<String> response = HttpClient.newHttpClient()
                    .send(request, HttpResponse.BodyHandlers.ofString());
                System.out.println(response.body());
              }
            }
  /api/enterprise/market-map/enrich/:
    post:
      tags:
        - Discovery
      summary: Market Map
      description: The Market Map API generates a long list of companies operating in a given market (e.g., *"AI-powered CRM software"*), enriched with structured data. Optionally, you can refine the output by specifying keywords, sample companies, geography, company type, employee count, funding stage, and more. Returns request\_id as a response.
      operationId: post_api_enterprise_market-map_enrich
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  request_id:
                    type: string
                    description: Unique identifier for the request posted. Use this with the `/api/enterprise/request/status/` endpoint to check the status
                description: '[FROM OFFICIAL DOCS] Response schema from market-map.md.'
                example:
                  request_id: ed2ce223-3bd2-4a08-855f-79751bf1bd92
              example:
                request_id: ed2ce223-3bd2-4a08-855f-79751bf1bd92
        '202':
          description: Company Grid Market Map-202
          content:
            application/json:
              schema:
                type: object
                properties:
                  request_id:
                    type: string
                  status:
                    type: string
                required:
                  - request_id
                  - status
              example:
                request_id: ed2ce223-3bd2-4a08-855f-79751bf1bd92
                status: PENDING
        '401':
          $ref: '#/components/responses/UnauthorizedError'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                topic:
                  type: string
                  description: The market or product category to map (e.g. `"AI-powered CRM software"`)
                parameters:
                  type: object
                  properties:
                    detailed_query:
                      type: string
                      description: A more descriptive query to refine the market map scope
                    keywords:
                      type: array
                      items:
                        type: string
                      description: Keywords used to identify and filter relevant companies.
                    sample_companies:
                      type: array
                      items:
                        type: string
                      description: Permalinks of representative companies or their complete URLs to anchor the market map.
                    geography:
                      type: array
                      items:
                        type: string
                      description: Geographic scope. It should be a comma separated list of ISO country codes. (Eg.. `["USA", "GBR"]`)
                    company_type:
                      type: string
                      description: 'Type of company to include. Accepted values: `"private"`, `"public"`, `"all"`'
                    employee_count:
                      type: array
                      items:
                        type: string
                      description: 'Filter by employee headcount range. Pass an empty array to include all headcounts. Supporting array values: `1-10`, `11-50`, `51-100`, `101-250`, `251-500`, `501-1000`, `1001-5000`, `5001-10000`, `10000+`'
                    founded_year:
                      type: object
                      properties: {}
                      description: Filter by company founding year. Accepts `from` and/or `to` integer values
                    funding_stage:
                      type: array
                      items:
                        type: string
                      description: 'Filter by funding stage (e.g. `"Series A"`, `"Series B"`). Pass an empty array to include all stages. Supporting array values: `Non-Equity Assistance`, `Angel round`, `Pre-seed`, `Seed`, `Series A`, `Series B`, `Series C`, `Series D`, `Series E`, `Series F`, `Series G`, `Series H`, `Series I`, `Series J`, `Corporate-Funded`, `Debt-Funded`, `Private equity round`, `Others`'
                    total_funding:
                      type: object
                      properties: {}
                      description: Filter by total funding amount raised. Accepts `from` and/or `to` values
                    last_funding_round:
                      type: object
                      properties: {}
                      description: Filter by last funding round details. Accepts `from` and/or `to` values
                    revenue:
                      type: object
                      properties: {}
                      description: Filter by annual revenue. Accepts `from` and/or `to` values
                    ebitda:
                      type: object
                      properties: {}
                      description: Filter by EBITDA. Accepts `from` and/or `to` values
                    net_income:
                      type: object
                      properties: {}
                      description: Filter by net income. Accepts `from` and/or `to` values
                    ev_ebitda:
                      type: object
                      properties: {}
                      description: Filter by EV/EBITDA multiple. Accepts `from` and/or `to` values
              description: '[FROM OFFICIAL DOCS] Request schema from market-map.md.'
              required:
                - topic
            example:
              topic: AI-powered CRM software
              parameters:
                detailed_query: B2B CRM tools leveraging AI for sales automation
                keywords:
                  - AI
                  - CRM
                  - sales automation
                sample_companies:
                  - salesforce
                  - hubspot
                geography:
                  - USA
                company_type: private
                employee_count:
                  - 11-50
                funding_stage:
                  - Series A
                  - Series B
      security:
        - bearerAuth: []
      x-codeSamples:
        - label: JavaScript - Fetch
          lang: JavaScript
          source: |-
            const myHeaders = new Headers();
            myHeaders.append("Authorization", "Bearer YOUR_TOKEN");
            myHeaders.append("Content-Type", "application/json");

            const raw = JSON.stringify({
              "topic": "AI-powered CRM software",
              "parameters": {
                "detailed_query": "B2B CRM tools leveraging AI for sales automation",
                "keywords": [
                  "AI",
                  "CRM",
                  "sales automation"
                ],
                "sample_companies": [
                  "salesforce",
                  "hubspot"
                ],
                "geography": [
                  "United States"
                ],
                "company_type": "private",
                "employee_count": ["11-50"],
                "founded_year": { "min": 2015 },
                "funding_stage": [],
                "total_funding": {},
                "last_funding_round": {},
                "revenue": {},
                "ebitda": {},
                "net_income": {},
                "ev_ebitda": {}
              }
            });

            const requestOptions = {
              method: "POST",
              headers: myHeaders,
              body: raw,
              redirect: "follow"
            };

            fetch("https://api.wokelo.ai/api/enterprise/market-map/enrich/", requestOptions)
              .then((response) => response.text())
              .then((result) => console.log(result))
              .catch((error) => console.error(error));
        - label: Python
          lang: Python
          source: |-
            import requests

            headers = {
                "Authorization": "Bearer YOUR_TOKEN",
                "Content-Type": "application/json"
            }
            payload = {
                "topic": "AI-powered CRM software",
                "parameters": {
                    "detailed_query": "B2B CRM tools leveraging AI for sales automation",
                    "keywords": ["AI", "CRM", "sales automation"],
                    "sample_companies": ["salesforce", "hubspot"],
                    "geography": ["USA"],
                    "company_type": "private",
                    "employee_count": ["11-50"],
                    "founded_year": {"from": 2015},
                    "funding_stage": ["Series A", "Series B"]
                }
            }
            response = requests.post(
                "https://api.wokelo.ai/api/enterprise/market-map/enrich/",
                headers=headers, json=payload
            )
            print(response.json())
        - label: cURL
          lang: cURL
          source: |-
            curl --request POST \
              --url https://api.wokelo.ai/api/enterprise/market-map/enrich/ \
              --header 'Authorization: Bearer YOUR_TOKEN' \
              --header 'Content-Type: application/json' \
              --data '{
                "topic": "AI-powered CRM software",
                "parameters": {
                  "company_type": "private",
                  "employee_count": ["11-50"]
                }
              }'
        - label: Go
          lang: Go
          source: |-
            package main

            import (
              "bytes"
              "encoding/json"
              "fmt"
              "io"
              "net/http"
            )

            func main() {
              payload := map[string]interface{}{
                "topic": "AI-powered CRM software",
                "parameters": map[string]interface{}{
                  "company_type":   "private",
                  "employee_count": []string{"11-50"},
                },
              }
              body, _ := json.Marshal(payload)
              req, _ := http.NewRequest("POST", "https://api.wokelo.ai/api/enterprise/market-map/enrich/", bytes.NewBuffer(body))
              req.Header.Set("Authorization", "Bearer YOUR_TOKEN")
              req.Header.Set("Content-Type", "application/json")
              resp, _ := http.DefaultClient.Do(req)
              defer resp.Body.Close()
              respBody, _ := io.ReadAll(resp.Body)
              fmt.Println(string(respBody))
            }
        - label: Java
          lang: Java
          source: |-
            import java.net.URI;
            import java.net.http.*;

            public class MarketMap {
              public static void main(String[] args) throws Exception {
                String body = "{\"topic\":\"AI-powered CRM software\",\"parameters\":{\"company_type\":\"private\",\"employee_count\":[\"11-50\"]}}";
                HttpRequest request = HttpRequest.newBuilder()
                    .uri(URI.create("https://api.wokelo.ai/api/enterprise/market-map/enrich/"))
                    .header("Authorization", "Bearer YOUR_TOKEN")
                    .header("Content-Type", "application/json")
                    .POST(HttpRequest.BodyPublishers.ofString(body))
                    .build();
                HttpResponse<String> response = HttpClient.newHttpClient()
                    .send(request, HttpResponse.BodyHandlers.ofString());
                System.out.println(response.body());
              }
            }
  /api/enterprise/request/cancel:
    post:
      tags:
        - Supporting APIs
      summary: Request Cancel
      description: Cancels a request already submitted.
      operationId: post_api_enterprise_request_cancel
      responses:
        '200':
          description: Successful cancellation acknowledgement
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                description: Cancellation acknowledgement payload. The exact success body is not formally documented.
        '401':
          $ref: '#/components/responses/UnauthorizedError'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                request_id:
                  type: string
              required:
                - request_id
              description: '[DERIVED FROM EXAMPLE — not authoritative] Request schema from Postman raw body.'
            example:
              request_id: 5b0eff600-366f-465c-b795-68837043a2d3
      security:
        - bearerAuth: []
      x-codeSamples:
        - label: JavaScript - Fetch
          lang: JavaScript
          source: |-
            const myHeaders = new Headers();
            myHeaders.append("Authorization", "Bearer YOUR_TOKEN");
            myHeaders.append("Content-Type", "application/json");

            const raw = JSON.stringify({
              "request_id": "5b0eff600-366f-465c-b795-68837043a2d3"
            });

            const requestOptions = {
              method: "POST",
              headers: myHeaders,
              body: raw,
              redirect: "follow"
            };

            fetch("https://api.wokelo.ai/api/enterprise/request/cancel", requestOptions)
              .then((response) => response.text())
              .then((result) => console.log(result))
              .catch((error) => console.error(error));
        - label: Python
          lang: Python
          source: |-
            import requests

            headers = {"Authorization": "Bearer YOUR_TOKEN", "Content-Type": "application/json"}
            payload = {"request_id": "5b0eff600-366f-465c-b795-68837043a2d3"}
            response = requests.post(
                "https://api.wokelo.ai/api/enterprise/request/cancel",
                headers=headers, json=payload
            )
            print(response.json())
        - label: cURL
          lang: cURL
          source: |-
            curl --request POST \
              --url https://api.wokelo.ai/api/enterprise/request/cancel \
              --header 'Authorization: Bearer YOUR_TOKEN' \
              --header 'Content-Type: application/json' \
              --data '{"request_id":"5b0eff600-366f-465c-b795-68837043a2d3"}'
        - label: Go
          lang: Go
          source: |-
            package main

            import (
              "bytes"
              "fmt"
              "io"
              "net/http"
            )

            func main() {
              body := []byte(`{"request_id":"5b0eff600-366f-465c-b795-68837043a2d3"}`)
              req, _ := http.NewRequest("POST", "https://api.wokelo.ai/api/enterprise/request/cancel", bytes.NewBuffer(body))
              req.Header.Set("Authorization", "Bearer YOUR_TOKEN")
              req.Header.Set("Content-Type", "application/json")
              resp, _ := http.DefaultClient.Do(req)
              defer resp.Body.Close()
              respBody, _ := io.ReadAll(resp.Body)
              fmt.Println(string(respBody))
            }
        - label: Java
          lang: Java
          source: |-
            import java.net.URI;
            import java.net.http.*;

            public class RequestCancel {
              public static void main(String[] args) throws Exception {
                HttpRequest request = HttpRequest.newBuilder()
                    .uri(URI.create("https://api.wokelo.ai/api/enterprise/request/cancel"))
                    .header("Authorization", "Bearer YOUR_TOKEN")
                    .header("Content-Type", "application/json")
                    .POST(HttpRequest.BodyPublishers.ofString("{\"request_id\":\"5b0eff600-366f-465c-b795-68837043a2d3\"}"))
                    .build();
                HttpResponse<String> response = HttpClient.newHttpClient()
                    .send(request, HttpResponse.BodyHandlers.ofString());
                System.out.println(response.body());
              }
            }
  /api/enterprise/target-screening/enrich/:
    post:
      tags:
        - Discovery
      summary: Target Screening
      description: The Target Screening API generates a long list of potential acquisition targets for a given acquirer, enriched with structured data. Optionally, you can refine the output by specifying keywords, sample companies, geography, company type, employee count, funding stage, and a detailed query to narrow the search scope. Returns a request\_id as a reponse.
      operationId: post_api_enterprise_target-screening_enrich
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  request_id:
                    type: string
                    description: Unique identifier for the request posted. Use this with the `/api/enterprise/request/status/` endpoint to check the status
                description: '[FROM OFFICIAL DOCS] Response schema from target-screening.md.'
                example:
                  request_id: 8583f59e-0412-4f1e-81e5-13cc70349cb6
              example:
                request_id: 8583f59e-0412-4f1e-81e5-13cc70349cb6
        '202':
          description: Company Grid Target Screening-202
          content:
            application/json:
              schema:
                type: object
                properties:
                  request_id:
                    type: string
                  status:
                    type: string
                required:
                  - request_id
                  - status
              example:
                request_id: 8583f59e-0412-4f1e-81e5-13cc70349cb6
                status: PENDING
        '401':
          $ref: '#/components/responses/UnauthorizedError'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                topic:
                  type: string
                  description: Industry/ product domain. Default will be the product category of the acquiring company.
                company:
                  type: string
                  description: Permalink of the acquiring company or complete URL (e.g. `"microsoft"` OR `"https://www.microsoft.com/"`)
                parameters:
                  type: object
                  properties:
                    detailed_query:
                      type: string
                      description: A descriptive query to refine the target search scope.
                    keywords:
                      type: array
                      items:
                        type: string
                      description: Keywords used to identify and filter relevant target companies
                    sample_companies:
                      type: array
                      items:
                        type: string
                      description: Permalinks of representative companies to anchor the target search
                    geography:
                      type: array
                      items:
                        type: string
                      description: Geographic scope. It should be a comma separated list of ISO country codes. (Eg.. `["USA", "GBR"]`)
                    company_type:
                      type: string
                      description: 'Type of company to include. Accepted values: `"private"`, `"public"`, `"all"`'
                    employee_count:
                      type: array
                      items:
                        type: string
                      description: 'Filter by employee headcount range. Pass an empty array to include all headcounts. Supporting array values: `1-10`, `11-50`, `51-100`, `101-250`, `251-500`, `501-1000`, `1001-5000`, `5001-10000`, `10000+`'
                    founded_year:
                      type: object
                      properties: {}
                      description: Filter by company founding year. Accepts `from` and/or `to` integer values
                    funding_stage:
                      type: array
                      items:
                        type: string
                      description: 'Filter by funding stage (e.g. `"Series B"`, `"Series C"`). Pass an empty array to include all stages. Supporting array values: `Non-Equity Assistance`, `Angel round`, `Pre-seed`, `Seed`, `Series A`, `Series B`, `Series C`, `Series D`, `Series E`, `Series F`, `Series G`, `Series H`, `Series I`, `Series J`, `Corporate-Funded`, `Debt-Funded`, `Private equity round`, `Others`'
                    total_funding:
                      type: object
                      properties: {}
                      description: Filter by total funding amount raised (in USD). Accepts `from` and/or `to` values
                    revenue:
                      type: object
                      properties: {}
                      description: Filter by annual revenue (in USD). Accepts `from` and/or `to` values
              description: '[FROM OFFICIAL DOCS] Request schema from target-screening.md.'
              required:
                - company
            example:
              company: microsoft
              parameters:
                detailed_query: Looking for B2B SaaS companies in the cybersecurity space
                keywords:
                  - zero trust
                  - endpoint security
                geography:
                  - USA
                company_type: private
      security:
        - bearerAuth: []
      x-codeSamples:
        - label: JavaScript - Fetch
          lang: JavaScript
          source: |-
            const myHeaders = new Headers();
            myHeaders.append("Authorization", "Bearer YOUR_TOKEN");
            myHeaders.append("Content-Type", "application/json");

            const raw = JSON.stringify({
              "company": "microsoft",
              "parameters": {
                "detailed_query": "Looking for B2B SaaS companies in the cybersecurity space",
                "keywords": ["zero trust", "endpoint security"],
                "sample_companies": ["crowdstrike", "sentinel"],
                "geography": ["United States"],
                "company_type": "private",
                "employee_count": [],
                "founded_year": {},
                "funding_stage": [],
                "total_funding": {},
                "revenue": {}
              }
            });

            const requestOptions = {
              method: "POST",
              headers: myHeaders,
              body: raw,
              redirect: "follow"
            };

            fetch("https://api.wokelo.ai/api/enterprise/target-screening/enrich/", requestOptions)
              .then((response) => response.text())
              .then((result) => console.log(result))
              .catch((error) => console.error(error));
        - label: Python
          lang: Python
          source: |-
            import requests

            headers = {"Authorization": "Bearer YOUR_TOKEN", "Content-Type": "application/json"}
            payload = {
                "company": "microsoft",
                "parameters": {
                    "detailed_query": "Looking for B2B SaaS companies in the cybersecurity space",
                    "keywords": ["zero trust", "endpoint security"],
                    "geography": ["USA"],
                    "company_type": "private"
                }
            }
            response = requests.post(
                "https://api.wokelo.ai/api/enterprise/target-screening/enrich/",
                headers=headers, json=payload
            )
            print(response.json())
        - label: cURL
          lang: cURL
          source: |-
            curl --request POST \
              --url https://api.wokelo.ai/api/enterprise/target-screening/enrich/ \
              --header 'Authorization: Bearer YOUR_TOKEN' \
              --header 'Content-Type: application/json' \
              --data '{"company":"microsoft","parameters":{"company_type":"private"}}'
        - label: Go
          lang: Go
          source: |-
            package main

            import (
              "bytes"
              "encoding/json"
              "fmt"
              "io"
              "net/http"
            )

            func main() {
              payload := map[string]interface{}{
                "company": "microsoft",
                "parameters": map[string]interface{}{
                  "company_type": "private",
                  "geography":    []string{"USA"},
                },
              }
              body, _ := json.Marshal(payload)
              req, _ := http.NewRequest("POST", "https://api.wokelo.ai/api/enterprise/target-screening/enrich/", bytes.NewBuffer(body))
              req.Header.Set("Authorization", "Bearer YOUR_TOKEN")
              req.Header.Set("Content-Type", "application/json")
              resp, _ := http.DefaultClient.Do(req)
              defer resp.Body.Close()
              respBody, _ := io.ReadAll(resp.Body)
              fmt.Println(string(respBody))
            }
        - label: Java
          lang: Java
          source: |-
            import java.net.URI;
            import java.net.http.*;

            public class TargetScreening {
              public static void main(String[] args) throws Exception {
                String body = "{\"company\":\"microsoft\",\"parameters\":{\"company_type\":\"private\"}}";
                HttpRequest request = HttpRequest.newBuilder()
                    .uri(URI.create("https://api.wokelo.ai/api/enterprise/target-screening/enrich/"))
                    .header("Authorization", "Bearer YOUR_TOKEN")
                    .header("Content-Type", "application/json")
                    .POST(HttpRequest.BodyPublishers.ofString(body))
                    .build();
                HttpResponse<String> response = HttpClient.newHttpClient()
                    .send(request, HttpResponse.BodyHandlers.ofString());
                System.out.println(response.body());
              }
            }
  /api/news/fetch/:
    post:
      tags:
        - Monitoring
      summary: '[Legacy] Fetch News Report'
      description: This endpoint retrieves the news items from an existing news report run via the Get News Report endpoint `/api/news/start/` news. It returns the news items as a JSON
      operationId: post_api_news_fetch
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  report_id:
                    type: integer
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        ai_summary:
                          type: string
                        type:
                          type: string
                        url:
                          type: string
                        title:
                          type: string
                      required:
                        - ai_summary
                        - type
                        - url
                        - title
                required:
                  - report_id
                  - data
                description: '[FROM OFFICIAL DOCS] Response schema derived from example in legacy-fetch-news-report.md.'
              example:
                report_id: 72053
                data:
                  - ai_summary: Wokelo has announced a minority equity investment from KPMG LLP, marking a significant step in their growth strategy.
                    type: Investments
                    url: https://kpmg.com/us/en/media/news/kpmg-wokelo-investment-2024.html
                    title: Wokelo Announces Minority Equity Investment from KPMG LLP
        '400':
          description: Fetch news
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                required:
                  - error
              example:
                error: Report not found.
        '401':
          $ref: '#/components/responses/UnauthorizedError'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                report_id:
                  type: integer
                  description: Report ID of the news report from which the news is to be retrieved
                page:
                  type: integer
                  description: 'Page number from which the news is to be returned in the response. Default: 1'
                page_size:
                  type: integer
                  description: 'Number of news items per page. Default: 500'
              description: '[FROM OFFICIAL DOCS] Request schema from legacy-fetch-news-report.md.'
              required:
                - report_id
            example:
              report_id: 72053
              page: 1
              page_size: 500
      security:
        - bearerAuth: []
      x-codeSamples:
        - label: JavaScript - Fetch
          lang: JavaScript
          source: |-
            const myHeaders = new Headers();
            myHeaders.append("Content-Type", "application/json");
            myHeaders.append("Authorization", "Bearer YOUR_TOKEN");

            const raw = JSON.stringify({
              "report_id": 72053
            });

            const requestOptions = {
              method: "POST",
              headers: myHeaders,
              body: raw,
              redirect: "follow"
            };

            fetch("https://api.wokelo.ai/api/news/fetch/", requestOptions)
              .then((response) => response.text())
              .then((result) => console.log(result))
              .catch((error) => console.error(error));
        - label: Python
          lang: Python
          source: |-
            import requests

            headers = {
                "Content-Type": "application/json",
                "Authorization": "Bearer YOUR_TOKEN"
            }
            payload = {"report_id": 72053, "page": 1, "page_size": 500}
            response = requests.post(
                "https://api.wokelo.ai/api/news/fetch/",
                headers=headers, json=payload
            )
            print(response.json())
        - label: cURL
          lang: cURL
          source: |-
            curl --request POST \
              --url https://api.wokelo.ai/api/news/fetch/ \
              --header 'Authorization: Bearer YOUR_TOKEN' \
              --header 'Content-Type: application/json' \
              --data '{"report_id": 72053}'
        - label: Go
          lang: Go
          source: |-
            package main

            import (
              "bytes"
              "fmt"
              "io"
              "net/http"
            )

            func main() {
              body := []byte(`{"report_id":72053}`)
              req, _ := http.NewRequest("POST", "https://api.wokelo.ai/api/news/fetch/", bytes.NewBuffer(body))
              req.Header.Set("Authorization", "Bearer YOUR_TOKEN")
              req.Header.Set("Content-Type", "application/json")
              resp, _ := http.DefaultClient.Do(req)
              defer resp.Body.Close()
              respBody, _ := io.ReadAll(resp.Body)
              fmt.Println(string(respBody))
            }
        - label: Java
          lang: Java
          source: |-
            import java.net.URI;
            import java.net.http.*;

            public class FetchNewsReport {
              public static void main(String[] args) throws Exception {
                HttpRequest request = HttpRequest.newBuilder()
                    .uri(URI.create("https://api.wokelo.ai/api/news/fetch/"))
                    .header("Authorization", "Bearer YOUR_TOKEN")
                    .header("Content-Type", "application/json")
                    .POST(HttpRequest.BodyPublishers.ofString("{\"report_id\":72053}"))
                    .build();
                HttpResponse<String> response = HttpClient.newHttpClient()
                    .send(request, HttpResponse.BodyHandlers.ofString());
                System.out.println(response.body());
              }
            }
  /api/news/start/:
    post:
      tags:
        - Monitoring
      summary: '[Legacy] Initiate News Report'
      description: This endpoint initiates news report on a company
      operationId: post_api_news_start
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  report_id:
                    type: integer
                required:
                  - report_id
                description: '[FROM OFFICIAL DOCS] Response schema derived from example in legacy-initiate-news-report.md.'
              example:
                report_id: 2000156
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '404':
          description: Get news report
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                required:
                  - message
              example:
                message: Invalid payload. permalink or website required.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                whitelisted_domains:
                  type: array
                  items: {}
                  description: Domains of news sources from which to fetch news
                blacklisted_domains:
                  type: array
                  items: {}
                  description: News source domains to exclude from search
                news_limit:
                  type: integer
                  description: 'Number of news items to retrieve (Default: 1000)'
                start_date:
                  type: string
                  description: 'Date from which news will be retrieved. * Default: 2 years * Format: `YYYY-MM-DD`'
                end_date:
                  type: string
                  description: 'Date till which news will be retrieved. * Default: current date * Format: `YYYY-MM-DD`'
                website:
                  type: string
                  description: Website of the target company
                permalink:
                  type: string
                  description: Crunchbase permalink of the target company
              description: '[FROM OFFICIAL DOCS] Request schema from legacy-initiate-news-report.md.'
              required:
                - website
                - permalink
            example:
              website: wokelo.ai
              permalink: wokelo
      security:
        - bearerAuth: []
      x-codeSamples:
        - label: JavaScript - Fetch
          lang: JavaScript
          source: |-
            const myHeaders = new Headers();
            myHeaders.append("Content-Type", "application/json");
            myHeaders.append("Authorization", "Bearer YOUR_TOKEN");

            const raw = JSON.stringify({
              "website": "wokelo.ai"
            });

            const requestOptions = {
              method: "POST",
              headers: myHeaders,
              body: raw,
              redirect: "follow"
            };

            fetch("https://api.wokelo.ai/api/news/start/", requestOptions)
              .then((response) => response.text())
              .then((result) => console.log(result))
              .catch((error) => console.error(error));
        - label: Python
          lang: Python
          source: |-
            import requests

            headers = {
                "Content-Type": "application/json",
                "Authorization": "Bearer YOUR_TOKEN"
            }
            payload = {"website": "wokelo.ai"}
            response = requests.post(
                "https://api.wokelo.ai/api/news/start/",
                headers=headers, json=payload
            )
            print(response.json())
        - label: cURL
          lang: cURL
          source: |-
            curl --request POST \
              --url https://api.wokelo.ai/api/news/start/ \
              --header 'Authorization: Bearer YOUR_TOKEN' \
              --header 'Content-Type: application/json' \
              --data '{"website": "wokelo.ai"}'
        - label: Go
          lang: Go
          source: |-
            package main

            import (
              "bytes"
              "fmt"
              "io"
              "net/http"
            )

            func main() {
              body := []byte(`{"website":"wokelo.ai"}`)
              req, _ := http.NewRequest("POST", "https://api.wokelo.ai/api/news/start/", bytes.NewBuffer(body))
              req.Header.Set("Authorization", "Bearer YOUR_TOKEN")
              req.Header.Set("Content-Type", "application/json")
              resp, _ := http.DefaultClient.Do(req)
              defer resp.Body.Close()
              respBody, _ := io.ReadAll(resp.Body)
              fmt.Println(string(respBody))
            }
        - label: Java
          lang: Java
          source: |-
            import java.net.URI;
            import java.net.http.*;

            public class InitiateNewsReport {
              public static void main(String[] args) throws Exception {
                HttpRequest request = HttpRequest.newBuilder()
                    .uri(URI.create("https://api.wokelo.ai/api/news/start/"))
                    .header("Authorization", "Bearer YOUR_TOKEN")
                    .header("Content-Type", "application/json")
                    .POST(HttpRequest.BodyPublishers.ofString("{\"website\":\"wokelo.ai\"}"))
                    .build();
                HttpResponse<String> response = HttpClient.newHttpClient()
                    .send(request, HttpResponse.BodyHandlers.ofString());
                System.out.println(response.body());
              }
            }
  /api/wkl/notebook/configuration/:
    post:
      tags:
        - Supporting APIs
      summary: Notebook Configuration
      description: Retrieves and returns the settings you originally configured while initiating the report.
      operationId: post_api_wkl_notebook_configuration
      responses:
        '200':
          description: Notebook configuration returned successfully
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                description: Notebook configuration object. The docs describe this as the original workflow configuration and do not formalize the shape.
        '401':
          $ref: '#/components/responses/UnauthorizedError'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                notebook_id:
                  type: integer
                  description: Report ID of the notebook for which the configuration is to be retrieved
              description: '[FROM OFFICIAL DOCS] Request schema from notebook-configuration.md.'
              required:
                - notebook_id
            example:
              notebook_id: 103737
      security:
        - bearerAuth: []
      x-codeSamples:
        - label: JavaScript - Fetch
          lang: JavaScript
          source: |-
            const myHeaders = new Headers();
            myHeaders.append("Authorization", "Bearer YOUR_TOKEN");
            myHeaders.append("Content-Type", "application/json");

            const raw = JSON.stringify({
              "notebook_id": 103737
            });

            const requestOptions = {
              method: "POST",
              headers: myHeaders,
              body: raw,
              redirect: "follow"
            };

            fetch("https://api.wokelo.ai/api/wkl/notebook/configuration/", requestOptions)
              .then((response) => response.text())
              .then((result) => console.log(result))
              .catch((error) => console.error(error));
        - label: Python
          lang: Python
          source: |-
            import requests

            headers = {
                "Authorization": "Bearer YOUR_TOKEN",
                "Content-Type": "application/json"
            }
            payload = {"notebook_id": 103737}
            response = requests.post(
                "https://api.wokelo.ai/api/wkl/notebook/configuration/",
                headers=headers,
                json=payload
            )
            print(response.json())
        - label: cURL
          lang: cURL
          source: |-
            curl --request POST \
              --url https://api.wokelo.ai/api/wkl/notebook/configuration/ \
              --header 'Authorization: Bearer YOUR_TOKEN' \
              --header 'Content-Type: application/json' \
              --data '{"notebook_id": 103737}'
        - label: Go
          lang: Go
          source: |-
            package main

            import (
              "bytes"
              "encoding/json"
              "fmt"
              "io"
              "net/http"
            )

            func main() {
              payload := map[string]int{"notebook_id": 103737}
              body, _ := json.Marshal(payload)
              req, _ := http.NewRequest("POST", "https://api.wokelo.ai/api/wkl/notebook/configuration/", bytes.NewBuffer(body))
              req.Header.Set("Authorization", "Bearer YOUR_TOKEN")
              req.Header.Set("Content-Type", "application/json")
              resp, _ := http.DefaultClient.Do(req)
              defer resp.Body.Close()
              respBody, _ := io.ReadAll(resp.Body)
              fmt.Println(string(respBody))
            }
        - label: Java
          lang: Java
          source: |-
            import java.net.URI;
            import java.net.http.*;

            public class NotebookConfiguration {
              public static void main(String[] args) throws Exception {
                String body = "{\"notebook_id\":103737}";
                HttpRequest request = HttpRequest.newBuilder()
                    .uri(URI.create("https://api.wokelo.ai/api/wkl/notebook/configuration/"))
                    .header("Authorization", "Bearer YOUR_TOKEN")
                    .header("Content-Type", "application/json")
                    .POST(HttpRequest.BodyPublishers.ofString(body))
                    .build();
                HttpResponse<String> response = HttpClient.newHttpClient()
                    .send(request, HttpResponse.BodyHandlers.ofString());
                System.out.println(response.body());
              }
            }
  /api/workflow_manager/start/:
    post:
      tags:
        - Workflow Automation
      summary: Start a workflow (Company Research, Industry Research, Peer Comparison, or Custom).
      description: Start a workflow-driven report through Wokelo's workflow manager. This shared endpoint supports Company Research (`company_primer`), Industry Research (`industry_primer`), Peer Comparison (`player_comparison`), and Custom Workflows (dashboard-configured workflow IDs). The request body is modeled as a discriminator-based union across those variants.
      operationId: post_api_workflow_manager_start
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  report_id:
                    type: integer
                    description: '[FROM EXAMPLE — not in formal docs schema] Report identifier returned when the workflow request succeeds.'
                description: '[FROM OFFICIAL DOCS] Response schema from company-research.md.'
                example:
                  report_id: 123345
              example:
                report_id: 123345
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                required:
                  - message
              example:
                message: Invalid payload. search query is required.
        '401':
          $ref: '#/components/responses/UnauthorizedError'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              oneOf:
                - $ref: '#/components/schemas/CompanyResearchRequest'
                - $ref: '#/components/schemas/IndustryResearchRequest'
                - $ref: '#/components/schemas/PeerComparisonRequest'
                - $ref: '#/components/schemas/CustomWorkflowRequest'
              discriminator:
                propertyName: workflow
                mapping:
                  company_primer: '#/components/schemas/CompanyResearchRequest'
                  industry_primer: '#/components/schemas/IndustryResearchRequest'
                  player_comparison: '#/components/schemas/PeerComparisonRequest'
                  industry_custom_fc44748: '#/components/schemas/CustomWorkflowRequest'
              description: '[FROM OFFICIAL DOCS] Workflow union request body.'
            examples:
              company_research:
                value:
                  workflow: company_primer
                  permalink: wokelo-ai
                  workbook_name: wokelo-ai
              custom_workflows:
                value:
                  workflow: industry_custom_fc44748
                  industry_research_topic: Electric vehicles
              industry_research:
                value:
                  workflow: industry_primer
                  industry: gaming
                  workbook_name: Industry Research - Gaming
              peer_comparison:
                value:
                  workflow: player_comparison
                  websites:
                    - stripe.com
                    - paypal.com
                  workbook_name: Test report
      security:
        - bearerAuth: []
      x-codeSamples:
        - lang: Python
          label: Company Research · Python
          source: |-
            import requests

            headers = {"Content-Type": "application/json", "Authorization": "Bearer YOUR_TOKEN"}
            payload = {"workflow": "company_primer", "permalink": "wokelo-ai", "workbook_name": "wokelo-ai"}
            response = requests.post("https://api.wokelo.ai/api/workflow_manager/start/", headers=headers, json=payload)
            print(response.json())
        - lang: cURL
          label: Company Research · cURL
          source: |-
            curl --request POST \
              --url https://api.wokelo.ai/api/workflow_manager/start/ \
              --header 'Authorization: Bearer YOUR_TOKEN' \
              --header 'Content-Type: application/json' \
              --data '{"workflow":"company_primer","permalink":"wokelo-ai","workbook_name":"wokelo-ai"}'
        - lang: Python
          label: Custom Workflows · Python
          source: |-
            import requests

            headers = {"Content-Type": "application/json", "Authorization": "Bearer YOUR_TOKEN"}
            payload = {"workflow": "industry_custom_fc44748", "industry_research_topic": "Electric vehicles"}
            response = requests.post("https://api.wokelo.ai/api/workflow_manager/start/", headers=headers, json=payload)
            print(response.json())
        - lang: cURL
          label: Custom Workflows · cURL
          source: |-
            curl --request POST \
              --url https://api.wokelo.ai/api/workflow_manager/start/ \
              --header 'Authorization: Bearer YOUR_TOKEN' \
              --header 'Content-Type: application/json' \
              --data '{"workflow":"industry_custom_fc44748","industry_research_topic":"Electric vehicles"}'
        - lang: Python
          label: Industry Research · Python
          source: |-
            import requests

            headers = {"Content-Type": "application/json", "Authorization": "Bearer YOUR_TOKEN"}
            payload = {"workflow": "industry_primer", "industry": "gaming", "workbook_name": "Industry Research - Gaming"}
            response = requests.post("https://api.wokelo.ai/api/workflow_manager/start/", headers=headers, json=payload)
            print(response.json())
        - lang: cURL
          label: Industry Research · cURL
          source: |-
            curl --request POST \
              --url https://api.wokelo.ai/api/workflow_manager/start/ \
              --header 'Authorization: Bearer YOUR_TOKEN' \
              --header 'Content-Type: application/json' \
              --data '{"workflow":"industry_primer","industry":"gaming","workbook_name":"Industry Research - Gaming"}'
        - lang: Python
          label: Peer Comparison · Python
          source: |-
            import requests

            headers = {"Content-Type": "application/json", "Authorization": "Bearer YOUR_TOKEN"}
            payload = {"workflow": "player_comparison", "websites": ["stripe.com", "paypal.com"], "workbook_name": "Test report"}
            response = requests.post("https://api.wokelo.ai/api/workflow_manager/start/", headers=headers, json=payload)
            print(response.json())
        - lang: cURL
          label: Peer Comparison · cURL
          source: |-
            curl --request POST \
              --url https://api.wokelo.ai/api/workflow_manager/start/ \
              --header 'Authorization: Bearer YOUR_TOKEN' \
              --header 'Content-Type: application/json' \
              --data '{"workflow":"player_comparison","websites":["stripe.com","paypal.com"],"workbook_name":"Test report"}'
  /auth/token/:
    post:
      tags:
        - Authentication
      summary: Login
      description: Obtain a JSON Web Token (JWT) for subsequent API authentication
      operationId: post_auth_token
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  access_token:
                    type: string
                    description: JWT for authenticated API access
                  expires_in:
                    type: integer
                    description: Token validity duration in seconds
                  token_type:
                    type: string
                    description: Type of authentication token
                  scope:
                    type: string
                    description: Authorization scope of the token
                  refresh_token:
                    type: string
                    description: Token used to obtain a new access token
                description: '[FROM OFFICIAL DOCS] Response schema from authentication.md.'
                example:
                  access_token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
                  expires_in: 2628288
                  token_type: Bearer
                  scope: read write
                  refresh_token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
              example:
                access_token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
                expires_in: 2628288
                token_type: Bearer
                scope: read write
                refresh_token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
        '401':
          description: Login
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                required:
                  - error
              example:
                error: invalid_client
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                client_id:
                  type: string
                  description: Client identifier
                client_secret:
                  type: string
                  description: Client secret
                username:
                  type: string
                  description: Username
                password:
                  type: string
                  description: Password
                grant_type:
                  type: string
                  description: Grant type
              description: '[FROM OFFICIAL DOCS] Multipart login form.'
              required:
                - client_id
                - client_secret
                - username
                - password
                - grant_type
            example:
              client_id: YOUR_CLIENT_ID
              client_secret: YOUR_CLIENT_SECRET
              username: sam@abconsulting.com
              password: password
              grant_type: password
      security: []
      x-codeSamples:
        - label: JavaScript - Fetch
          lang: JavaScript
          source: |-
            const formdata = new FormData();
            formdata.append("username", "sam@abconsulting.com");
            formdata.append("password", "password");
            formdata.append("grant_type", "password");
            formdata.append("client_id", "R9L25HMhvxp33N4ws2PYBqVTMclSnXKjdf8E4Mf");
            formdata.append("client_secret", "NmwXR8KYjUnpqs2hwmHJHBLTNPV4x7DtZA5ScK");

            const requestOptions = {
              method: "POST",
              body: formdata,
              redirect: "follow"
            };

            fetch("https://api.wokelo.ai/auth/token/", requestOptions)
              .then((response) => response.text())
              .then((result) => console.log(result))
              .catch((error) => console.error(error));
        - label: Python
          lang: Python
          source: |-
            import requests

            formdata = {
                "username": "sam@abconsulting.com",
                "password": "password",
                "grant_type": "password",
                "client_id": "YOUR_CLIENT_ID",
                "client_secret": "YOUR_CLIENT_SECRET",
            }

            response = requests.post("https://api.wokelo.ai/auth/token/", data=formdata)
            print(response.json())
        - label: cURL
          lang: cURL
          source: |-
            curl --request POST \
              --url https://api.wokelo.ai/auth/token/ \
              --form username=sam@abconsulting.com \
              --form password=password \
              --form grant_type=password \
              --form client_id=YOUR_CLIENT_ID \
              --form client_secret=YOUR_CLIENT_SECRET
        - label: Go
          lang: Go
          source: |-
            package main

            import (
              "fmt"
              "net/http"
              "net/url"
              "io"
            )

            func main() {
              formData := url.Values{
                "username":      {"sam@abconsulting.com"},
                "password":      {"password"},
                "grant_type":    {"password"},
                "client_id":     {"YOUR_CLIENT_ID"},
                "client_secret": {"YOUR_CLIENT_SECRET"},
              }
              resp, _ := http.PostForm("https://api.wokelo.ai/auth/token/", formData)
              defer resp.Body.Close()
              body, _ := io.ReadAll(resp.Body)
              fmt.Println(string(body))
            }
        - label: Java
          lang: Java
          source: |-
            import java.net.URI;
            import java.net.http.*;
            import java.net.URLEncoder;
            import java.nio.charset.StandardCharsets;

            public class WokeloAuth {
              public static void main(String[] args) throws Exception {
                String body = "username=" + URLEncoder.encode("sam@abconsulting.com", StandardCharsets.UTF_8)
                    + "&password=password&grant_type=password"
                    + "&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET";

                HttpRequest request = HttpRequest.newBuilder()
                    .uri(URI.create("https://api.wokelo.ai/auth/token/"))
                    .header("Content-Type", "application/x-www-form-urlencoded")
                    .POST(HttpRequest.BodyPublishers.ofString(body))
                    .build();

                HttpResponse<String> response = HttpClient.newHttpClient()
                    .send(request, HttpResponse.BodyHandlers.ofString());
                System.out.println(response.body());
              }
            }
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: 'Use `Authorization: Bearer <JWT>` for authenticated requests. Obtain the token from `POST /auth/token/` and pass it in the request header.'
  schemas:
    CompanyInstantEnrichmentRequest:
      type: object
      properties:
        companies:
          type: array
          items:
            type: string
          description: List of permalinks/ URLs of the companies to enrich E.g. `"tesla-motors"`, `"stripe"` OR `"https://tesla.com"`
        sections:
          type: array
          items:
            type: string
            enum:
              - firmographics
              - products
              - headcount
              - funding
              - public_company_financials
              - uk_private_company_financials
              - acquisitions
              - investments
              - website_traffic
          description: 'Sections of data to include in the enrichment. Supported values: `firmographics`, `products`, `headcount`, `funding`, `public_company_financials`, `uk_private_company_financials`, `acquisitions`, `investments`, `website_traffic` Default: all'
          minItems: 1
        parameters:
          type: object
          properties:
            custom_fields:
              type: array
              items:
                type: object
                properties:
                  field_name:
                    type: string
                    description: Name of the custom field. Required if `custom_fields` is used.
                  type:
                    type: string
                    description: 'Data type of the field (e.g. `text`). Supported values: `text`. Required if `custom_fields` is used.'
                  prompt:
                    type: string
                    description: Prompt used to generate the custom field value. Required if `custom_fields` is used.
              description: List of custom fields to compute for each company
      description: '[FROM OFFICIAL DOCS] Instant Enrichment variant using the instant-enrichment `sections` vocabulary.'
      required:
        - companies
        - sections
      example:
        companies:
          - tesla-motors
          - stripe
        sections:
          - firmographics
          - products
          - funding
    CompanyDeepIntelligenceRequest:
      type: object
      properties:
        companies:
          type: array
          items:
            type: string
          description: List of permalinks/ URLs of the companies (e.g. `"tesla-motors"`, `"stripe"` OR `"https://tesla.com"`)
        sections:
          type: array
          items:
            type: string
            enum:
              - products_and_services
              - product_launches
              - strategic_initiatives
              - partnerships
              - business_model
              - key_customers
              - management_profiles
              - employee_sentiment
              - product_sentiment
          description: 'Sections of data to include in the output. Supported values: `products_and_services`, `product_launches`, `strategic_initiatives`, `partnerships`, `business_model`, `key_customers`, `management_profiles`, `employee_sentiment`, `product_sentiment`'
          minItems: 1
        parameters:
          type: object
          properties:
            custom_fields:
              type: array
              items:
                type: object
                properties:
                  field_name:
                    type: string
                    description: Name of the custom field. Required if `custom_fields` is used.
                  type:
                    type: string
                    description: 'Data type of the field (e.g. `text`). Supported Value: `text`. Required if `custom_fields` is used.'
                  prompt:
                    type: string
                    description: Prompt used to generate the custom field value. Required if `custom_fields` is used.
              description: List of custom fields to compute for each company
      description: '[FROM OFFICIAL DOCS] Deep Intelligence variant using the deep-intelligence `sections` vocabulary.'
      required:
        - companies
        - sections
      example:
        companies:
          - tesla-motors
          - stripe
        sections:
          - products_and_services
          - product_launches
        parameters:
          custom_fields:
            - field_name: AI Readiness
              type: text
              prompt: Rate this company's AI readiness on a scale of 1-10 with reasoning
    CompanyResearchRequest:
      type: object
      properties:
        industry:
          type: string
          description: Company's industry. If not provided, Wokelo will auto-detect the industry
        permalink:
          type: string
          description: Crunchbase permalink of the company. Provide either this or `website`.
        website:
          type: string
          description: Website of the company. Provide either this or `permalink`.
        workflow:
          type: string
          description: '`company_primer`'
          enum:
            - company_primer
        workbook_name:
          type: string
          description: Name with which the workbook will be saved
        custom_files:
          type: array
          items:
            type: object
            properties: {}
          description: Files to include in the report. Use `fileName` values from the file upload response
      description: '[FROM OFFICIAL DOCS] Company Research variant with workflow=`company_primer`.'
      required:
        - workflow
      example:
        workflow: company_primer
        permalink: wokelo-ai
        workbook_name: wokelo-ai
    IndustryResearchRequest:
      type: object
      properties:
        industry:
          type: string
          description: Industry on which the report will be created
        workflow:
          type: string
          description: '`industry_primer`'
          enum:
            - industry_primer
        workbook_name:
          type: string
          description: Name with which the workbook will be saved
        custom_files:
          type: array
          items:
            type: object
            properties: {}
          description: Files to include in the report. Use fileName values from the file upload response
      description: '[FROM OFFICIAL DOCS] Industry Research variant with workflow=`industry_primer`.'
      required:
        - industry
        - workflow
      example:
        workflow: industry_primer
        industry: gaming
        workbook_name: Industry Research - Gaming
    PeerComparisonRequest:
      type: object
      properties:
        workflow:
          type: string
          description: '`player_comparison`'
          enum:
            - player_comparison
        websites:
          type: array
          items:
            type: string
          description: Array of company websites to compare
        workbook_name:
          type: string
          description: Name with which the workbook will be saved
      description: '[FROM OFFICIAL DOCS] Peer Comparison variant with workflow=`player_comparison`.'
      required:
        - workflow
        - websites
      example:
        workflow: player_comparison
        websites:
          - stripe.com
          - paypal.com
        workbook_name: Test report
    CustomWorkflowRequest:
      type: object
      properties:
        workbook_name:
          type: string
          description: Name with which the workbook will be saved
        workflow:
          type: string
          description: Your workflow ID from the dashboard URL (e.g., `comp_research_f312g` from *app.wokelo.ai/dashboard/workflows/comp\_research\_f312g/*)User-defined custom workflow ID from the dashboard URL.
          pattern: ^(?!company_primer$|industry_primer$|player_comparison$).+
        permalink:
          type: string
          description: Crunchbase permalink of the company. Required for company-based workflows.
        website:
          type: string
          description: Website of the company. Required for company-based workflows.
        industry_research_topic:
          type: string
          description: '`For company workflows`: Company''s industry (optional—leaves blank to use Wokelo''s auto-detected industry) `For industry workflows`: Industry to analyze (required)'
        custom_files:
          type: array
          items:
            type: object
            properties: {}
          description: Files to include in the report—use `fileName` values from the upload response
      description: '[FROM OFFICIAL DOCS] Custom Workflow variant using a dashboard workflow ID such as `industry_custom_fc44748`.'
      required:
        - workflow
      example:
        workflow: industry_custom_fc44748
        industry_research_topic: Electric vehicles
    CommonUnauthorizedError:
      type: object
      description: Generic authentication error returned when the request is missing a valid bearer token.
      properties:
        detail:
          type: string
        message:
          type: string
        error:
          type: string
      additionalProperties: true
      example:
        detail: Authentication credentials were not provided.
  responses:
    UnauthorizedError:
      description: Unauthorized. Include a valid bearer token from `/auth/token/`.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/CommonUnauthorizedError'
          example:
            detail: Authentication credentials were not provided.
