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: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: 3.2.0
info:
title: Gatiflow Public API
contact:
email: support@gatiflow.io
name: GatiFlow Support
url: https://gatiflow.io/api-docs
license:
name: Proprietary
url: https://gatiflow.io/terms
termsOfService: https://gatiflow.io/terms
x-refined-note:
- x-guidance differs across the merged source definitions and was not carried
version: '1.0'
description: 'Operations tagged public across 2 of this provider''s published API definitions: gatiflow-openapi.json, gatiflow-openapi.json. Each path carries the servers of the definition it was published in.'
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
servers:
- description: Production
url: https://api.gatiflow.io
/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
servers:
- description: Production
url: https://api.gatiflow.io
components:
schemas:
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
ReportSections_2:
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'
watchlist:
$ref: '#/components/schemas/SignalSection'
description: 'Pro and Business, when the organization''s watchlist or watched companies produced signals this cycle: its own topic searches and company activity.'
required:
- executive_summary
- market_trends
- talent_signals
- hiring_signals
title: ReportSections
type: object
SignalItem_2:
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: 'Pro and Business. The change in the signal''s stars (repositories), mentions (papers) or followers (talent) since the previous collection: previous, current, delta, delta_pct, and period_hours, the hours between the two collections.'
title: Velocity
type: object
required:
- source
- title
- detail
- category
- timestamp
title: SignalItem
type: object
ErrorMetadata_2:
description: When the refusal was produced, and by which API and version.
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
InsightsCallToAction_2:
description: 'Where a reader of Daily Insights goes next: sign-up and the API
documentation.'
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_2:
description: 'How many talent profiles the report analyzed, and their average and
top scores.'
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
DeepDivePreview_2:
description: 'The opening of the latest Deep Dive, or ``status: no_article``.
The full article is free to read at ``url``. ``upgrade_message`` predates
that and is kept for v1 callers; it now names the same address.'
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
slug:
title: Slug
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
url:
format: uri
title: Url
type: string
word_count:
title: Word Count
type: integer
required:
- status
title: DeepDivePreview
type: object
InsightsMetadata_2:
description: 'What produced the Daily Insights payload, from how many sources, and
how often it is updated.'
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
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-refined-from:
- gatiflow-openapi.json
- gatiflow-openapi.json
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