Developer Portal
Insights
PurpleTRACMTIPodium
Other
Other
  • Weather
Insights
PurpleTRACMTIPodium
Other
Other
  • Weather
  1. Fleet Management
  • Start Here
    • API Overview
    • Getting Started
    • Authentication
    • Quick Start
    • Testing & Sandbox
  • Concepts & Terminology
    • Concepts & Terminology
    • Notifications & Webhooks
    • Errors & Status Codes
    • Pagination & Filtering
    • Versioning & Deprecation
    • Changelog
  • Reference Data
    • Vessel Types
    • Vessel Classes
    • Vessel Statuses
    • Zone & Port Types
  • Build & Operate
    • AI Assistants & Agents
    • FAQ
    • SDKs & Code Generation
  • Vessel & Voyage
    • Overview
    • Vessel Insights
      • Overview
      • Vessel Search
      • Vessel Characteristics
    • Voyage Insights
      • Overview
      • Worked Examples
      • Vessel Port Calls
      • Vessel Zone & Port Events
      • Vessel AIS Reporting Gaps
      • Vessel STS Pairings
      • Positional Discrepancies
      • Port State Control
    • Vessel Positions
      • Vessel Positions
      • Historical Vessel Track
      • Latest Vessel Positions
    • Vessel Notifications
      • Worked Examples
      • Get Vessel Notification Subscriptions
      • Create Vessel Notification Subscription
      • Get Vessel Notification Subscription
      • Edit Vessel Notification Subscription
      • Get Vessel Notifications by Subscription ID
      • Get All Vessel Notifications
      • Delete Vessel Notification Subscription
  • Port & Trade
    • Overview
    • Choosing Port Endpoints
    • Port Insights
      • Port Insights
      • Berth Calls by Port
      • Inbound Vessels
    • Port Analytics
      • Port Analytics
      • Port Analytics: Worked Examples
      • Berth KPIs
      • Berth Details
      • Port Arrival & Departure Analytics
  • Domain & Fleet
    • Overview
    • Choosing Zone Endpoints
    • Zone Insights
      • Overview
    • Zone Analytics
      • Zone Analytics
      • Zone Analytics: Worked Examples
      • Zone Entry & Exit Analytics
    • Fleet Management
      • Fleet Management
      • Fleet Management: Worked Examples
      • List Fleets
        GET
      • Create Fleet
        POST
      • Get Fleet Details
        GET
      • Delete Fleet
        DELETE
      • Update Fleet
        PUT
      • List Fleet Vessels
        GET
      • Get Fleet Composition
        GET
      • List Fleet Events
        GET
    • Custom Zones
      • Custom Zones
      • Create Custom Zone
      • Edit Custom Zone
  • Zones & Ports
    • Overview
    • Zone & Port Insights
      • Zone & Port Search
      • Get Single Zone or Port
      • Zone & Port Traffic
      • Vessels in Zone or Port
    • Zone & Port Notifications
      • Zone & Port Notifications
      • Zone & Port Notifications: Worked Examples
      • Create Zone & Port Notification Subscription
      • Get Zone & Port Notification Subscriptions
      • Edit Zone & Port Notification Subscription
      • Delete Zone & Port Notification Subscription
      • Get Zone & Port Notification Subscription
      • Search Zone & Port Notifications
      • Get Zone & Port Notifications by Subscription ID
      • Get All Zone & Port Notifications
  • Schemas
    • VesselTankerCharacteristicsResponse
    • ImoBatchSearchResponse
    • ReportedDestination
    • AisFieldDeltaNavigationalStatus
    • AisFieldDeltaErrorResponse
    • BerthDetailsDto
    • BerthListQuery
    • BerthPortInfoDto
    • BerthSummaryDto
    • DwellTimeDataPointDto
    • OccupancyDto
    • PortAnalyticsItem
    • PortAnalyticsQuery
    • PortAnalyticsResponse
    • PortAnalyticsTotals
    • TopVisitorDto
    • VesselTypeMixDto
    • ZoneAnalyticsItem
    • ZoneAnalyticsQuery
    • ZoneAnalyticsResponse
    • ZoneDetail
    • PortDetail
    • PositionReport
    • PositionalDiscrepancyEvent
    • AisSpoofingErrorResponse
    • AisSpoofingVesselInformation
    • VesselPortsFilter
    • ZoneDetails
    • PortDetails
    • CustomZoneDetails
    • CircleDetails
    • PortEventDetails
    • PortCallEventDetails
    • BerthInformationPortCall
    • PortVessel
    • PortListResponse
    • ZoneDefinitionResponse
    • CustomZoneResponse
    • ArrivalsDeparturesResponse
    • VesselsInZonePortResponse
    • BerthEventsResponse
    • VoyagePortCallsResponse
    • VoyageZonePortEventsResponse
    • CustomZoneRequest
    • CustomCircle
    • ZoneServiceErrorResponse
    • ZoneServiceVesselInformation
    • VesselIdentifier
    • LatestVesselFilter
    • CircleZone
    • PolygonZone
    • GeographicFilter
    • HistoricalPositionSearchRequest
    • LatestPositionSearchRequest
    • VesselInfo
    • MatchedDestination
    • ConsolidatedPosition
    • CpsApiErrorResponse
    • CpsApiPaginationMeta
    • CpsApiNavigationalStatus
    • AnalyticsServiceErrorResponse
    • ResponseMeta
    • FlagDetail
    • CountryOfBuild
    • Ownership
    • VesselTankerCharacteristics
    • VesselCharacteristicsResponse
    • VesselSummary
    • VesselSearchResponse
    • ImoBatchSearchMeta
    • ImoBatchSearchSummary
    • ImoVesselSummary
    • ImoErrorEntry
    • ImoBatchSearchData
    • AssetInformationServiceErrorResponse
    • AssetInformationServiceDimensions
    • AssetInformationServiceVesselCharacteristics
    • EmailSettingsDTO
    • VesselFilterRequestDTO
    • ZonePortFilterRequestResponseDTO
    • SettingsResponseDto
    • SubscriptionResponseDTO
    • NotificationResponseDTO
    • EventNotificationServiceMetaData
    • BerthEventDetails
    • PscInspection
    • CustomPolygon
    • ZoneServiceMeta
    • HistoricalPositionsResponse
    • FleetListResponse
    • FleetListMeta
    • FleetSummary
    • FleetItem
    • VesselPosition
    • FleetVesselItem
    • FleetDetailMeta
    • FleetDetail
    • AnalyticsServiceVesselInformation
    • FailedVessel
    • CreateFleetV2Request
    • CreateFleetV2Response
    • UpdateFleetV2Request
    • FleetManagementApiMeta
    • FleetManagementApiErrorResponse
    • AssetInformationServiceCountryOfBuild
    • BerthDetailMetaDto
    • FleetEventNavigationalStatus
    • LegacyStsPairingsResponse
    • VesselZonesFilter
    • EventNotificationServiceErrorResponse
    • VesselAisReportingGapsFilter
    • GapReportingErrorResponse
    • VesselStsPairingsFilter
    • VoyageVesselInformation
    • StsPairingsResponse
    • VesselPositionalDiscrepanciesFilter
    • VesselDraughtChangeFilter
    • PscInspectionServiceErrorResponse
    • ReportingStatus
    • VesselAisDestinationChangeFilter
    • DaysNotReportingRange
    • VesselAisEtaChangeFilter
    • AnalyticsServiceMeta
    • VesselMmsiChangeFilter
    • FleetInformation
    • VesselNavigationalStatusChangeFilter
    • FleetCompositionResponse
    • CompositionData
    • VesselInboundBaseResponse
    • Summary
    • TypeAndClass
    • RegistrationAndFlag
    • AnalyticsServiceCountryOfBuild
    • BuildAndOrigin
    • SizeAndDimensions
    • CategoryItem
    • ChartSection
    • RankedSection
    • BerthDetailQueryDto
    • SizeSection
    • DimensionsSection
    • AisGapStartedPosition
    • AisGapEndedPosition
    • ZoneCentroid
    • GapReportingMetaData
    • ZoneInformation
    • StsPairingServiceMeta
    • PscPortInformation
    • AisSpoofingMeta
    • FleetEventsResponse
    • PscInspectionServiceMetaData
    • FleetEventsData
    • ZoneServicePaginationMeta
    • EventVesselInformation
    • VesselInbound
    • ZoneEventDetails
    • ZoneEventResponse
    • Schedule
    • AisGapEventResponse
    • StsPairingEventResponse
    • StsPairedVessel
    • PositionalDiscrepancyEventResponse
    • Centroid
    • DiscrepancyPositionStart
    • DiscrepancyPositionEnd
    • PscEventResponse
    • BerthDetailResponseDto
    • GapEventsResponse
    • StsPairingsData
    • PscInspectionsResponse
    • Point
    • GapEventData
    • StsPairingEvent
    • PscInspectionData
    • LatestPosition
    • VesselScreening
    • GapEvent
    • Location
    • BerthKpiDto
    • FlagCodesDTO
    • PortInformation
    • BerthListMeta
    • GapPosition
    • StsPairingServiceVesselInformation
    • AnalyticsServiceNavigationalStatus
    • AisFieldDeltaVesselInformation
    • VesselStatus
    • GapReportingNavigationalStatus
    • StsPairingServiceErrorResponse
    • PscInspectionServiceVesselInformation
    • AisFieldDeltaMetaData
    • BerthListResponseDto
    • GapReportingVesselInformation
    • VesselSettingsRequestDto
    • LegacyMeta
    • PolygonDetails
    • PositionalDiscrepancyData
    • ZonePortSettingsRequestDto
    • FleetVesselListResponse
    • VesselFlag
    • LegacyStsPairingsData
    • PositionalDiscrepancyResponse
    • VesselSubscriptionRequestDTO
    • LegacyStsPairing
    • BerthTerminalGroupDto
    • ZoneServiceNavigationalStatus
    • ZonePortSubscriptionRequestDTO
    • LegacyPairedVessel
    • UpdateFleetV2Response
    • StsPairingServiceVesselCharacteristics
    • MaritimeAnalyticsBeErrorResponse
    • FleetSummaryV2
    • FleetDetailResponse
    • GapDto
    • StsPairingServiceDimensions
    • VesselIdentifiers
    • RejectedVessels
    • BerthInformation
    • VesselPositionsGroup
    • SubscriptionSingleResponseDTO
    • VesselResultsSummary
    • LatestVesselPositionItem
    • OccupancyPaginationDto
    • SubscriptionsResponseDTO
    • SubscriptionIdsRequestDTO
    • VesselEntryDetails
    • PortAnalyticsDataEntry
    • LatestPositionDetails
    • LatestPositionsResponse
    • FleetSummaryV2Update
    • PortAnalyticsMeta
    • VesselResultsDetail
    • ZonePortVessel
    • BerthEvent
    • VoyagePortCall
    • VoyagePortZoneEvent
    • PortDwellSeriesEntryDto
    • PortInfoDto
    • TopVesselDto
    • VesselVisitDto
    • ZoneAnalyticsDataEntry
    • ZoneAnalyticsMeta
    • ZoneAnalyticsTotals
    • ZoneInfoDto
  1. Fleet Management

