1Fort Auth API
Sign in / sign up via Google or Office365 OAuth and refresh JWT access tokens. **Access:** mixed; some endpoints are public, others require JWT (per endpoint).
Sign in / sign up via Google or Office365 OAuth and refresh JWT access tokens. **Access:** mixed; some endpoints are public, others require JWT (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-auth-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 Auth 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: Auth
x-displayName: OAuth & tokens
description: 'Sign in / sign up via Google or Office365 OAuth and refresh JWT access tokens.
**Access:** mixed; some endpoints are public, others require JWT (per endpoint).'
paths:
/auth/google/signin:
parameters: []
post:
operationId: auth_google_signin_create
summary: Sign in with Google
description: Exchange a Google OAuth ID token for a 1Fort JWT session.
responses:
'200':
description: Authenticated. Returns a 1Fort JWT access/refresh token pair.
'400':
description: Invalid or unverified token, or no matching user.
'403':
description: Permission denied.
content:
application/json:
schema:
$ref: '#/components/schemas/APIException'
'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:
- Auth
security: []
requestBody:
content:
application/json:
schema:
required:
- id_token
type: object
properties:
id_token:
description: Google OAuth ID token.
type: string
required: true
/auth/google/signup:
parameters: []
post:
operationId: auth_google_signup_create
summary: Sign up with Google
description: Create a 1Fort account from a Google OAuth ID token and return a JWT session.
responses:
'200':
description: Authenticated. Returns a 1Fort JWT access/refresh token pair.
'400':
description: Invalid or unverified token, or no matching user.
'403':
description: Permission denied.
content:
application/json:
schema:
$ref: '#/components/schemas/APIException'
'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:
- Auth
security: []
requestBody:
content:
application/json:
schema:
required:
- id_token
type: object
properties:
id_token:
description: Google OAuth ID token.
type: string
required: true
/auth/logout:
parameters: []
post:
operationId: auth_logout_create
description: 'Logs the user out. Always attempts to log out from the Django session.
Optionally accepts a JWT refresh token in the request body {''refresh'': ''...''}
to blacklist it if provided.'
responses:
'201':
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:
- Auth
summary: Create Logout
/auth/office365/signin:
parameters: []
get:
operationId: auth_office365_signin_list
summary: Sign in with Office365 (authorization code)
description: Exchange an Office365 authorization code for a 1Fort JWT session.
parameters:
- name: code
in: query
description: Office365 OAuth authorization code to exchange for a token.
schema:
type: string
responses:
'200':
description: Authenticated. Returns a 1Fort JWT access/refresh token pair.
'400':
description: Invalid or unverified token, or no matching user.
'500':
description: Internal server error.
tags:
- Auth
security: []
post:
operationId: auth_office365_signin_create
summary: Sign in with Office365 (access token)
description: Exchange an Office365 access token for a 1Fort JWT session.
responses:
'200':
description: Authenticated. Returns a 1Fort JWT access/refresh token pair.
'400':
description: Invalid or unverified token, or no matching user.
'403':
description: Permission denied.
content:
application/json:
schema:
$ref: '#/components/schemas/APIException'
'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:
- Auth
security: []
requestBody:
content:
application/json:
schema:
required:
- token
type: object
properties:
token:
description: Office365 OAuth access token.
type: string
required: true
/auth/office365/signup:
parameters: []
get:
operationId: auth_office365_signup_list
summary: Sign up with Office365 (authorization code)
description: Create a 1Fort account from an Office365 authorization code and return a JWT session.
parameters:
- name: code
in: query
description: Office365 OAuth authorization code to exchange for a token.
schema:
type: string
responses:
'200':
description: Authenticated. Returns a 1Fort JWT access/refresh token pair.
'400':
description: Invalid or unverified token, or no matching user.
'500':
description: Internal server error.
tags:
- Auth
security: []
post:
operationId: auth_office365_signup_create
summary: Sign up with Office365 (access token)
description: Create a 1Fort account from an Office365 access token and return a JWT session.
responses:
'200':
description: Authenticated. Returns a 1Fort JWT access/refresh token pair.
'400':
description: Invalid or unverified token, or no matching user.
'403':
description: Permission denied.
content:
application/json:
schema:
$ref: '#/components/schemas/APIException'
'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:
- Auth
security: []
requestBody:
content:
application/json:
schema:
required:
- token
type: object
properties:
token:
description: Office365 OAuth access token.
type: string
required: true
/auth/token/refresh:
parameters: []
post:
operationId: auth_token_refresh_create
description: 'Takes a refresh type JSON web token and returns an access type JSON web
token if the refresh token is valid.'
responses:
'201':
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/TokenRefresh'
'400':
description: Invalid input.
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationError'
'403':
description: Permission denied.
content:
application/json:
schema:
$ref: '#/components/schemas/APIException'
'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:
- Auth
security: []
summary: Create Refresh
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/TokenRefresh'
required: true
components:
schemas:
ValidationError:
title: Validation Error
type: object
properties:
non_field_errors:
description: List of validation errors not related to any field
type: array
items:
type: string
additionalProperties:
description: A list of error messages for each field that triggered a validation error
type: array
items:
type: string
GenericError:
title: Generic API Error
required:
- detail
type: object
properties:
detail:
description: Error details
type: string
TokenRefresh:
required:
- refresh
type: object
properties:
refresh:
title: Refresh
type: string
minLength: 1
access:
title: Access
type: string
readOnly: true
minLength: 1
APIException:
title: Generic API Error
required:
- detail
type: object
properties:
detail:
description: Error details
type: string
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'