Forward Networks Network Snapshots API
List or manage the network Snapshots collected from network devices
List or manage the network Snapshots collected from network devices
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/forward-networks-network-snapshots-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
openapi: 3.2.0
info:
title: 'Forward Networks: Complete Aliases Network Snapshots API'
description: Model and verify networks
contact:
email: support@forwardnetworks.com
license:
name: MIT
url: https://spdx.org/licenses/MIT
version: '26.6'
servers:
- url: /api
tags:
- name: Network Snapshots
description: List or manage the network Snapshots collected from network devices
summary: Network Snapshots
paths:
/networks/{networkId}/snapshots:
get:
tags:
- Network Snapshots
summary: List all Snapshots
operationId: listNetworkSnapshots
parameters:
- name: networkId
in: path
required: true
schema:
type: string
- name: state
in: query
description: List only Snapshots in this state.
schema:
$ref: '#/components/schemas/SnapshotState'
- name: minSuccessfulDevices
in: query
description: List only Snapshots with at least this many successfully modeled devices.
schema:
type: integer
format: int32
- name: minSuccessfulDevicePct
in: query
description: List only Snapshots with at least this percentage of devices successfully modeled.
schema:
type: number
format: double
- name: maxCollectionFailureDevices
in: query
description: List only Snapshots with no more than this many devices from which collection has failed.
schema:
type: integer
format: int32
- name: maxCollectionFailureDevicePct
in: query
description: 'List only Snapshots with no more than this percentage of devices from which collection has
failed.'
schema:
type: number
format: double
- name: maxParsingFailureDevices
in: query
description: 'List only Snapshots with no more than this many devices for which parsing of collected data has
failed.'
schema:
type: integer
format: int32
- name: maxParsingFailureDevicePct
in: query
description: 'List only Snapshots with no more than this percentage of devices for which parsing of collected data has
failed.'
schema:
type: number
format: double
- name: limit
in: query
description: Maximum number of Snapshots desired
schema:
type: integer
format: int32
- name: includeArchived
in: query
description: Also include archived snapshots. Defaults to false if not provided.
schema:
type: boolean
default: false
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/NetworkSnapshots'
security:
- api_token: []
post:
tags:
- Network Snapshots
summary: Import a Snapshot
description: 'Imports a network Snapshot that was previously exported as a .zip file. If multiple Snapshot .zip files are
uploaded in a single request, they will be merged. They must not have any devices in common.'
operationId: createSnapshot
parameters:
- name: networkId
in: path
required: true
schema:
type: string
requestBody:
content:
multipart/form-data:
schema:
type: object
required:
- file
properties:
file:
type: array
items:
type: string
format: binary
note:
type: string
required: true
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SnapshotInfo'
security:
- api_token: []
/networks/{networkId}/snapshots/latestProcessed:
get:
tags:
- Network Snapshots
summary: Get the latest processed Snapshot
description: 'Returns the latest processed Snapshot (the most recent one that''s currently prepared for
[path searches](https://docs.fwd.app/latest/api/path-search/) and
[new checks](https://docs.fwd.app/latest/api/checks/)).
Triggers processing of the latest Snapshot if it''s not already underway and the network has no processed
Snapshots.'
operationId: getLatestProcessedSnapshot
parameters:
- name: networkId
in: path
required: true
schema:
type: string
responses:
'200':
description: Processing is complete for the identified Snapshot.
content:
application/json:
schema:
$ref: '#/components/schemas/SnapshotInfo'
'404':
description: The network has no Snapshots.
content: {}
'409':
description: 'None of the Snapshots in the network are processed. Processing of the latest Snapshot has
begun.'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorInfo'
security:
- api_token: []
/snapshots/{snapshotId}:
get:
tags:
- Network Snapshots
summary: Export a Snapshot
description: Exports a network Snapshot as a .zip file.
operationId: exportSnapshot
parameters:
- name: snapshotId
in: path
required: true
schema:
type: string
- name: only
in: query
description: Use `?only=CONFIG` to include only device configuration files.
schema:
type: string
const: CONFIG
responses:
'200':
description: OK
content: {}
security:
- api_token: []
post:
tags:
- Network Snapshots
summary: Export a Snapshot subset
description: 'Exports a network Snapshot as a .zip file, optionally limiting which devices are included and optionally
[obfuscating](https://docs.fwd.app/latest/application/settings/system/obfuscate-snapshot/) sensitive data.
To limit which devices are included, specify either `"includeDevices"` or `"excludeDevices"`. To obfuscate,
specify an `"obfuscationKey"`.'
operationId: exportSnapshotSubset
parameters:
- name: snapshotId
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SnapshotExportParams'
required: true
responses:
'200':
description: OK
content: {}
security:
- api_token: []
delete:
tags:
- Network Snapshots
summary: Delete a Snapshot
operationId: deleteSnapshot
parameters:
- name: snapshotId
in: path
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
security:
- api_token: []
/snapshots/{snapshotId}?action=computeAdvancedReachability:
post:
tags:
- Network Snapshots
summary: Trigger advanced reachability computation
description: 'Requests advanced reachability computation for a Snapshot. The computation runs asynchronously; this endpoint
returns immediately. The Snapshot must have completed the reachability processing stage.'
operationId: computeAdvancedReachability
parameters:
- name: snapshotId
in: path
required: true
schema:
type: string
responses:
'204':
description: Success
content: {}
'404':
description: The Snapshot was not found.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorInfo'
'409':
description: Prerequisite Snapshot processing has not yet completed.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorInfo'
security:
- api_token: []
/snapshots/{snapshotId}/metrics:
get:
tags:
- Network Snapshots
summary: Get Snapshot metrics
description: Returns collection and processing health metrics of a Snapshot.
operationId: getSnapshotMetrics
parameters:
- name: snapshotId
in: path
required: true
schema:
type: string
responses:
'200':
description: Successfully retrieved metrics for the Snapshot.
content:
application/json:
schema:
$ref: '#/components/schemas/SnapshotMetrics'
'404':
description: 'The Snapshot was not found or its metrics were not found; the health metrics will be recomputed if the
Snapshot is reprocessed.'
content: {}
security:
- api_token: []
components:
schemas:
Network:
type: object
required:
- id
- name
- orgId
properties:
id:
type: string
parentId:
type: string
description: 'The network from which this Workspace network was created. Absent if this network is not a
Workspace.'
name:
type: string
examples:
- My Network
orgId:
type: string
creator:
type: string
description: The username of the user who created the network, or null if the account was deleted
examples:
- mary
creatorId:
type: string
description: The id of the user who created the network, or null if the account was deleted
examples:
- '123'
createdAt:
type: string
examples:
- '2022-04-06T20:34:45.118Z'
created:
type: string
description: Deprecated for removal in release 26.7. Use `createdAt` instead.
examples:
- '2022-04-06T20:34:45.118Z'
note:
type: string
description: An optional network description.
retentionDays:
type: integer
format: int32
minimum: 1
maximum: 365
description: 'The number of days without any use of this network after which it will be automatically deleted. Absent for
parent networks and permanent Workspace networks.'
secondsToExpiry:
type: integer
format: int64
description: 'Number of seconds without use before the network expires. Present for temporary Workspace
networks only.'
SnapshotInfo:
type: object
properties:
createdAt:
type: string
examples:
- '2019-09-20T17:40:34.567Z'
id:
type: string
isDraft:
type: boolean
examples:
- false
note:
type: string
parentSnapshotId:
type: string
processedAt:
type: string
examples:
- '2019-09-20T18:17:36.789Z'
processingTrigger:
type: string
enum:
- UNKNOWN
- COLLECTION
- IMPORT
- REPROCESS
- FORK
restoredAt:
type: string
examples:
- '2019-09-20T17:40:34.567Z'
state:
$ref: '#/components/schemas/SnapshotState'
advancedReachabilityState:
type: string
description: State of advanced reachability computation for this Snapshot.
enum:
- UNPROCESSED
- PROCESSING
- PROCESSED
- FAILED
- CANCELED
- TIMED_OUT
favoritedBy:
type: string
description: 'The username of the user who most recently marked this Snapshot as a favorite if it''s currently a favorite
and the user account hasn’t been deleted.'
examples:
- mary
favoritedByUserId:
type: string
description: 'The id of the user who most recently marked this Snapshot as a favorite if it’s currently a
favorite.'
examples:
- '1234'
favoritedAt:
type: string
description: 'When this Snapshot was most recently marked as a favorite if it’s currently a favorite. A favorite Snapshot
will never be automatically deleted, regardless of its network’s Snapshot retention policy.'
examples:
- '2019-09-30T19:48:59.481Z'
SnapshotMetrics:
type: object
properties:
collectionConcurrency:
type: integer
format: int32
examples:
- 16
collectionDuration:
type: integer
format: int64
examples:
- 1234
createdAt:
type: string
examples:
- '2022-04-06T20:34:45.118Z'
deviceCollectionFailures:
type: object
additionalProperties:
type: integer
format: int32
description: 'Possible device error types during collection
*UNKNOWN*: Unknown error
*CONNECTION_TIMEOUT*: Connection to device timed out
*CONNECTION_REFUSED*: Connection to device refused
*AUTHENTICATION_FAILED*: Authentication failed
*KEY_EXCHANGE_FAILED*: Key exchange failed
*AUTHORIZATION_FAILED*: Authorization failed
*AVI_SHELL_AUTH_FAILED*: Avi authentication failed
*AVI_CONTROLLER_WITHOUT_HEALTHY_SERVICE_ENGINES*: No Avi Service Engines found
*NETWORK_UNREACHABLE*: Network not reachable
*IO_ERROR*: I/O error
*SESSION_CLOSED*: Session closed unexpectedly
*STATE_COLLECTION_FAILED*: State collection failed
*JUMP_SERVER_CONNECTION_TIMEOUT*: Jump server timed out
*JUMP_SERVER_PASSWORD_AUTH_FAILED*: Jump server auth failed
*JUMP_SERVER_CONNECTION_FAILED*: Jump server connection refused
*JUMP_SERVER_KEY_EXCHANGE_FAILED*: Jump server key exchange failed
*PROXY_SERVER_PING_FAILED*: Proxy ping failed
*PROXY_SERVER_PORT_REACHABILITY_FAILED*: Proxy port not reachable
*PROXY_SERVER_CONNECTION_FAILED*: Proxy connection refused
*PROXY_SERVER_AUTHENTICATION_FAILED*: Proxy authentication failed
*PRIV_PASSWORD_ERROR*: Privileged password failed
*UNSUPPORTED_VERSION*: Unsupported version
*DEVICE_TYPE_UNDETECTED*: Undetected device type
*WARN_TYPE_MISMATCH*: Device type mismatch
*DEVICE_IS_CHILD_CONTEXT*: Parent context required
*MANAGER_COLLECTOR_NOT_FOUND*: Collector manager error
*INCOMPLETE_SETUP*: Incomplete setup
*COLLECTION_NOT_FOUND*: Collection not found
*INFINITE_LOOP_IN_COMMAND_OUTPUT*: Collection stuck in loop
*MISSING_FILE*: File is missing
*UNSUPPORTED_VENDOR*: Vendor not supported
*COMMAND_DISABLED*: Required command is disabled
*APIC_CONFIG_COLLECTION_FAILED*: APIC config collection failed
*UNEXPECTED_KEY_EXCHANGE_MESSAGE*: Unexpected Key-Exchange message
*UNDISCOVERED_ACI_FABRIC*: ACI fabric node was not discovered by APIC
*SLOW_READ_RATE_DETECTED*: Read rate from the remote peer is too low
*COLLECTION_TIMED_OUT*: Collection timed out
*COLLECTION_CANCELED*: Collection canceled by user
*OPERATION_TIMED_OUT*: Operation timed out
*CERTIFICATE_CHECK_FAILED*: Certificate cannot be verified'
deviceProcessingFailures:
type: object
additionalProperties:
type: integer
format: int32
description: 'Possible error types during processing
*LICENSE_EXHAUSTED*: License limit exceeded
*MISSING_SIGNATURE*: Missing signature
*DUPLICATE*: Duplicate device
*PARSER_EXCEPTION*: Couldn''t be parsed
*UNSUPPORTED_VENDOR*: Vendor not supported'
endpointCollectionFailures:
type: object
additionalProperties:
type: integer
format: int32
description: 'Possible device error types during collection
*UNKNOWN*: Unknown error
*CONNECTION_TIMEOUT*: Connection to device timed out
*CONNECTION_REFUSED*: Connection to device refused
*AUTHENTICATION_FAILED*: Authentication failed
*KEY_EXCHANGE_FAILED*: Key exchange failed
*AUTHORIZATION_FAILED*: Authorization failed
*AVI_SHELL_AUTH_FAILED*: Avi authentication failed
*AVI_CONTROLLER_WITHOUT_HEALTHY_SERVICE_ENGINES*: No Avi Service Engines found
*NETWORK_UNREACHABLE*: Network not reachable
*IO_ERROR*: I/O error
*SESSION_CLOSED*: Session closed unexpectedly
*STATE_COLLECTION_FAILED*: State collection failed
*JUMP_SERVER_CONNECTION_TIMEOUT*: Jump server timed out
*JUMP_SERVER_PASSWORD_AUTH_FAILED*: Jump server auth failed
*JUMP_SERVER_CONNECTION_FAILED*: Jump server connection refused
*JUMP_SERVER_KEY_EXCHANGE_FAILED*: Jump server key exchange failed
*PROXY_SERVER_PING_FAILED*: Proxy ping failed
*PROXY_SERVER_PORT_REACHABILITY_FAILED*: Proxy port not reachable
*PROXY_SERVER_CONNECTION_FAILED*: Proxy connection refused
*PROXY_SERVER_AUTHENTICATION_FAILED*: Proxy authentication failed
*PRIV_PASSWORD_ERROR*: Privileged password failed
*UNSUPPORTED_VERSION*: Unsupported version
*DEVICE_TYPE_UNDETECTED*: Undetected device type
*WARN_TYPE_MISMATCH*: Device type mismatch
*DEVICE_IS_CHILD_CONTEXT*: Parent context required
*MANAGER_COLLECTOR_NOT_FOUND*: Collector manager error
*INCOMPLETE_SETUP*: Incomplete setup
*COLLECTION_NOT_FOUND*: Collection not found
*INFINITE_LOOP_IN_COMMAND_OUTPUT*: Collection stuck in loop
*MISSING_FILE*: File is missing
*UNSUPPORTED_VENDOR*: Vendor not supported
*COMMAND_DISABLED*: Required command is disabled
*APIC_CONFIG_COLLECTION_FAILED*: APIC config collection failed
*UNEXPECTED_KEY_EXCHANGE_MESSAGE*: Unexpected Key-Exchange message
*UNDISCOVERED_ACI_FABRIC*: ACI fabric node was not discovered by APIC
*SLOW_READ_RATE_DETECTED*: Read rate from the remote peer is too low
*COLLECTION_TIMED_OUT*: Collection timed out
*COLLECTION_CANCELED*: Collection canceled by user
*OPERATION_TIMED_OUT*: Operation timed out
*CERTIFICATE_CHECK_FAILED*: Certificate cannot be verified'
endpointProcessingFailures:
type: object
additionalProperties:
type: integer
format: int32
description: 'Possible error types during processing
*LICENSE_EXHAUSTED*: License limit exceeded
*MISSING_SIGNATURE*: Missing signature
*DUPLICATE*: Duplicate device
*PARSER_EXCEPTION*: Couldn''t be parsed
*UNSUPPORTED_VENDOR*: Vendor not supported'
hostComputationStatus:
$ref: '#/components/schemas/ComputationStatus'
description: Host computation status
examples:
- SUCCESS
ipLocationIndexingStatus:
$ref: '#/components/schemas/ComputationStatus'
description: IP location indexing status
examples:
- SUCCESS
jumpServerCollectionConcurrency:
type: integer
format: int32
l2IndexingStatus:
$ref: '#/components/schemas/ComputationStatus'
description: L2 elements (vlans, LAN segments etc.) indexing status
examples:
- SUCCESS
numCollectionFailureDevices:
type: integer
format: int32
numCollectionFailureEndpoints:
type: integer
format: int32
numProcessingFailureDevices:
type: integer
format: int32
numProcessingFailureEndpoints:
type: integer
format: int32
numSuccessfulDevices:
type: integer
format: int32
examples:
- 401
numSuccessfulEndpoints:
type: integer
format: int32
examples:
- 234
pathSearchIndexingStatus:
$ref: '#/components/schemas/ComputationStatus'
description: End-to-end path indexing status
examples:
- SUCCESS
processingDuration:
type: integer
format: int64
examples:
- 5678
searchIndexingStatus:
$ref: '#/components/schemas/ComputationStatus'
description: Object search indexing status
examples:
- SUCCESS
snapshotId:
type: string
snapshotState:
$ref: '#/components/schemas/SnapshotState'
description: Current state of the Snapshot
examples:
- PROCESSING
SnapshotState:
type: string
enum:
- UNPACKING
- UNPROCESSED
- PROCESSING
- PROCESSED
- FAILED
- CANCELED
- TIMED_OUT
- ARCHIVED
- RESTORING
- RESTORE_FAILED
NetworkSnapshots:
allOf:
- $ref: '#/components/schemas/Network'
- type: object
required:
- snapshots
properties:
snapshots:
type: array
items:
$ref: '#/components/schemas/SnapshotInfo'
SnapshotExportParams:
type: object
properties:
includeDevices:
type: array
items:
type: string
description: Must be absent if `"excludeDevices"` is specified.
examples:
- - device-1
- device-2
- pa*
excludeDevices:
type: array
items:
type: string
description: Must be absent if `"includeDevices"` is specified.
examples:
- - device-6
- device-7
- pa*
obfuscationKey:
type: string
description: 'If specified, sensitive data will be
[obfuscated](https://docs.fwd.app/latest/application/settings/system/obfuscate-snapshot/).'
examples:
- a-sEcr3t-kEy-th4t-i$-h4rd-to-guE$$
obfuscateNames:
type: boolean
description: 'default: `false`. If specified, `"obfuscationKey"` must also be specified.'
examples:
- false
ComputationStatus:
type: string
enum:
- UNKNOWN
- FAILURE
- SUCCESS
- CANCELED
ErrorInfo:
type: object
required:
- httpMethod
- apiUrl
- message
properties:
httpMethod:
type: string
examples:
- GET
enum:
- GET
- HEAD
- POST
- PUT
- PATCH
- DELETE
apiUrl:
type: string
examples:
- /api/version
message:
type: string
description: A description of the error
reason:
type: string
securitySchemes:
api_token:
type: http
scheme: basic