Forward Networks Network Snapshots API

List or manage the network Snapshots collected from network devices

Operations 8

GET /networks/{networkId}/snapshots List all Snapshots #
POST /networks/{networkId}/snapshots Import a Snapshot #
GET /networks/{networkId}/snapshots/latestProcessed Get the latest processed Snapshot #
GET /snapshots/{snapshotId} Export a Snapshot #
POST /snapshots/{snapshotId} Export a Snapshot subset #
DELETE /snapshots/{snapshotId} Delete a Snapshot #
POST /snapshots/{snapshotId}?action=computeAdvancedReachability Trigger advanced reachability computation #
GET /snapshots/{snapshotId}/metrics Get Snapshot metrics #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • 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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/forward-networks-network-snapshots-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API 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 Specification

forward-networks-network-snapshots-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: 'Forward Networks: Complete 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 and

        new 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 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.'
    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
    SnapshotState:
      type: string
      enum:
      - UNPACKING
      - UNPROCESSED
      - PROCESSING
      - PROCESSED
      - FAILED
      - CANCELED
      - TIMED_OUT
      - ARCHIVED
      - RESTORING
      - RESTORE_FAILED
    ComputationStatus:
      type: string
      enum:
      - UNKNOWN
      - FAILURE
      - SUCCESS
      - CANCELED
    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
    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
    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'
    NetworkSnapshots:
      allOf:
      - $ref: '#/components/schemas/Network'
      - type: object
        required:
        - snapshots
        properties:
          snapshots:
            type: array
            items:
              $ref: '#/components/schemas/SnapshotInfo'
  securitySchemes:
    api_token:
      type: http
      scheme: basic