Fleet Management

A fleet is a named group of vessels you own. Build one once and you can subscribe to events for the whole group, instead of naming every hull each time and maintaining that list in two places.
Eight operations, all under https://api.polestar-production.com/fleet-management/v2/fleets.

What the eight do#

OperationDoes
POST /fleet-management/v2/fleetsCreate a fleet and populate it with vessels, in one call
GET /fleet-management/v2/fleetsList your active fleets
GET /fleet-management/v2/fleets/{fleet_id}Read one fleet, including its current vessel count
PUT /fleet-management/v2/fleets/{fleet_id}Rename it, change its description, add or remove vessels
DELETE /fleet-management/v2/fleets/{fleet_id}Soft-delete it
GET /fleet-management/v2/fleets/{fleet_id}/vesselsList its members, enriched with vessel reference data
GET /fleet-management/v2/fleets/{fleet_id}/compositionBreak it down by type, class, flag, build and size, without listing every member
GET /fleet-management/v2/fleets/{fleet_id}/eventsList recent events across all its members
{fleet_id} is a UUID. A malformed fleet_id returns 422 on the read and update endpoints; Delete Fleet returns 400.
Coming from v1
/v1/fleets still runs and is not deprecated, so existing integrations keep working. New work should use /v2, which is what this reference documents.
The move is not like-for-like. In v1 a fleet started empty and membership was a separate POST /v1/fleets/{id}/vessels call. In v2 that endpoint does not exist: vessels go in the body when you create the fleet, and add_imo and remove_imo are part of the same PUT that changes the name.

