1Fort herald (v2) API
**Access:** mixed; some endpoints are public, others require JWT or an API key (per endpoint).
**Access:** mixed; some endpoints are public, others require JWT or an API key (per endpoint).
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/1fort:1fort-herald-v2-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a 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: 1Fort API Documentation herald (v2) API
description: '# 1Fort API
REST API for the 1Fort insurance platform.'
termsOfService: https://www.1fort.com/
license:
name: Privately owned
version: v1
servers:
- url: https://api.1fort.com/apis/
security:
- Bearer: []
tags:
- name: herald (v2)
x-displayName: Herald (v2)
description: '**Access:** mixed; some endpoints are public, others require JWT or an API key (per endpoint).'
paths:
/v2/broker/coverage-types:
parameters: []
get:
operationId: v2_broker_coverage-types_list
description: ''
parameters:
- name: search
in: query
description: A search term.
required: false
schema:
type: string
- name: limit
in: query
description: Number of results to return per page.
required: false
schema:
type: integer
- name: offset
in: query
description: The initial index from which to return the results.
required: false
schema:
type: integer
responses:
'200':
description: ''
content:
application/json:
schema:
required:
- count
- results
type: object
properties:
count:
type: integer
next:
type:
- string
- 'null'
format: uri
previous:
type:
- string
- 'null'
format: uri
results:
type: array
items:
$ref: '#/components/schemas/ProductLine'
'403':
description: Authentication credentials were invalid, absent or insufficient.
content:
application/json:
schema:
$ref: '#/components/schemas/GenericError'
'500':
description: Internal server error.
tags:
- herald (v2)
summary: List Coverage types
/v2/broker/coverage-types/{id}:
parameters:
- name: id
in: path
description: A UUID string identifying this product line.
required: true
schema:
type: string
format: uuid
get:
operationId: v2_broker_coverage-types_read
description: ''
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ProductLine'
'403':
description: Authentication credentials were invalid, absent or insufficient.
content:
application/json:
schema:
$ref: '#/components/schemas/GenericError'
'404':
description: Object does not exist or caller has insufficient permissions to access it.
content:
application/json:
schema:
$ref: '#/components/schemas/APIException'
'500':
description: Internal server error.
tags:
- herald (v2)
summary: Retrieve Coverage type
/v2/broker/quotes/{quote_id}/proposal-content/:
parameters:
- name: quote_id
in: path
required: true
schema:
type: string
get:
operationId: v2_broker_quotes_proposal-content_list
description: GET/PUT per-quote proposal content overrides.
responses:
'200':
description: ''
'403':
description: Authentication credentials were invalid, absent or insufficient.
content:
application/json:
schema:
$ref: '#/components/schemas/GenericError'
'500':
description: Internal server error.
tags:
- herald (v2)
summary: List Proposal content
put:
operationId: v2_broker_quotes_proposal-content_update
description: GET/PUT per-quote proposal content overrides.
responses:
'200':
description: ''
'403':
description: Authentication credentials were invalid, absent or insufficient.
content:
application/json:
schema:
$ref: '#/components/schemas/GenericError'
'404':
description: Object does not exist or caller has insufficient permissions to access it.
content:
application/json:
schema:
$ref: '#/components/schemas/APIException'
'500':
description: Internal server error.
tags:
- herald (v2)
summary: Update Proposal content
/v2/broker/quotes/{quote_id}/proposal-pdf/:
parameters:
- name: quote_id
in: path
required: true
schema:
type: string
get:
operationId: v2_broker_quotes_proposal-pdf_list
summary: Generate and return a proposal PDF for the specified quote with optional…
description: 'Query Parameters:
- comparison_quote_ids: Comma-separated list of quote IDs to include as comparisons
- coverage_types: Coverage types to include in coverage review section.
Supports multiple formats:
* Multiple parameters: coverage_types=A&coverage_types=B&coverage_types=C
* Comma-separated: coverage_types=A,B,C
* Mixed: coverage_types=A,B&coverage_types=C
- include_quote_summary: If false, skips merging the carrier quote summary PDF
(default: true)
- quote_summary_pages: Optional comma/range page selection for the quote summary
PDF (1-based, e.g. "1-3, 5"). When omitted or empty, all pages are included.
Ignored when include_quote_summary is false.
- include_payment_link: If false, omits payment links from the proposal PDF
(default: true)
- include_coverage_analysis: If false, omits the Coverage Analysis pages
(key limits, retentions, and related tables) from the proposal PDF
(default: true)
- include_quote_comparison: If false, omits the quote comparison section
from the proposal PDF (default: true)
- return_json: If true, returns the JSON payload used for PDF generation instead of the PDF
Always generates the PDF on-demand to ensure dynamic comparison data is current.'
responses:
'200':
description: ''
'403':
description: Authentication credentials were invalid, absent or insufficient.
content:
application/json:
schema:
$ref: '#/components/schemas/GenericError'
'500':
description: Internal server error.
tags:
- herald (v2)
/v2/coverage-types:
parameters: []
get:
operationId: v2_coverage-types_list
description: ''
parameters:
- name: search
in: query
description: A search term.
required: false
schema:
type: string
- name: limit
in: query
description: Number of results to return per page.
required: false
schema:
type: integer
- name: offset
in: query
description: The initial index from which to return the results.
required: false
schema:
type: integer
responses:
'200':
description: ''
content:
application/json:
schema:
required:
- count
- results
type: object
properties:
count:
type: integer
next:
type:
- string
- 'null'
format: uri
previous:
type:
- string
- 'null'
format: uri
results:
type: array
items:
$ref: '#/components/schemas/ProductLine'
'403':
description: Authentication credentials were invalid, absent or insufficient.
content:
application/json:
schema:
$ref: '#/components/schemas/GenericError'
'500':
description: Internal server error.
tags:
- herald (v2)
summary: List Coverage types
/v2/coverage-types/{id}:
parameters:
- name: id
in: path
description: A UUID string identifying this product line.
required: true
schema:
type: string
format: uuid
get:
operationId: v2_coverage-types_read
description: ''
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ProductLine'
'403':
description: Authentication credentials were invalid, absent or insufficient.
content:
application/json:
schema:
$ref: '#/components/schemas/GenericError'
'404':
description: Object does not exist or caller has insufficient permissions to access it.
content:
application/json:
schema:
$ref: '#/components/schemas/APIException'
'500':
description: Internal server error.
tags:
- herald (v2)
summary: Retrieve Coverage type
/v2/herald/webhook:
parameters: []
post:
operationId: v2_herald_webhook_create
description: ''
responses:
'201':
description: ''
'403':
description: Authentication credentials were invalid, absent or insufficient.
content:
application/json:
schema:
$ref: '#/components/schemas/GenericError'
'500':
description: Internal server error.
tags:
- herald (v2)
security: []
summary: Create Webhook
/v2/industry-classifications:
parameters: []
get:
operationId: v2_industry-classifications_list
description: ''
parameters:
- name: search
in: query
description: A search term.
required: false
schema:
type: string
- name: limit
in: query
description: Number of results to return per page.
required: false
schema:
type: integer
- name: offset
in: query
description: The initial index from which to return the results.
required: false
schema:
type: integer
responses:
'200':
description: ''
content:
application/json:
schema:
required:
- count
- results
type: object
properties:
count:
type: integer
next:
type:
- string
- 'null'
format: uri
previous:
type:
- string
- 'null'
format: uri
results:
type: array
items:
$ref: '#/components/schemas/IndustryClassification'
'403':
description: Authentication credentials were invalid, absent or insufficient.
content:
application/json:
schema:
$ref: '#/components/schemas/GenericError'
'500':
description: Internal server error.
tags:
- herald (v2)
security:
- Bearer: []
- ApiKey: []
summary: List Industry classifications
/v2/industry-classifications/herald/{herald_id}:
parameters:
- name: herald_id
in: path
required: true
schema:
type: string
get:
operationId: v2_industry-classifications_get_by_herald_id
description: ''
parameters:
- name: search
in: query
description: A search term.
required: false
schema:
type: string
- name: limit
in: query
description: Number of results to return per page.
required: false
schema:
type: integer
- name: offset
in: query
description: The initial index from which to return the results.
required: false
schema:
type: integer
responses:
'200':
description: ''
content:
application/json:
schema:
required:
- count
- results
type: object
properties:
count:
type: integer
next:
type:
- string
- 'null'
format: uri
previous:
type:
- string
- 'null'
format: uri
results:
type: array
items:
$ref: '#/components/schemas/IndustryClassification'
'403':
description: Authentication credentials were invalid, absent or insufficient.
content:
application/json:
schema:
$ref: '#/components/schemas/GenericError'
'500':
description: Internal server error.
tags:
- herald (v2)
security:
- Bearer: []
- ApiKey: []
summary: Get by herald ID
/v2/industry-classifications/{id}:
parameters:
- name: id
in: path
description: A UUID string identifying this industry classification.
required: true
schema:
type: string
format: uuid
get:
operationId: v2_industry-classifications_read
description: ''
responses:
'200':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/IndustryClassification'
'403':
description: Authentication credentials were invalid, absent or insufficient.
content:
application/json:
schema:
$ref: '#/components/schemas/GenericError'
'404':
description: Object does not exist or caller has insufficient permissions to access it.
content:
application/json:
schema:
$ref: '#/components/schemas/APIException'
'500':
description: Internal server error.
tags:
- herald (v2)
security:
- Bearer: []
- ApiKey: []
summary: Retrieve Industry classification
components:
schemas:
APIException:
title: Generic API Error
required:
- detail
type: object
properties:
detail:
description: Error details
type: string
GenericError:
title: Generic API Error
required:
- detail
type: object
properties:
detail:
description: Error details
type: string
SubProductLine:
type: object
properties:
id:
title: Id
type: string
format: uuid
readOnly: true
name:
title: Name
type:
- string
- 'null'
maxLength: 255
display_name:
title: Display name
description: Name used on the Frontend.
type:
- string
- 'null'
maxLength: 255
description:
title: Description
type:
- string
- 'null'
logo:
title: Logo
type:
- string
- 'null'
readOnly: true
format: uri
ProductLine:
required:
- code
type: object
properties:
id:
title: Id
type: string
format: uuid
readOnly: true
code:
title: Code
type: string
maxLength: 150
minLength: 1
description:
title: Description
type:
- string
- 'null'
name:
title: Name
type: string
readOnly: true
is_core:
title: Is core
type: boolean
readOnly: true
sub_product_lines:
type: array
items:
$ref: '#/components/schemas/SubProductLine'
readOnly: true
logo:
title: Logo
type:
- string
- 'null'
readOnly: true
format: uri
category:
title: Category
type:
- string
- 'null'
enum:
- Property
- Casualty
- Both
- Property only
canonical_product_line:
$ref: '#/components/schemas/CanonicalProductLineRef'
IndustryClassification:
required:
- herald_id
type: object
properties:
id:
title: Id
type: string
format: uuid
readOnly: true
herald_id:
title: Herald id
type: string
maxLength: 255
minLength: 1
naics:
title: Naics
type: string
readOnly: true
minLength: 1
description:
title: Description
type:
- string
- 'null'
maxLength: 255
naics_description:
title: Naics description
type: string
readOnly: true
minLength: 1
CanonicalProductLineRef:
required:
- code
type: object
properties:
id:
title: Id
type: string
format: uuid
readOnly: true
code:
title: Code
type: string
maxLength: 150
minLength: 1
display_name:
title: Display name
type:
- string
- 'null'
maxLength: 255
securitySchemes:
Bearer:
type: apiKey
name: Authorization
in: header
description: JWT access token. Send as `Bearer <token>` or `JWT <token>`.
ApiKey:
type: apiKey
name: Authorization
in: header
description: API key. Send as `Api-Key <key>`.
x-tagGroups:
- name: Agent runtime (v2)
tags:
- agent_runtime (v2)
- name: Analytics
tags:
- analytics
- name: Application
tags:
- 'application: applications'
- 'application: clients'
- name: Application (v2)
tags:
- 'application (v2): applications'
- 'application (v2): coverages'
- name: Ascend
tags:
- ascend
- name: Ascend (v2)
tags:
- ascend (v2)
- name: Authentication
tags:
- Authentication
- auth
- name: Billing (v2)
tags:
- billing (v2)
- name: Broker
tags:
- broker
- broker-ams-integration
- broker-google
- broker-office365
- broker-office365-individual
- 'broker: ai-customization-types'
- 'broker: ai-customizations'
- 'broker: clients'
- 'broker: email_preferences'
- 'broker: proposal-preferences'
- 'broker: take-rates'
- 'broker: user-ai-customizations'
- 'broker: users'
- broker_groups
- broker_settings
- name: Broker (v2)
tags:
- 'broker (v2): applications'
- 'broker (v2): clients'
- 'broker (v2): coverages'
- 'broker (v2): email-templates'
- 'broker (v2): quote-policies'
- 'broker (v2): quotes'
- 'broker (v2): storefront'
- 'broker (v2): team-users'
- name: Business
tags:
- business
- business-broker-users
- business-user
- business_admin
- name: Carrier
tags:
- carrier
- name: Checkout
tags:
- checkout
- name: Email AI
tags:
- email_ai
- name: Email AI (v2)
tags:
- 'email_ai (v2): attachments'
- 'email_ai (v2): carriers'
- 'email_ai (v2): coverage-types'
- 'email_ai (v2): emails'
- 'email_ai (v2): gmail'
- 'email_ai (v2): office365'
- 'email_ai (v2): profiles'
- 'email_ai (v2): wholesalers'
- name: Email AI Agent
tags:
- Email AI Agent
- Email AI Agent - Attachments
- Email AI Agent - Businesses
- Email AI Agent - Entities
- Email AI Agent - Markets
- Email AI Agent - Profiles
- Email AI Agent - Reference Data
- name: Google workspace (v2)
tags:
- google_workspace (v2)
- name: Herald (v2)
tags:
- herald (v2)
- name: Indications (v2)
tags:
- indications (v2)
- name: Insurance (v2)
tags:
- insurance (v2)
- name: Invite
tags:
- invite
- name: Legal
tags:
- legal
- name: Market
tags:
- Markets
- Markets - Business
- name: Market (v2)
tags:
- market (v2)
- name: Office365 (v2)
tags:
- office365 (v2)
- name: Premium finance (v2)
tags:
- premium_finance (v2)
- name: Quote
tags:
- 'quote: applications'
- 'quote: clients'
- 'quote: quotes'
- name: Quote (v2)
tags:
- 'quote (v2): application'
- 'quote (v2): binders'
- 'quote (v2): checkout'
- 'quote (v2): cios'
- 'quote (v2): coverages'
- 'quote (v2): quote-policies'
- 'quote (v2): quotes'
- 'quote (v2): tasks'
- quote_ai (v2)
- name: Reports
tags:
- reports
- name: Reward
tags:
- reward
- name: Risk manager
tags:
- risk_manager
- name: Sanity check AI
tags:
- sanity_check_ai
- name: Storefront (v2)
tags:
- storefront (v2)
- name: Stripe
tags:
- stripe
- name: Suggestion AI
tags:
- suggestion_ai
- name: Treasury (v2)
tags:
- treasury (v2)
- name: User
tags:
- user
- 'user: default-access-role'