Harbor Compliance API
The Harbor Compliance API enables partners to integrate compliance management capabilities into their platforms, streamlining workflows for business licensing, registered agent services, and compliance tracking.
The Harbor Compliance API enables partners to integrate compliance management capabilities into their platforms, streamlining workflows for business licensing, registered agent services, and compliance tracking.
openapi: 3.1.0
info:
title: Harbor Compliance API
description: >-
The Harbor Compliance API enables partners to integrate compliance management
capabilities into their platforms. The API provides programmatic access to
business licensing, registered agent services, compliance tracking, and
entity management workflows. Partners can automate compliance tasks, monitor
filing deadlines, manage registered agent appointments, and track licensing
requirements across jurisdictions.
version: '1.0'
contact:
name: Harbor Compliance Support
url: https://www.harborcompliance.com/contact
termsOfService: https://www.harborcompliance.com/terms-of-service
externalDocs:
description: Harbor Compliance Developer Documentation
url: https://developers.harborcompliance.com/
servers:
- url: https://api.harborcompliance.com/v1
description: Production Server
tags:
- name: Compliance Filings
description: Annual reports, compliance filings, and deadline tracking.
- name: Entities
description: Business entity management including corporations, LLCs, and other legal entities.
- name: Jurisdictions
description: State and jurisdiction information for compliance requirements.
- name: Licenses
description: Business license applications, renewals, and status tracking across jurisdictions.
- name: Orders
description: Compliance service orders and fulfillment tracking.
- name: Registered Agents
description: Registered agent appointment and management for business entities.
security:
- apiKey: []
paths:
/entities:
get:
operationId: listEntities
summary: Harbor Compliance List business entities
description: >-
Returns a paginated list of business entities managed under the partner
account. Results can be filtered by entity type, state, and status.
tags:
- Entities
parameters:
- $ref: '#/components/parameters/pageParam'
- $ref: '#/components/parameters/perPageParam'
- name: state
in: query
description: Filter entities by state of formation (two-letter state code).
schema:
type: string
pattern: '^[A-Z]{2}$'
- name: entity_type
in: query
description: Filter by entity type.
schema:
type: string
enum:
- corporation
- llc
- lp
- llp
- nonprofit
- sole_proprietorship
- name: status
in: query
description: Filter by entity status.
schema:
type: string
enum: [active, inactive, dissolved, pending]
responses:
'200':
description: A paginated list of business entities.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Entity'
meta:
$ref: '#/components/schemas/PaginationMeta'
'401':
$ref: '#/components/responses/Unauthorized'
post:
operationId: createEntity
summary: Harbor Compliance Create a business entity
description: >-
Creates a new business entity record in Harbor Compliance. This
registers the entity for compliance tracking and monitoring across
applicable jurisdictions.
tags:
- Entities
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/EntityCreate'
responses:
'201':
description: The newly created business entity.
content:
application/json:
schema:
$ref: '#/components/schemas/Entity'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/entities/{entityId}:
get:
operationId: getEntity
summary: Harbor Compliance Get a business entity
description: >-
Retrieves detailed information about a specific business entity including
its formation details, registered agent, compliance status, and active
licenses.
tags:
- Entities
parameters:
- $ref: '#/components/parameters/entityIdParam'
responses:
'200':
description: Business entity details.
content:
application/json:
schema:
$ref: '#/components/schemas/Entity'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
patch:
operationId: updateEntity
summary: Harbor Compliance Update a business entity
description: >-
Updates mutable fields on a business entity record such as the contact
information, principal address, and officer details.
tags:
- Entities
parameters:
- $ref: '#/components/parameters/entityIdParam'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/EntityUpdate'
responses:
'200':
description: The updated business entity.
content:
application/json:
schema:
$ref: '#/components/schemas/Entity'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/entities/{entityId}/compliance:
get:
operationId: getEntityCompliance
summary: Harbor Compliance Get compliance status for an entity
description: >-
Returns the full compliance status for a business entity including
upcoming filing deadlines, overdue items, and a summary of active
compliance requirements across all jurisdictions where the entity
operates.
tags:
- Compliance Filings
- Entities
parameters:
- $ref: '#/components/parameters/entityIdParam'
responses:
'200':
description: Entity compliance status summary.
content:
application/json:
schema:
$ref: '#/components/schemas/ComplianceStatus'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/licenses:
get:
operationId: listLicenses
summary: Harbor Compliance List business licenses
description: >-
Returns a paginated list of business licenses managed for partner
entities. Licenses can be filtered by entity, jurisdiction, license
type, and status.
tags:
- Licenses
parameters:
- $ref: '#/components/parameters/pageParam'
- $ref: '#/components/parameters/perPageParam'
- name: entity_id
in: query
description: Filter licenses by entity identifier.
schema:
type: string
- name: state
in: query
description: Filter licenses by state jurisdiction.
schema:
type: string
pattern: '^[A-Z]{2}$'
- name: status
in: query
description: Filter by license status.
schema:
type: string
enum: [active, pending, expired, revoked]
responses:
'200':
description: A paginated list of business licenses.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/License'
meta:
$ref: '#/components/schemas/PaginationMeta'
'401':
$ref: '#/components/responses/Unauthorized'
post:
operationId: createLicense
summary: Harbor Compliance Create a license application
description: >-
Submits a new business license application for a specified entity and
jurisdiction. Harbor Compliance will process the application and update
the status as it progresses through the licensing workflow.
tags:
- Licenses
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/LicenseCreate'
responses:
'201':
description: The newly created license application.
content:
application/json:
schema:
$ref: '#/components/schemas/License'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/licenses/{licenseId}:
get:
operationId: getLicense
summary: Harbor Compliance Get a business license
description: >-
Retrieves detailed information about a specific business license
including its current status, expiration date, renewal requirements,
and associated filings.
tags:
- Licenses
parameters:
- $ref: '#/components/parameters/licenseIdParam'
responses:
'200':
description: Business license details.
content:
application/json:
schema:
$ref: '#/components/schemas/License'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/licenses/{licenseId}/renew:
post:
operationId: renewLicense
summary: Harbor Compliance Renew a business license
description: >-
Initiates the renewal process for an existing business license. This
creates a renewal order that Harbor Compliance will process through the
appropriate jurisdiction's renewal workflow.
tags:
- Licenses
parameters:
- $ref: '#/components/parameters/licenseIdParam'
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
notes:
type: string
description: Optional notes for the renewal request.
responses:
'200':
description: The updated license record with renewal initiated.
content:
application/json:
schema:
$ref: '#/components/schemas/License'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/registered-agents:
get:
operationId: listRegisteredAgents
summary: Harbor Compliance List registered agent appointments
description: >-
Returns a paginated list of registered agent appointments for entities
managed under the partner account. Includes appointment status and
jurisdiction details.
tags:
- Registered Agents
parameters:
- $ref: '#/components/parameters/pageParam'
- $ref: '#/components/parameters/perPageParam'
- name: entity_id
in: query
description: Filter by entity identifier.
schema:
type: string
- name: state
in: query
description: Filter by state jurisdiction.
schema:
type: string
pattern: '^[A-Z]{2}$'
responses:
'200':
description: A paginated list of registered agent appointments.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/RegisteredAgent'
meta:
$ref: '#/components/schemas/PaginationMeta'
'401':
$ref: '#/components/responses/Unauthorized'
post:
operationId: createRegisteredAgentAppointment
summary: Harbor Compliance Appoint a registered agent
description: >-
Creates a new registered agent appointment for a business entity in a
specified state. Harbor Compliance will file the necessary paperwork
with the state to formalize the appointment.
tags:
- Registered Agents
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/RegisteredAgentCreate'
responses:
'201':
description: The newly created registered agent appointment.
content:
application/json:
schema:
$ref: '#/components/schemas/RegisteredAgent'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/registered-agents/{agentId}:
get:
operationId: getRegisteredAgent
summary: Harbor Compliance Get a registered agent appointment
description: >-
Retrieves details about a specific registered agent appointment including
the agent's address, appointment status, and associated entity.
tags:
- Registered Agents
parameters:
- $ref: '#/components/parameters/agentIdParam'
responses:
'200':
description: Registered agent appointment details.
content:
application/json:
schema:
$ref: '#/components/schemas/RegisteredAgent'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/filings:
get:
operationId: listFilings
summary: Harbor Compliance List compliance filings
description: >-
Returns a paginated list of compliance filings including annual reports,
statements of information, and other required regulatory submissions.
Results can be filtered by entity, state, filing type, and status.
tags:
- Compliance Filings
parameters:
- $ref: '#/components/parameters/pageParam'
- $ref: '#/components/parameters/perPageParam'
- name: entity_id
in: query
description: Filter filings by entity identifier.
schema:
type: string
- name: state
in: query
description: Filter filings by state jurisdiction.
schema:
type: string
pattern: '^[A-Z]{2}$'
- name: status
in: query
description: Filter by filing status.
schema:
type: string
enum: [pending, in_progress, filed, overdue, waived]
- name: due_before
in: query
description: Filter filings due before this date (ISO 8601 date).
schema:
type: string
format: date
responses:
'200':
description: A paginated list of compliance filings.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Filing'
meta:
$ref: '#/components/schemas/PaginationMeta'
'401':
$ref: '#/components/responses/Unauthorized'
/filings/{filingId}:
get:
operationId: getFiling
summary: Harbor Compliance Get a compliance filing
description: >-
Retrieves details about a specific compliance filing including its type,
due date, status, and any documents associated with the filing.
tags:
- Compliance Filings
parameters:
- $ref: '#/components/parameters/filingIdParam'
responses:
'200':
description: Compliance filing details.
content:
application/json:
schema:
$ref: '#/components/schemas/Filing'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/jurisdictions:
get:
operationId: listJurisdictions
summary: Harbor Compliance List jurisdictions
description: >-
Returns a list of all supported jurisdictions with their compliance
requirements, filing fees, and annual report due dates.
tags:
- Jurisdictions
parameters:
- name: entity_type
in: query
description: Filter jurisdictions by supported entity type.
schema:
type: string
enum:
- corporation
- llc
- lp
- llp
- nonprofit
responses:
'200':
description: A list of supported jurisdictions.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Jurisdiction'
'401':
$ref: '#/components/responses/Unauthorized'
/jurisdictions/{state}:
get:
operationId: getJurisdiction
summary: Harbor Compliance Get jurisdiction details
description: >-
Retrieves detailed compliance requirements for a specific state
jurisdiction including annual report deadlines, filing fees, and
registered agent requirements by entity type.
tags:
- Jurisdictions
parameters:
- name: state
in: path
required: true
description: Two-letter state code (e.g., CA, NY, DE).
schema:
type: string
pattern: '^[A-Z]{2}$'
responses:
'200':
description: Jurisdiction compliance details.
content:
application/json:
schema:
$ref: '#/components/schemas/Jurisdiction'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/orders:
get:
operationId: listOrders
summary: Harbor Compliance List service orders
description: >-
Returns a paginated list of compliance service orders placed through the
Harbor Compliance partner account. Orders represent discrete compliance
tasks being fulfilled by Harbor Compliance staff.
tags:
- Orders
parameters:
- $ref: '#/components/parameters/pageParam'
- $ref: '#/components/parameters/perPageParam'
- name: entity_id
in: query
description: Filter orders by entity identifier.
schema:
type: string
- name: status
in: query
description: Filter by order status.
schema:
type: string
enum: [pending, processing, completed, cancelled]
responses:
'200':
description: A paginated list of service orders.
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Order'
meta:
$ref: '#/components/schemas/PaginationMeta'
'401':
$ref: '#/components/responses/Unauthorized'
/orders/{orderId}:
get:
operationId: getOrder
summary: Harbor Compliance Get a service order
description: >-
Retrieves details about a specific compliance service order including
its current status, associated entity, service type, and any documents
produced.
tags:
- Orders
parameters:
- $ref: '#/components/parameters/orderIdParam'
responses:
'200':
description: Service order details.
content:
application/json:
schema:
$ref: '#/components/schemas/Order'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
components:
securitySchemes:
apiKey:
type: apiKey
in: header
name: X-API-Key
description: >-
API key for authenticating partner requests. Obtain your API key from
the Harbor Compliance developer portal.
parameters:
entityIdParam:
name: entityId
in: path
required: true
description: Unique identifier for the business entity.
schema:
type: string
licenseIdParam:
name: licenseId
in: path
required: true
description: Unique identifier for the business license.
schema:
type: string
agentIdParam:
name: agentId
in: path
required: true
description: Unique identifier for the registered agent appointment.
schema:
type: string
filingIdParam:
name: filingId
in: path
required: true
description: Unique identifier for the compliance filing.
schema:
type: string
orderIdParam:
name: orderId
in: path
required: true
description: Unique identifier for the service order.
schema:
type: string
pageParam:
name: page
in: query
description: Page number for paginated results (1-based).
schema:
type: integer
minimum: 1
default: 1
perPageParam:
name: per_page
in: query
description: Number of results per page.
schema:
type: integer
minimum: 1
maximum: 100
default: 20
responses:
BadRequest:
description: The request was malformed or contained invalid parameters.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
Unauthorized:
description: Authentication credentials are missing or invalid.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
NotFound:
description: The requested resource was not found.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
schemas:
Entity:
type: object
title: Entity
description: A business entity managed by Harbor Compliance.
required: [id, name, entity_type, state, status]
properties:
id:
type: string
description: Unique identifier for the business entity.
name:
type: string
description: Legal name of the business entity.
entity_type:
type: string
description: The legal structure of the entity.
enum:
- corporation
- llc
- lp
- llp
- nonprofit
- sole_proprietorship
state:
type: string
description: Two-letter state code where the entity was formed.
pattern: '^[A-Z]{2}$'
status:
type: string
description: Current standing status of the entity.
enum: [active, inactive, dissolved, pending]
ein:
type: string
description: Employer Identification Number (EIN) assigned by the IRS.
pattern: '^\d{2}-\d{7}$'
formation_date:
type: string
format: date
description: Date the entity was formed or incorporated.
registered_agent_id:
type: string
description: Identifier of the registered agent appointment for this entity.
principal_address:
$ref: '#/components/schemas/Address'
mailing_address:
$ref: '#/components/schemas/Address'
officers:
type: array
description: List of officers and directors associated with the entity.
items:
$ref: '#/components/schemas/Officer'
created_at:
type: string
format: date-time
description: ISO 8601 timestamp when the entity record was created.
updated_at:
type: string
format: date-time
description: ISO 8601 timestamp of the last update to the entity record.
EntityCreate:
type: object
title: EntityCreate
description: Fields required to create a new business entity record.
required: [name, entity_type, state]
properties:
name:
type: string
description: Legal name of the business entity.
entity_type:
type: string
description: The legal structure of the entity.
enum:
- corporation
- llc
- lp
- llp
- nonprofit
- sole_proprietorship
state:
type: string
description: Two-letter state code where the entity was formed.
pattern: '^[A-Z]{2}$'
ein:
type: string
description: Employer Identification Number (EIN).
pattern: '^\d{2}-\d{7}$'
formation_date:
type: string
format: date
description: Date the entity was formed or incorporated.
principal_address:
$ref: '#/components/schemas/Address'
officers:
type: array
description: Officers and directors associated with the entity.
items:
$ref: '#/components/schemas/Officer'
EntityUpdate:
type: object
title: EntityUpdate
description: Fields that can be updated on an existing business entity.
properties:
name:
type: string
description: Updated legal name of the entity.
principal_address:
$ref: '#/components/schemas/Address'
mailing_address:
$ref: '#/components/schemas/Address'
officers:
type: array
description: Updated list of officers and directors.
items:
$ref: '#/components/schemas/Officer'
License:
type: object
title: License
description: A business license held by an entity in a specific jurisdiction.
required: [id, entity_id, state, license_type, status]
properties:
id:
type: string
description: Unique identifier for the license.
entity_id:
type: string
description: Identifier of the entity that holds this license.
state:
type: string
description: Two-letter state code for the licensing jurisdiction.
pattern: '^[A-Z]{2}$'
license_type:
type: string
description: Type or category of business license.
license_number:
type: string
description: License number assigned by the issuing jurisdiction.
status:
type: string
description: Current status of the license.
enum: [active, pending, expired, revoked]
issued_date:
type: string
format: date
description: Date the license was issued.
expiration_date:
type: string
format: date
description: Date the license expires and must be renewed.
renewal_date:
type: string
format: date
description: Date by which the renewal must be submitted to avoid lapse.
agency:
type: string
description: Name of the government agency that issued the license.
created_at:
type: string
format: date-time
description: ISO 8601 timestamp when the license record was created.
updated_at:
type: string
format: date-time
description: ISO 8601 timestamp of the last update.
LicenseCreate:
type: object
title: LicenseCreate
description: Fields required to submit a new business license application.
required: [entity_id, state, license_type]
properties:
entity_id:
type: string
description: Identifier of the entity applying for the license.
state:
type: string
description: Two-letter state code for the licensing jurisdiction.
pattern: '^[A-Z]{2}$'
license_type:
type: string
description: Type of business license being applied for.
notes:
type: string
description: Additional notes or instructions for the license application.
RegisteredAgent:
type: object
title: RegisteredAgent
description: A registered agent appointment for a business entity in a state.
required: [id, entity_id, state, status]
properties:
id:
type: string
description: Unique identifier for the registered agent appointment.
entity_id:
type: string
description: Identifier of the entity for which the agent is appointed.
state:
type: string
description: Two-letter state code where the agent is appointed.
pattern: '^[A-Z]{2}$'
status:
type: string
description: Current status of the registered agent appointment.
enum: [active, pending, resigned, revoked]
agent_name:
type: string
description: Name of the registered agent.
agent_address:
$ref: '#/components/schemas/Address'
appointment_date:
type: string
format: date
description: Date the registered agent was officially appointed.
created_at:
type: string
format: date-time
description: ISO 8601 timestamp when the appointment record was created.
updated_at:
type: string
format: date-time
description: ISO 8601 timestamp of the last update.
RegisteredAgentCreate:
type: object
title: RegisteredAgentCreate
description: Fields required to create a registered agent appointment.
required: [entity_id, state]
properties:
entity_id:
type: string
description: Identifier of the entity requiring a registered agent.
state:
type: string
description: Two-letter state code where the agent should be appointed.
pattern: '^[A-Z]{2}$'
notes:
type: string
description: Optional notes for the registered agent appointment request.
Filing:
type: object
title: Filing
description: A required compliance filing such as an annual report or statement of information.
required: [id, entity_id, state, filing_type, status]
properties:
id:
type: string
description: Unique identifier for the filing.
entity_id:
type: string
description: Identifier of the entity required to submit this filing.
state:
type: string
description: Two-letter state code of the filing jurisdiction.
pattern: '^[A-Z]{2}$'
filing_type:
type: string
description: Type of required compliance filing.
enum:
- annual_report
- biennial_report
- statement_of_information
- franchise_tax
- beneficial_ownership
- other
status:
type: string
description: Current status of the filing.
enum: [pending, in_progress, filed, overdue, waived]
due_date:
type: string
format: date
description: Date by which the filing must be submitted to the state.
filed_date:
type: string
format: date
description: Date the filing was actually submitted, if completed.
fee:
type: number
description: Filing fee in USD charged by the state.
filing_period:
type: string
description: The period or year covered by this filing (e.g., '2025').
documents:
type: array
description: Documents
# --- truncated at 32 KB (41 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/harbor-compliance/refs/heads/main/openapi/harbor-compliance-openapi.yml