GatiFlow Public API

The public operations of the GatiFlow Intelligence API — the Daily Insights payload (web-app session auth, not an API key; an API key receives 401 there) and the latest Saturday Deep Dive preview (title, excerpt and word count, no credential required).

Operations 2

GET /api/v1/public/deep-dive Get the latest Deep Dive preview #
GET /api/v1/public/weekly-report Get the Daily Insights payload #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/gatiflow-public-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

gatiflow-public-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  contact:
    email: support@gatiflow.io
    name: GatiFlow Support
    url: https://gatiflow.io/api-docs
  description: Customer-facing GatiFlow Intelligence API.
  license:
    name: Proprietary
    url: https://gatiflow.io/terms
  termsOfService: https://gatiflow.io/terms
  title: GatiFlow SaaS Public API
  version: 2.3.0
servers:
- description: Production
  url: https://api.gatiflow.io
tags:
- name: Public
paths:
  /api/v1/public/deep-dive:
    get:
      description: 'Returns the opening preview of the most recent Deep Dive article, plus its topic, title, word count and publication date. No authentication is required.


        The full text is not served here. It stays behind authentication on the Deep Dive product page and is included with Starter, Pro and Business.


        Deep Dive articles are written by a language model from the collected signals, which the response declares. When nothing has been published yet the endpoint returns 200 with status set to no_article rather than an error.


        Because the operation takes no credential there is no key to meter, so the ceiling is per caller address: 60 requests a minute, above which the endpoint returns 429. The article changes once a week, so a caller that polls has nothing to gain from a shorter interval.'
      operationId: get_latest_deep_dive_api_v1_public_deep_dive_get
      responses:
        '200':
          content:
            application/json:
              examples:
                none_yet:
                  summary: Nothing published yet
                  value:
                    message: No deep dive available yet. Check back Saturday morning.
                    status: no_article
                published:
                  summary: An article is published
                  value:
                    full_article_available: true
                    id: 9d41f0a2-6c58-4c9e-8a3b-27d5e1b40f6a
                    preview: The first two paragraphs of the article, in plain text.
                    published_at: '2026-08-30T09:00:00+00:00'
                    status: ok
                    title: What Falling Inference Prices Did To The Infrastructure Layer
                    topic: inference cost
                    upgrade_message: Subscribe to Starter, Pro, or Business to read the full article.
                    word_count: 1834
              schema:
                $ref: '#/components/schemas/DeepDivePreview'
          description: Preview of the most recent Deep Dive article.
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: 'Too many requests from this address. This operation takes no credential, so the ceiling is per caller address: 60 requests a minute.'
      security: []
      summary: Get the latest Deep Dive preview
      tags:
      - Public
  /api/v1/public/weekly-report:
    get:
      description: 'Returns the shared Daily Insights report: the curated view of the latest collection cycle that backs the Insights page. Sections carry the same signal shape as the intelligence report, with sources, counts and confidence, and the evidence attached.


        The payload is shaped to the caller plan. Pro and Business receive it whole. Starter receives the same report with per-signal velocity removed and section counts re-applied at the Starter caps. A paid or trialing plan is required; an expired trial receives 402.


        Pass date as YYYY-MM-DD to read an archived day instead of the current one. An unknown date returns 404 and a malformed one returns 400.'
      operationId: weekly_report_api_v1_public_weekly_report_get
      parameters:
      - in: query
        name: date
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Date
      - in: header
        name: authorization
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      responses:
        '200':
          content:
            application/json:
              examples:
                pro:
                  summary: Current day, Pro key
                  value:
                    analytics:
                      market_overview:
                        average_score: 84.0
                        top_score: 84
                        total_profiles_analyzed: 1
                      role_distribution:
                        Senior Backend: 1
                      seniority_distribution:
                        junior_65_69: 0
                        leadership_90_99: 0
                        mid_70_79: 0
                        senior_80_89: 1
                      seniority_levels:
                        senior: 1
                      stack_distribution:
                        rust: 1
                      strategic_insights: []
                    cta:
                      api_docs: https://api.gatiflow.io/docs
                      message: Get full reports with evidence, exports, and custom topics via API.
                      signup_url: https://gatiflow.io/register
                    generated_at: '2026-09-03T06:00:11.482913+00:00'
                    metadata:
                      data_sources: up to 13
                      product: GatiFlow Intelligence
                      report_type: Daily Insights
                      update_frequency: Every 6 hours
                    score:
                      overall_confidence: 0.86
                      signal_count: 38
                    sections:
                      executive_summary:
                        narrative: ''
                        overall_confidence: 0.86
                        summary: 'Full analysis of 38 signals from 9 of 13 sources. Top topics: rust, inference, postgres. 1 talent signals identified.'
                        title: Market & Talent Intelligence Overview
                      hiring_signals:
                        count: 1
                        data:
                        - category: hiring_signal
                          confidence: 0.77
                          detail: Backend openings up week over week
                          evidence:
                            company_size: 50-200
                            trend: expanding
                          source: hiring
                          timestamp: '2026-09-03T06:00:11.482913+00:00'
                          title: Series B infrastructure hiring
                        title: Hiring & Opportunity Signals
                      market_trends:
                        count: 1
                        data:
                        - category: market_trend
                          confidence: 0.91
                          detail: 'Strength: high | Mentions: 16'
                          evidence:
                            mentions: 16
                            metric: mentions
                            sources:
                            - hackernews
                            - arxiv
                            title: rust
                          source: hackernews,arxiv
                          timestamp: '2026-09-03T06:00:11.482913+00:00'
                          title: rust
                          url: https://news.ycombinator.com/item?id=41234567
                        title: Market Intelligence Signals
                      talent_signals:
                        count: 1
                        data:
                        - category: talent
                          confidence: 0.82
                          detail: Senior Rust engineer, 8 public repositories this quarter
                          evidence:
                            role: Senior Backend
                            seniority: senior
                            stack:
                            - rust
                          source: github
                          timestamp: '2026-09-03T06:00:11.482913+00:00'
                          title: '@octodev'
                          url: https://github.com/octodev
                        title: Talent Intelligence Signals
                    subtitle: The day's intelligence, distilled from the latest collection cycle.
                    title: GatiFlow Daily Insights — Sep 03, 2026
                    week_of: September 03, 2026
              schema:
                $ref: '#/components/schemas/DailyInsights'
          description: Daily Insights payload, shaped to the caller's plan.
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: date is not in the YYYY-MM-DD format.
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: No web session, or the session token is invalid, expired or revoked.
        '402':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: The organization is not on a paid or trialing plan.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: No Insights snapshot exists for the requested date.
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: A parameter is missing, malformed or out of range. error.details lists each problem.
        '503':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: The current Insights report has not been generated yet, or the session could not be checked.
      security:
      - SessionBearer: []
      summary: Get the Daily Insights payload
      tags:
      - Public