Creating a fleet#

One call creates the fleet and fills it.
name is required, between 3 and 100 characters. description is optional, up to 200. imo_numbers is required, which is the change most likely to catch a v1 client: there is no way to create an empty fleet.
Returns 201 Created with the fleet's fleet_id.
At least one IMO must resolve to a vessel we hold. If none of them do, the whole request fails with 400 and no fleet is created. If some resolve and some do not, the fleet is created with the ones that worked and the rest come back under vessel_results.rejected, grouped by reason.
A second fleet with the same name is rejected with 409, matched case-insensitively across your active fleets. v1 did not enforce this.

Changing a fleet#

PUT /fleet-management/v2/fleets/{fleet_id} carries all four fields, and any combination of them:
At least one of name, description, add_imo and remove_imo must be present, or the request is rejected with 422. An omitted field is left unchanged, and no IMO may appear in both lists.
Swapping one vessel for another is a single call, as it was in v1. What changed is that renaming a fleet and changing its vessels are now also a single call if you want them to be.
Create and update report failures differently
Both calls succeed partially, and they do not use the same shape for it.
POST returns vessel_results.rejected, an array grouped by reason, each entry carrying reason and the imo_numbers that hit it. The reasons are INVALID_FORMAT and NOT_FOUND.
PUT returns vessel_results.failed, an array with one entry per IMO, each carrying imo, reason and the action it was supplied under. The reasons are VESSEL_NOT_FOUND, INVALID_IMO, ALREADY_IN_FLEET and SYSTEM_ERROR.
A client that reads one shape will find nothing in the other. Read both.

