Aerones Vis.external Photos API

The vis.external-photos API from Aerones — 1 operation(s) for vis.external-photos.

Operations 1

POST /api/vis/v1/external-photos/{id}/anomaly/ Create an anomaly associated with a given external photo ID #

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/aerones-vis-external-photos-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

aerones-vis-external-photos-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Operations Hub Vis.external Photos API
  version: 0.1.1
  description: ''
servers: []
tags:
- name: vis.external-photos
paths:
  /api/vis/v1/external-photos/{id}/anomaly/:
    post:
      operationId: vis_api_post_external_photo_anomaly
      summary: Create an anomaly associated with a given external photo ID
      parameters:
      - in: path
        name: id
        schema:
          title: Id
          type: integer
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AnomalyResponse'
      description: Create an anomaly associated with a given external photo ID.
      tags:
      - vis.external-photos
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AnomalyCreate'
        required: true
      security:
      - APIKeyAuth: []
      - CookieAuth: []
components:
  schemas:
    AnomalyCreate:
      additionalProperties: false
      description: Schema for creating Anomaly.
      properties:
        name:
          anyOf:
          - type: string
          - type: 'null'
          description: Anomaly name
          title: Name
        turbine_id:
          anyOf:
          - type: integer
          - type: 'null'
          description: Turbine ID
          title: Turbine Id
        turbine_component_id:
          anyOf:
          - type: integer
          - type: 'null'
          description: Turbine component ID
          title: Turbine Component Id
        turbine_component_serial_number:
          anyOf:
          - type: string
          - type: 'null'
          description: Turbine component serial number
          title: Turbine Component Serial Number
        project_id:
          anyOf:
          - type: integer
          - type: 'null'
          description: Project ID
          title: Project Id
        workorder_id:
          anyOf:
          - type: integer
          - type: 'null'
          description: Work order ID
          title: Workorder Id
        service_order_line_id:
          anyOf:
          - type: integer
          - type: 'null'
          description: Service order line ID
          title: Service Order Line Id
        custom_values:
          anyOf:
          - items:
              $ref: '#/components/schemas/AnomalyCustomValueInput'
            type: array
          - type: 'null'
          description: Client custom field values to set on the anomaly
          title: Custom Values
        distance_to_root:
          description: Distance to root
          title: Distance To Root
          type: number
        max_distance:
          anyOf:
          - type: number
          - type: 'null'
          description: Max distance
          title: Max Distance
        distance_to_leading_edge:
          anyOf:
          - type: number
          - type: 'null'
          description: Distance to leading edge
          title: Distance To Leading Edge
        cross_section_distance:
          anyOf:
          - type: number
          - type: 'null'
          description: Cross section distance
          title: Cross Section Distance
        cross_section_chamber_distance:
          anyOf:
          - type: number
          - type: 'null'
          description: Cross section chamber distance
          title: Cross Section Chamber Distance
        width:
          anyOf:
          - type: number
          - type: 'null'
          description: Width
          title: Width
        profile_depth_from:
          anyOf:
          - type: number
          - type: 'null'
          description: Profile depth from
          title: Profile Depth From
        profile_depth_to:
          anyOf:
          - type: number
          - type: 'null'
          description: Profile depth to
          title: Profile Depth To
        severity:
          anyOf:
          - enum:
            - LEVEL_0
            - LEVEL_1
            - LEVEL_2
            - LEVEL_3
            - LEVEL_4
            - LEVEL_5
            type: string
          - type: 'null'
          description: Severity level
          title: Severity
        status:
          default: NEW
          description: Status
          title: Status
          type: string
        stage:
          default: RELEASED
          description: Stage
          title: Stage
          type: string
        internal_external:
          description: Internal/External classification
          title: Internal External
          type: string
        side:
          anyOf:
          - type: string
          - type: 'null'
          description: Side classification
          title: Side
        cross_section_side:
          anyOf:
          - type: string
          - type: 'null'
          description: Cross section side
          title: Cross Section Side
        cross_section_type:
          default: DOUBLE_SHEAR_WEB
          description: Cross section type
          title: Cross Section Type
          type: string
        rib:
          anyOf:
          - type: string
          - type: 'null'
          description: Rib classification
          title: Rib
        anomaly_type_id:
          anyOf:
          - type: integer
          - type: 'null'
          description: Anomaly type ID
          title: Anomaly Type Id
        anomaly_sub_type_id:
          anyOf:
          - type: integer
          - type: 'null'
          description: Anomaly sub-type ID
          title: Anomaly Sub Type Id
        anomaly_major_component_id:
          anyOf:
          - type: integer
          - type: 'null'
          description: Major component ID
          title: Anomaly Major Component Id
        anomaly_component_id:
          anyOf:
          - type: integer
          - type: 'null'
          description: Component ID
          title: Anomaly Component Id
        anomaly_sub_component_id:
          anyOf:
          - type: integer
          - type: 'null'
          description: Sub-component ID
          title: Anomaly Sub Component Id
        anomaly_material_id:
          anyOf:
          - type: integer
          - type: 'null'
          description: Material ID
          title: Anomaly Material Id
        parent_type_id:
          anyOf:
          - type: integer
          - type: 'null'
          description: Parent type ID
          title: Parent Type Id
        root_cause_id:
          anyOf:
          - type: integer
          - type: 'null'
          description: Root cause ID
          title: Root Cause Id
        client_status:
          anyOf:
          - type: string
          - type: 'null'
          description: Client status
          title: Client Status
        chargeable:
          anyOf:
          - type: boolean
          - type: 'null'
          description: Whether the anomaly is chargeable
          title: Chargeable
        description:
          anyOf:
          - type: string
          - type: 'null'
          description: Anomaly description
          title: Description
        comments:
          anyOf:
          - type: string
          - type: 'null'
          description: Comments
          title: Comments
        service_provider_id:
          anyOf:
          - type: integer
          - type: 'null'
          description: Service provider ID
          title: Service Provider Id
        damage_cause:
          anyOf:
          - type: string
          - type: 'null'
          description: Damage cause
          title: Damage Cause
        parent_anomaly_id:
          anyOf:
          - type: integer
          - type: 'null'
          deprecated: true
          description: 'Deprecated: No longer used. Use link_group instead.'
          title: Parent Anomaly Id
        cross_file_ids:
          anyOf:
          - type: object
          - items: {}
            type: array
          - type: 'null'
          description: Cross file IDs as JSON
          title: Cross File Ids
        video_timestamp_ms:
          anyOf:
          - type: integer
          - type: 'null'
          description: Video timestamp in milliseconds
          title: Video Timestamp Ms
        frame_blob_path:
          anyOf:
          - type: string
          - type: 'null'
          description: GCS path to the raw uncropped video frame this anomaly was detected in
          title: Frame Blob Path
        link_group:
          anyOf:
          - type: string
          - type: 'null'
          description: Link group
          title: Link Group
        registered_by:
          default: AERONES
          description: Registered by
          title: Registered By
          type: string
        registration_origin:
          anyOf:
          - type: string
          - type: 'null'
          description: Registration origin
          title: Registration Origin
        width_difference_since_previous:
          anyOf:
          - type: number
          - type: 'null'
          description: Width difference since previous
          title: Width Difference Since Previous
        width_difference_since_oldest:
          anyOf:
          - type: number
          - type: 'null'
          description: Width difference since oldest
          title: Width Difference Since Oldest
        length_difference_since_previous:
          anyOf:
          - type: number
          - type: 'null'
          description: Length difference since previous
          title: Length Difference Since Previous
        length_difference_since_oldest:
          anyOf:
          - type: number
          - type: 'null'
          description: Length difference since oldest
          title: Length Difference Since Oldest
        source_object:
          anyOf:
          - {}
          - type: 'null'
          description: Inspection data file reference
          title: Source Object
        video_frame:
          anyOf:
          - type: integer
          - type: 'null'
          description: Video frame number where this anomaly is located
          title: Video Frame
        segmentation:
          anyOf:
          - type: string
          - type: 'null'
          description: Segmentation data as JSON (e.g., polygon coordinates)
          title: Segmentation
        segmentation_version:
          anyOf:
          - type: integer
          - type: 'null'
          description: Version of the segmentation data format (defaults to 2 when omitted)
          title: Segmentation Version
        bbox:
          anyOf:
          - type: string
          - type: 'null'
          description: Bounding box as JSON string
          title: Bbox
        ai_status:
          anyOf:
          - enum:
            - NEW
            - QUALIFIED
            - UNQUALIFIED
            - CONFIRMED
            - REJECTED
            - DUPLICATE
            type: string
          - type: 'null'
          description: Status of AI detection
          title: Ai Status
        ai_confidence:
          anyOf:
          - type: number
          - type: 'null'
          description: Confidence score from AI detection
          title: Ai Confidence
        ai_images_v2:
          anyOf:
          - type: boolean
          - type: 'null'
          description: Whether the AI anomaly was imported from the JSON image reference format
          title: Ai Images V2
      required:
      - distance_to_root
      - internal_external
      title: AnomalyCreate
      type: object
    AnomalyCustomValueInput:
      additionalProperties: false
      description: Schema for setting one custom field value on an anomaly.
      properties:
        custom_field_id:
          description: Customer custom field ID
          title: Custom Field Id
          type: integer
        value:
          anyOf:
          - type: string
          - type: 'null'
          description: Value for the field. Null or empty clears it.
          title: Value
      required:
      - custom_field_id
      title: AnomalyCustomValueInput
      type: object
    AnomalyCustomValueOutput:
      additionalProperties: false
      description: Schema for a custom field value in an anomaly response.
      properties:
        id:
          description: Custom value ID
          title: Id
          type: integer
        custom_field_id:
          description: Customer custom field ID
          title: Custom Field Id
          type: integer
        custom_field_name:
          description: Field name
          title: Custom Field Name
          type: string
        custom_field_type:
          description: Field data type
          title: Custom Field Type
          type: string
        value:
          anyOf:
          - type: string
          - type: 'null'
          description: Value for the field
          title: Value
      required:
      - id
      - custom_field_id
      - custom_field_name
      - custom_field_type
      title: AnomalyCustomValueOutput
      type: object
    AnomalyResponse:
      additionalProperties: false
      description: Schema for Anomaly response.
      properties:
        updated_at:
          description: Last update timestamp
          format: date-time
          title: Updated At
          type: string
        id:
          description: Anomaly ID
          title: Id
          type: integer
        name:
          anyOf:
          - type: string
          - type: 'null'
          description: Anomaly name
          title: Name
        turbine_id:
          anyOf:
          - type: integer
          - type: 'null'
          description: Turbine ID
          title: Turbine Id
        turbine_component_id:
          anyOf:
          - type: integer
          - type: 'null'
          description: Turbine component ID
          title: Turbine Component Id
        turbine_component_name:
          anyOf:
          - type: string
          - type: 'null'
          description: Turbine component display name
          title: Turbine Component Name
        turbine_component_serial_number:
          anyOf:
          - type: string
          - type: 'null'
          description: Turbine component serial number
          title: Turbine Component Serial Number
        project_id:
          anyOf:
          - type: integer
          - type: 'null'
          description: Project ID
          title: Project Id
        workorder_id:
          anyOf:
          - type: integer
          - type: 'null'
          description: Work order ID
          title: Workorder Id
        service_order_line_id:
          anyOf:
          - type: integer
          - type: 'null'
          description: Service order line ID
          title: Service Order Line Id
        custom_values:
          description: Client custom field values
          items:
            $ref: '#/components/schemas/AnomalyCustomValueOutput'
          title: Custom Values
          type: array
        distance_to_root:
          description: Distance to root
          title: Distance To Root
          type: number
        max_distance:
          anyOf:
          - type: number
          - type: 'null'
          description: Max distance
          title: Max Distance
        distance_to_leading_edge:
          anyOf:
          - type: number
          - type: 'null'
          description: Distance to leading edge
          title: Distance To Leading Edge
        cross_section_distance:
          anyOf:
          - type: number
          - type: 'null'
          description: Cross section distance
          title: Cross Section Distance
        cross_section_chamber_distance:
          anyOf:
          - type: number
          - type: 'null'
          description: Cross section chamber distance
          title: Cross Section Chamber Distance
        width:
          anyOf:
          - type: number
          - type: 'null'
          description: Width
          title: Width
        profile_depth_from:
          anyOf:
          - type: number
          - type: 'null'
          description: Profile depth from
          title: Profile Depth From
        profile_depth_to:
          anyOf:
          - type: number
          - type: 'null'
          description: Profile depth to
          title: Profile Depth To
        severity:
          anyOf:
          - type: string
          - type: 'null'
          description: Severity level
          title: Severity
        status:
          description: Status
          title: Status
          type: string
        stage:
          description: Stage
          title: Stage
          type: string
        resolution_status:
          anyOf:
          - type: string
          - type: 'null'
          description: Resolution status (derived from stage)
          title: Resolution Status
        internal_external:
          description: Internal/External classification
          title: Internal External
          type: string
        side:
          anyOf:
          - type: string
          - type: 'null'
          description: Side classification
          title: Side
        cross_section_side:
          anyOf:
          - type: string
          - type: 'null'
          description: Cross section side
          title: Cross Section Side
        cross_section_type:
          description: Cross section type
          title: Cross Section Type
          type: string
        rib:
          anyOf:
          - type: string
          - type: 'null'
          description: Rib classification
          title: Rib
        anomaly_type_id:
          anyOf:
          - type: integer
          - type: 'null'
          description: Anomaly type ID
          title: Anomaly Type Id
        anomaly_type_name:
          anyOf:
          - type: string
          - type: 'null'
          description: Anomaly type name
          title: Anomaly Type Name
        anomaly_sub_type_id:
          anyOf:
          - type: integer
          - type: 'null'
          description: Anomaly sub-type ID
          title: Anomaly Sub Type Id
        anomaly_sub_type_name:
          anyOf:
          - type: string
          - type: 'null'
          description: Anomaly sub-type name
          title: Anomaly Sub Type Name
        anomaly_major_component_id:
          anyOf:
          - type: integer
          - type: 'null'
          description: Major component ID
          title: Anomaly Major Component Id
        anomaly_major_component_name:
          anyOf:
          - type: string
          - type: 'null'
          description: Major component name
          title: Anomaly Major Component Name
        anomaly_component_id:
          anyOf:
          - type: integer
          - type: 'null'
          description: Component ID
          title: Anomaly Component Id
        anomaly_component_name:
          anyOf:
          - type: string
          - type: 'null'
          description: Component name
          title: Anomaly Component Name
        anomaly_sub_component_id:
          anyOf:
          - type: integer
          - type: 'null'
          description: Sub-component ID
          title: Anomaly Sub Component Id
        anomaly_sub_component_name:
          anyOf:
          - type: string
          - type: 'null'
          description: Sub-component name
          title: Anomaly Sub Component Name
        anomaly_material_id:
          anyOf:
          - type: integer
          - type: 'null'
          description: Material ID
          title: Anomaly Material Id
        anomaly_material_name:
          anyOf:
          - type: string
          - type: 'null'
          description: Anomaly material name
          title: Anomaly Material Name
        parent_type_id:
          anyOf:
          - type: integer
          - type: 'null'
          description: Parent type ID
          title: Parent Type Id
        root_cause_id:
          anyOf:
          - type: integer
          - type: 'null'
          description: Root cause ID
          title: Root Cause Id
        root_cause_name:
          anyOf:
          - type: string
          - type: 'null'
          description: Root cause name
          title: Root Cause Name
        main_image_url:
          anyOf:
          - type: string
          - type: 'null'
          description: URL of anomaly main image proxy endpoint
          title: Main Image Url
        client_status:
          anyOf:
          - type: string
          - type: 'null'
          description: Client status
          title: Client Status
        chargeable:
          anyOf:
          - type: boolean
          - type: 'null'
          description: Whether the anomaly is chargeable
          title: Chargeable
        description:
          anyOf:
          - type: string
          - type: 'null'
          description: Anomaly description
          title: Description
        comments:
          anyOf:
          - type: string
          - type: 'null'
          description: Comments
          title: Comments
        service_provider_id:
          anyOf:
          - type: integer
          - type: 'null'
          description: Service provider ID
          title: Service Provider Id
        damage_cause:
          anyOf:
          - type: string
          - type: 'null'
          description: Damage cause
          title: Damage Cause
        parent_anomaly_id:
          anyOf:
          - type: integer
          - type: 'null'
          deprecated: true
          description: 'Deprecated: No longer used. Use link_group instead.'
          title: Parent Anomaly Id
        cross_file_ids:
          anyOf:
          - type: object
          - items: {}
            type: array
          - type: 'null'
          description: Cross file IDs as JSON
          title: Cross File Ids
        video_timestamp_ms:
          anyOf:
          - type: integer
          - type: 'null'
          description: Video timestamp in milliseconds
          title: Video Timestamp Ms
        link_group:
          anyOf:
          - type: string
          - type: 'null'
          description: Link group
          title: Link Group
        registered_by:
          description: Registered by
          title: Registered By
          type: string
        registered_by_user:
          anyOf:
          - type: string
          - type: 'null'
          description: Email/username of user who registered anomaly
          title: Registered By User
        registration_origin:
          anyOf:
          - type: string
          - type: 'null'
          description: Registration origin
          title: Registration Origin
        width_difference_since_previous:
          anyOf:
          - type: number
          - type: 'null'
          description: Width difference since previous
          title: Width Difference Since Previous
        width_difference_since_oldest:
          anyOf:
          - type: number
          - type: 'null'
          description: Width difference since oldest
          title: Width Difference Since Oldest
        length_difference_since_previous:
          anyOf:
          - type: number
          - type: 'null'
          description: Length difference since previous
          title: Length Difference Since Previous
        length_difference_since_oldest:
          anyOf:
          - type: number
          - type: 'null'
          description: Length difference since oldest
          title: Length Difference Since Oldest
        source_object_id:
          anyOf:
          - type: integer
          - type: 'null'
          description: ID of inspection file from which this anomaly is created from
          title: Source Object Id
        source_object_type_id:
          anyOf:
          - type: integer
          - type: 'null'
          description: Type of source object (e.g., 'inspection_file')
          title: Source Object Type Id
        video_frame:
          anyOf:
          - type: integer
          - type: 'null'
          description: Video frame number where this anomaly is located
          title: Video Frame
        qr_code:
          anyOf:
          - type: integer
          - type: 'null'
          description: Data extracted from QR code if applicable
          title: Qr Code
        segmentation:
          anyOf:
          - type: string
          - type: 'null'
          description: Segmentation data as JSON (e.g., polygon coordinates)
          title: Segmentation
        segmentation_version:
          anyOf:
          - type: integer
          - type: 'null'
          description: Version of the segmentation data format
          title: Segmentation Version
        unity_details:
          anyOf:
          - type: object
          - type: 'null'
          description: Additional details from Unity analysis as JSON
          title: Unity Details
        bbox:
          anyOf:
          - type: string
          - type: 'null'
          description: Bounding box as JSON string
          title: Bbox
        ai_anomaly_id:
          anyOf:
          - type: integer
          - type: 'null'
          description: ID of associated AI-detected anomaly if applicable
          title: Ai Anomaly Id
        ai_status:
          anyOf:
          - type: string
          - type: 'null'
          description: Status of AI detection
          title: Ai Status
        ai_confidence:
          anyOf:
          - type: number
          - type: 'null'
          description: Confidence score from AI detection
          title: Ai Confidence
        ai_images_v2:
          anyOf:
          - type: boolean
          - type: 'null'
          description: Whether the AI anomaly was imported from the JSON image reference format
          title: Ai Images V2
        frame_blob_path:
          anyOf:
          - type: string
          - type: 'null'
          description: GCS path to the raw uncropped video frame this anomaly was detected in
          title: Frame Blob Path
      required:
      - updated_at
      - id
      - distance_to_root
      - status
      - stage
      - internal_external
      - cross_section_type
      - registered_by
      title: AnomalyResponse
      type: object
  securitySchemes:
    APIKeyAuth:
      type: http
      scheme: bearer
    CookieAuth:
      type: apiKey
      in: cookie
      name: opshub_prod_sessionid
    AuthBearer:
      type: http
      scheme: bearer