components:
  schemas:
    ExecutiveSummary:
      description: 'The report overview. ``narrative`` is written by a language model and

        declared as such in ``metadata.ai_generated``.'
      properties:
        narrative:
          title: Narrative
          type: string
        overall_confidence:
          title: Overall Confidence
          type: number
        summary:
          title: Summary
          type: string
        title:
          title: Title
          type: string
      required:
      - title
      - summary
      - narrative
      - overall_confidence
      title: ExecutiveSummary
      type: object
    InsightsCallToAction:
      properties:
        api_docs:
          title: Api Docs
          type: string
        message:
          title: Message
          type: string
        signup_url:
          title: Signup Url
          type: string
      required:
      - message
      - signup_url
      - api_docs
      title: InsightsCallToAction
      type: object
    MarketOverview:
      properties:
        average_score:
          title: Average Score
          type: number
        top_score:
          title: Top Score
          type: number
        total_profiles_analyzed:
          title: Total Profiles Analyzed
          type: integer
      required:
      - total_profiles_analyzed
      - average_score
      - top_score
      title: MarketOverview
      type: object
    DailyInsights:
      description: The shared Daily Insights report, shaped to the caller's plan.
      properties:
        analytics:
          $ref: '#/components/schemas/ReportAnalytics'
        cta:
          $ref: '#/components/schemas/InsightsCallToAction'
        generated_at:
          format: date-time
          title: Generated At
          type: string
        metadata:
          $ref: '#/components/schemas/InsightsMetadata'
        score:
          $ref: '#/components/schemas/ReportScore'
        sections:
          $ref: '#/components/schemas/ReportSections'
        subtitle:
          title: Subtitle
          type: string
        title:
          title: Title
          type: string
        week_of:
          title: Week Of
          type: string
      required:
      - generated_at
      - week_of
      - title
      - subtitle
      - sections
      - score
      - analytics
      - cta
      - metadata
      title: DailyInsights
      type: object
    SignalItem:
      description: 'One signal in a report section.


        ``confidence`` and ``evidence`` are present on plans that include them

        and absent on the expired-trial preview.'
      properties:
        category:
          description: Signal category, for example market_trend, research_paper, talent or hiring_signal.
          title: Category
          type: string
        company:
          title: Company
          type: string
        confidence:
          title: Confidence
          type: number
        detail:
          title: Detail
          type: string
        entity_key:
          title: Entity Key
          type: string
        entity_type:
          title: Entity Type
          type: string
        evidence:
          additionalProperties: true
          description: The source metadata behind the counts, as collected.
          title: Evidence
          type: object
        example_headline:
          title: Example Headline
          type: string
        hiring_status:
          title: Hiring Status
          type: string
        relevance:
          title: Relevance
          type: number
        source:
          description: Source ids that observed the signal, comma-separated.
          title: Source
          type: string
        timestamp:
          format: date-time
          title: Timestamp
          type: string
        title:
          title: Title
          type: string
        url:
          title: Url
          type: string
        velocity:
          additionalProperties: true
          description: Week-over-week movement of the signal.
          title: Velocity
          type: object
      required:
      - source
      - title
      - detail
      - category
      - timestamp
      title: SignalItem
      type: object
    DeepDivePreview:
      description: 'The opening of the latest Deep Dive, or ``status: no_article``.'
      properties:
        full_article_available:
          title: Full Article Available
          type: boolean
        id:
          title: Id
          type: string
        message:
          title: Message
          type: string
        preview:
          title: Preview
          type: string
        published_at:
          format: date-time
          title: Published At
          type: string
        status:
          enum:
          - ok
          - no_article
          title: Status
          type: string
        title:
          title: Title
          type: string
        topic:
          title: Topic
          type: string
        upgrade_message:
          title: Upgrade Message
          type: string
        word_count:
          title: Word Count
          type: integer
      required:
      - status
      title: DeepDivePreview
      type: object
    ErrorDetail:
      description: What went wrong, and the id to quote when asking about it.
      properties:
        code:
          description: NOT_FOUND for a 404, VALIDATION_ERROR for a 422, HTTP_ERROR for every other refusal.
          enum:
          - HTTP_ERROR
          - NOT_FOUND
          - VALIDATION_ERROR
          - INTERNAL_ERROR
          title: Code
          type: string
        details:
          anyOf:
          - additionalProperties: true
            type: object
          - items:
              $ref: '#/components/schemas/ValidationIssue'
            type: array
          description: The list of problems on a 422; an empty object otherwise.
          title: Details
        http_status:
          title: Http Status
          type: integer
        message:
          description: Why the request was refused, in plain words.
          title: Message
          type: string
        request_id:
          anyOf:
          - type: string
          - type: 'null'
          description: Also sent as the X-Request-ID response header.
          title: Request Id
      required:
      - message
      - code
      - http_status
      - request_id
      - details
      title: ErrorDetail
      type: object
    ErrorMetadata:
      properties:
        provider:
          title: Provider
          type: string
        timestamp:
          format: date-time
          title: Timestamp
          type: string
        version:
          title: Version
          type: string
      required:
      - timestamp
      - provider
      - version
      title: ErrorMetadata
      type: object
    ReportAnalytics:
      description: Distributions over the talent profiles in the report.
      properties:
        market_overview:
          $ref: '#/components/schemas/MarketOverview'
        role_distribution:
          additionalProperties:
            type: integer
          title: Role Distribution
          type: object
        seniority_distribution:
          additionalProperties:
            type: integer
          description: Profiles per score band.
          title: Seniority Distribution
          type: object
        seniority_levels:
          additionalProperties:
            type: integer
          description: Profiles per seniority label.
          title: Seniority Levels
          type: object
        stack_distribution:
          additionalProperties:
            type: integer
          title: Stack Distribution
          type: object
        strategic_insights:
          items:
            type: string
          title: Strategic Insights
          type: array
      required:
      - market_overview
      - seniority_distribution
      - seniority_levels
      - stack_distribution
      - role_distribution
      - strategic_insights
      title: ReportAnalytics
      type: object
    ErrorResponse:
      description: Every refusal the API returns, whatever its status.
      properties:
        error:
          $ref: '#/components/schemas/ErrorDetail'
        metadata:
          $ref: '#/components/schemas/ErrorMetadata'
        status:
          const: error
          title: Status
          type: string
      required:
      - status
      - error
      - metadata
      title: ErrorResponse
      type: object
    InsightsMetadata:
      properties:
        data_sources:
          title: Data Sources
          type: string
        product:
          title: Product
          type: string
        report_type:
          title: Report Type
          type: string
        update_frequency:
          title: Update Frequency
          type: string
      required:
      - product
      - data_sources
      - update_frequency
      - report_type
      title: InsightsMetadata
      type: object
    ReportScore:
      description: Aggregate confidence over the signals in the report.
      properties:
        categories:
          additionalProperties:
            type: number
          title: Categories
          type: object
        collection_health:
          additionalProperties: true
          title: Collection Health
          type: object
        confidence_interval:
          additionalProperties: true
          title: Confidence Interval
          type: object
        cross_source_signals:
          title: Cross Source Signals
          type: integer
        overall_confidence:
          maximum: 1.0
          minimum: 0.0
          title: Overall Confidence
          type: number
        signal_count:
          minimum: 0.0
          title: Signal Count
          type: integer
        source_diversity:
          title: Source Diversity
          type: integer
      required:
      - overall_confidence
      - signal_count
      title: ReportScore
      type: object
    ReportSections:
      description: The report body.
      properties:
        executive_summary:
          $ref: '#/components/schemas/ExecutiveSummary'
        hiring_signals:
          $ref: '#/components/schemas/SignalSection'
        market_trends:
          $ref: '#/components/schemas/SignalSection'
        org_briefing:
          $ref: '#/components/schemas/OrgBriefing'
        talent_signals:
          $ref: '#/components/schemas/SignalSection'
      required:
      - executive_summary
      - market_trends
      - talent_signals
      - hiring_signals
      title: ReportSections
      type: object
    SignalSection:
      description: A section of signals, capped by the plan.
      properties:
        count:
          description: Number of items in data.
          minimum: 0.0
          title: Count
          type: integer
        data:
          items:
            $ref: '#/components/schemas/SignalItem'
          title: Data
          type: array
        title:
          title: Title
          type: string
      required:
      - title
      - count
      - data
      title: SignalSection
      type: object
    ValidationIssue:
      description: One problem with the request, as a 422 lists it in ``error.details``.
      properties:
        ctx:
          description: The constraint that failed, as text.
          title: Ctx
          type: string
        input:
          title: Input
        loc:
          description: Where the problem is, for example ['query', 'limit'].
          items:
            anyOf:
            - type: string
            - type: integer
          title: Loc
          type: array
        msg:
          title: Msg
          type: string
        type:
          title: Type
          type: string
        url:
          title: Url
          type: string
      required:
      - type
      - loc
      - msg
      title: ValidationIssue
      type: object
    OrgBriefing:
      description: 'Business plan only: a paragraph on the organization''s own watchlist.'
      properties:
        narrative:
          title: Narrative
          type: string
        title:
          title: Title
          type: string
      required:
      - title
      - narrative
      title: OrgBriefing
      type: object
  securitySchemes:
    ApiKeyAuth:
      description: API key (prefix gf_) created in Dashboard → API Keys.
      in: header
      name: X-API-Key
      type: apiKey
    SessionBearer:
      bearerFormat: JWT
      description: Web session token issued to the browser at sign-in. It is not part of the public API and cannot be created from an API key; an API key sent to an operation that requires it receives 401.
      scheme: bearer
      type: http
externalDocs:
  description: API documentation
  url: https://gatiflow.io/api-docs
x-provenance:
  generated_from: the running routes (app/api/public_docs.py), compared byte for byte by the test suite
  method: published
  publisher: GatiFlow
  source: https://gatiflow.io/openapi.json