Reading a fleet#

GET /v2/fleets/{fleet_id}/vessels returns members enriched from the asset cache with vessel information and last known position, along with when each vessel was added and by whom. That audit trail is the reason to keep membership here rather than in your own table.
Four filters narrow it, each accepting a comma-separated list or a repeated parameter: flag_code as ISO 3166-1 alpha-3, vessel_type, vessel_class and mti_score.
GET /v2/fleets/{fleet_id} returns the fleet with its current vessel count. A fleet that has been soft-deleted reads as 409 here rather than 404.
The two list endpoints sort on different fields
GET /v2/fleets accepts name and last_modified_at only, defaulting to -last_modified_at. It also takes a name filter, matched case-insensitively on a partial string, so finding a fleet by name no longer means listing everything and matching client-side as it did in v1.
GET /v2/fleets/{fleet_id}/vessels sorts on the vessel fields it returns. Either endpoint takes a - prefix for descending, and anything outside the accepted set is rejected with 422.
Both page with limit and offset. limit defaults to 100 and is capped at 500.
mti_score depends on entitlement
mti_score is left out of each vessel entirely unless your account is entitled to MTI tier 1. It is absent rather than null, so treat a missing key as "not entitled" rather than "no score".

Profiling a fleet#

GET /v2/fleets/{fleet_id}/composition tells you what a fleet is made of, for a chart or a report, without paging through its members.
The response has five sections:
SectionHolds
summaryVessel count after filtering, average age, total deadweight and the number of flag states
type_and_classCounts and percentages by vessel type and by vessel class
registration_and_flagThe most common ports of registry and flag states
build_and_originThe most common countries of build and builders, and an age profile
size_and_dimensionsDistributions of deadweight, gross tonnage, length overall, beam and draught
Each category carries a label, count and percentage. We count a vessel with no value for an attribute under Unknown. Where a section reports vessels_with_data, that is the number of vessels its figures are based on, so check it before comparing two fleets.
flag_code (ISO 3166-1 alpha-3), vessel_type and vessel_class narrow the fleet before we compute the breakdown. Each takes a comma-separated list or a repeated parameter, and values are case-insensitive. The vessels list also filters on mti_score; composition does not.
An inactive or deleted fleet returns 409, as it does on the fleet itself.

Recent activity across a fleet#

GET /v2/fleets/{fleet_id}/events lists recent events for every vessel in the fleet in one feed.
timestamp_start is required, and a call without it returns 400. timestamp_end is optional. Both are UTC in ISO 8601 and both are inclusive; a window that ends before it starts returns 422.
event_type narrows the feed, repeated or as a comma-separated list:
Event typesCover
ZONE_ENTRY, ZONE_EXIT, PORT_ARRIVAL, PORT_DEPARTURE, PORT_AREA_ARRIVAL, PORT_AREA_DEPARTUREZone and port activity
AIS_GAPPeriods when a vessel stopped transmitting AIS
STS_PAIRINGPotential ship-to-ship operations
POSITIONAL_DISCREPANCYPossible AIS spoofing
PORT_STATE_CONTROLInspections and detentions
Each entry in data.events carries event_details, whose fields depend on the event type, and vessel_information for the member it concerns. Zone and port events also carry zone_information. Page with limit (1 to 500, default 100) and offset; meta.total_count says how many events match.
Read the feed to look back, subscribe to be told
The feed answers what happened across the fleet in a window you choose. To hear about new events as they happen, subscribe the fleet, as the next sections describe.

Ownership and deletion#

Fleets are private to the user who created them. Only the creator may read a fleet, list its vessels, read its composition or events, update it or delete it. Another authenticated user asking for your fleet gets 403, not 404, so the response distinguishes "not yours" from "does not exist".
Deletion is soft. We retain the record and clear its active flag, so the fleet stops appearing in reads and listings without being destroyed. DELETE returns 204 No Content with an empty body.

Where fleets get used#

A fleet ID is accepted wherever a subscription would otherwise take a single IMO. Set fleet_id instead of imo on a vessel notification subscription and every member is covered.
We resolve membership as each event is evaluated, not when you subscribed. A vessel added to the fleet next month starts generating notifications without anyone touching the subscription, and a vessel removed stops. That is the whole argument for building a fleet instead of maintaining a list of IMOs in your own scheduler.
Vessel Notifications: Worked Examples shows that subscription in full.

Related#

Fleet Management: Worked Examples
Building a fleet, keeping membership current, and reading its composition and recent events.
Vessel Notifications: Worked Examples
Pointing a subscription at a fleet instead of a single vessel.
Vessel Insights
Turning names into the IMO numbers a fleet is built from.
Modified at 2026-10-21 14:41:29
Previous
Zone Entry & Exit Analytics
Next
Fleet Management: Worked Examples
Built with