openapi: 3.2.0 info: title: CityStreamâ„¢ VirtualCam VirtualCam API description: "The CityStreamâ„¢ VirtualCam API provides a fresh collection of anonymized frames captured by Nexar's network of cameras on the road. Frames can be selected using multiple attributes such as date, location, minimum quality, road type, time of the day or vehicle's heading. \n\n Before you start developing with the CityStreamâ„¢ VirtualCam API, make sure you have a valid Access Token and set your request Authorization Header as: Bearer {token}. \n\nNEW: A new version of the VirtualCam API Frames Endpoint is now available! This update includes minor changes to the response attribute types. Additionally, the Coverage endpoint is now documented, making it easier to check imagery availability for a given area. \n\n IMPORTANT: VirtualCam API Frames V4 and Coverage V3 endpoints will be deprecated on March 31, 2025. We encourage you to migrate to the latest versions at your earliest convenience." contact: name: Nexar url: https://getnexar.com/ email: api-support@getnexar.com license: name: 'License: Proprietary' version: '4.0' servers: - url: https://external.getnexar.com security: - Bearer: [] tags: - name: VirtualCam API paths: /api/virtualcam/v5/frames: post: tags: - VirtualCam API description: "Get anonymized frames for a given area defined by a bounding box or H3 IDs. \n\n Additional options for filtering and sorting are provided to enhance the precision of the requests." operationId: VcamService_FindRawFrames requestBody: content: application/json: schema: $ref: '#/components/schemas/FindRawFramesApiRequestParams' example: bounding_box: south_west: longitude: -73.99708049121774 latitude: 40.72176834293103 north_east: longitude: -73.98168795029027 latitude: 40.73122344104337 filters: frames_per_h3: 1 min_frame_quality: 0.7 road_types: - MOTORWAY - RESIDENTIAL frames_context: - DAYLIGHT - NIGHTTIME start_time: '1688169600000' end_time: '1689206400000' directions: - NORTH - NORTH_WEST sort_by: QUALITY required: true responses: '200': description: A successful response. content: application/json: schema: $ref: '#/components/schemas/FindRawFramesApiResponse' example: frames: - frame_id: 56f8d643be2ff1e674598eccfae2b3e2 frame_url: https://external-api.getnexar.com/aod/full/ride/cc07d59669bfa317a4136a7d93965b04/fod_709F23AE-6F53-49E8-A473-98FEB7DBE973.jpg thumbnail_url: https://external-api.getnexar.com/aod/thumbnail/ride/cc07d59669bfa317a4136a7d93965b04/fod_709F23AE-6F53-49E8-A473-98FEB7DBE973.jpg captured_at: '1689242521198' timezone_offset: -14400 h3_index_res12: '631243922682792959' gps_info: longitude: -73.985751 latitude: 40.733587 direction: NORTH_WEST camera_heading: 298.8096008300781 frame_quality: 0.9148776531219482 frame_context: NIGHTTIME osm_info: osm_node_id_from: '8310246171' osm_node_id_to: '3985008876' road_type: RESIDENTIAL frames_fetched: 1 '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/nexarBadRequest' example: status: 400 error: Bad Request '403': description: Returned when the user does not have permission to access the resource. content: application/json: schema: type: object '429': description: API rate limit exceeded. content: application/json: schema: type: string format: string example: string '500': description: This is usually a temporary error due to high server load or a brief endpoint error. content: application/json: schema: type: object security: - Bearer: [] x-codegen-request-body-name: payload /api/virtualcam/v4/coverage: post: tags: - VirtualCam API description: Get H3 coverage information for a given area defined by a bounding box or H3 IDs. operationId: VcamService_GetH3Coverage requestBody: content: application/json: schema: $ref: '#/components/schemas/GetH3CoverageRequestParams' example: h3_coverage_bounding_box: bounding_box: south_west: longitude: -118.25408935546875 latitude: 34.05493499798558 north_east: longitude: -118.2513427734375 latitude: 34.05721051351028 h3_resolution: 5 required: true responses: '200': description: A successful response. content: application/json: schema: $ref: '#/components/schemas/GetH3CoverageResponse' example: coverage: - h3_id: '599711151885910015' frame_count: '2494' '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/nexarBadRequest' example: status: 400 error: Bad Request '403': description: Access forbidden. Also returned when the requested area is not authorized. content: application/json: schema: type: string format: string example: string '429': description: API rate limit exceeded. content: application/json: schema: type: string format: string example: string '500': description: Internal server error content: application/json: schema: type: object example: {} security: - Bearer: [] x-codegen-request-body-name: payload /api/virtualcam/v4/frames: post: tags: - VirtualCam API description: "Get anonymized frames for a given area defined by a bounding box or H3 IDs . \n\n Additional options for filtering and sorting are provided to enhance the precision of the requests." operationId: RoadItemService_FindRawFrames requestBody: content: application/json: schema: $ref: '#/components/schemas/apiFindRawFramesApiRequestParams' required: true responses: '200': description: A successful response. content: application/json: schema: $ref: '#/components/schemas/apiFindRawFramesApiResult' '400': description: Bad request. content: application/json: schema: $ref: '#/components/schemas/nexarBadRequest' '403': description: Access forbiden. Also returned when the requested area is not authorized. content: application/json: schema: type: string format: string '429': description: API rate limit exceeded. content: application/json: schema: type: string format: string '500': description: Internal server error content: application/json: schema: type: object components: schemas: apiRawFrameApiElement: title: Frame metadata type: object properties: frame_id: title: Frame ID type: string description: unique identifier of the frame frame_url: title: Frame full Path type: string description: URL to request the frame file (1280x720) thumbnail_url: title: Thumbnail of the frame full path type: string description: URL to request the thumbnail file (140x90) captured_at: title: Frame captured timestamp type: string description: Timestamp when the frame was captured (Epoch milliseconds) format: uint64 timezone_offset: title: Timezone Offset type: integer description: Offset in seconds from UTC of the frame capture time format: int32 h3_index_res12: title: H3 cell type: string description: H3 cell of resolution 12 where the frame is located gps_info: $ref: '#/components/schemas/road_itemapiGeoLocationApiElement' direction: $ref: '#/components/schemas/apiHeadingApiElement' camera_heading: title: Camera Heading type: number description: Course of the camera when the frame was captured format: double frame_quality: title: Frame Quality type: number description: Frame quality is defined as the number of pixels outside of the car divided by the total number of pixels. format: double frame_context: $ref: '#/components/schemas/apiDaylightStateApiElement' osm_info: $ref: '#/components/schemas/road_itemapiOsmRoadSegmentApiElement' apiFindRawFramesApiResult: title: VirtualCam Response type: object properties: frames: type: array items: $ref: '#/components/schemas/apiRawFrameApiElement' frames_fetched: title: Frames Fetched type: integer description: Frames fetched count format: int32 example: frames: - frame_id: 56f8d643be2ff1e674598eccfae2b3e2 frame_url: https://external-api.getnexar.com/aod/full/ride/cc07d59669bfa317a4136a7d93965b04/fod_709F23AE-6F53-49E8-A473-98FEB7DBE973.jpg camera_heading: 298.8096008300781 captured_at: 1689242521198 timezone_offset: -14400 h3_index_res12: '631243922682792959' gps_info: longitude: -73.985751 latitude: 40.733587 thumbnail_url: https://external-api.getnexar.com/aod/thumbnail/ride/cc07d59669bfa317a4136a7d93965b04/fod_709F23AE-6F53-49E8-A473-98FEB7DBE973.jpg direction: NORTH_WEST frame_quality: 0.9148776531219482 frame_context: NIGHTTIME osm_info: osm_node_id_from: 8310246171 osm_node_id_to: 3985008876 road_type: RESIDENTIAL RawFrameApiElement: title: Frame metadata type: object properties: frame_id: title: Frame ID type: string description: unique identifier of the frame frame_url: title: Frame full Path type: string description: URL to request the frame file (1280x720) thumbnail_url: title: Thumbnail of the frame full path type: string description: URL to request the thumbnail file (140x90) captured_at: title: Frame captured timestamp type: string description: Timestamp when the frame was captured (Epoch milliseconds) format: uint64 timezone_offset: title: Timezone Offset type: integer description: Offset in seconds from UTC of the frame capture time format: int32 h3_index_res12: title: H3 cell type: string description: H3 cell of resolution 12 where the frame is located gps_info: $ref: '#/components/schemas/GeoLocationApiElement' direction: $ref: '#/components/schemas/HeadingApiElement' camera_heading: title: Camera Heading type: number description: Course of the camera when the frame was captured format: double frame_quality: title: Frame Quality type: number description: Frame quality is defined as the number of pixels outside of the car divided by the total number of pixels. format: double frame_context: $ref: '#/components/schemas/DaylightStateApiElement' osm_info: $ref: '#/components/schemas/OsmRoadSegmentApiElement' H3CoverageBoundingBoxApiElement: title: H3 Coverage Area type: object properties: bounding_box: $ref: '#/components/schemas/GeoBoundingBoxApiElement' h3_resolution: title: H3 Resolution type: integer description: The resolution levels of H3 cells used to obtain coverage information - supported values are 3, 5, 7, 8, 9, 10, 11, and 12. format: int64 road_itemapiGeoBoundingBoxApiElement: title: Area of interest description: The geographical area of interest is defined as a rectangular area by its northeast and southwest points. type: object required: - north_east - south_west properties: north_east: $ref: '#/components/schemas/road_itemapiGeoLocationApiElement' south_west: $ref: '#/components/schemas/road_itemapiGeoLocationApiElement' OsmRoadTypeApiElement: title: Open Street Map road types type: string enum: - MOTORWAY - TRUNK - PRIMARY - SECONDARY - TERTIARY - UNCLASSIFIED - RESIDENTIAL - SERVICE - MOTORWAY_LINK - TRUNK_LINK - PRIMARY_LINK - SECONDARY_LINK - TERTIARY_LINK - LIVING_STREET - PEDESTRIAN - TRACK - BUS_GUIDEWAY - ESCAPE - RACEWAY - ROAD - FOOTWAY - BRIDLEWAY - STEPS - PATH - CYCLEWAY - CONSTRUCTION - ABANDONED - ACCESS - PROPOSED - REST_AREA SortByApiRequest: title: Optional sorting modes of the returned frame type: string description: Sorting modes for the request 'sort_by' optional param enum: - TIMESTAMP - QUALITY apiHeadingApiElement: title: HeadingApiElement type: string description: Camera direction enum: - NORTH - NORTH_WEST - WEST - SOUTH_WEST - SOUTH - SOUTH_EAST - EAST - NORTH_EAST road_itemapiOsmRoadTypeApiElement: title: Open Street Map road types type: string enum: - MOTORWAY - TRUNK - PRIMARY - SECONDARY - TERTIARY - UNCLASSIFIED - RESIDENTIAL - SERVICE - MOTORWAY_LINK - TRUNK_LINK - PRIMARY_LINK - SECONDARY_LINK - TERTIARY_LINK - LIVING_STREET - PEDESTRIAN - TRACK - BUS_GUIDEWAY - ESCAPE - RACEWAY - ROAD - FOOTWAY - BRIDLEWAY - STEPS - PATH - CYCLEWAY - CONSTRUCTION - ABANDONED - ACCESS - PROPOSED - REST_AREA H3CoverageApiElement: title: H3 Coverage Information type: object properties: h3_id: title: H3 ID type: string description: H3 cell identifier format: uint64 frame_count: title: Frame Count type: string description: Number of frames available in this H3 cell format: uint64 apiH3IndicesApiRequest: title: Area of interest as H3 cells type: object description: Accepts H3 IDs with resolutions between 10 and 15 up to a maximum area equivalent to 1000 H3 cells of resolution 12. properties: h3_ids: title: H3 Ids type: array description: H3 IDs list in decimal format items: type: string GeoLocationApiElement: title: Geo Coordinates type: object properties: longitude: title: Longitude type: number description: GPS Point longitude in decimal degrees format: double latitude: title: Latitude type: number description: GPS Point latitude in decimal degrees format: double nexarBadRequest: type: object title: Bad Request properties: status: type: integer error: type: string example: status: 400 error: Bad Request road_itemapiGeoLocationApiElement: title: GPS Point type: object properties: longitude: title: Longitude type: number description: GPS Point longitude in decimal degrees format: double latitude: title: Latitude type: number description: GPS Point latitude in decimal degrees format: double apiDaylightStateApiElement: title: Daylight conditions type: string enum: - DAYLIGHT - TWILIGHT - NIGHTTIME GeoBoundingBoxApiElement: title: Area of interest description: The geographical area of interest is defined as a rectangular area by its northeast and southwest points. type: object properties: north_east: $ref: '#/components/schemas/GeoLocationApiElement' south_west: $ref: '#/components/schemas/GeoLocationApiElement' apiFindRawFramesApiFilters: title: Request Filters type: object properties: directions: title: Directions type: array description: Filters frames according to the direction of the camera at the time the frame was captured items: $ref: '#/components/schemas/apiHeadingApiElement' frames_context: title: Frames Context type: array description: Filters frames according to daylight conditions items: $ref: '#/components/schemas/apiDaylightStateApiElement' min_frame_quality: title: Minimum Frame Quality type: number default: 0 description: Filters frames according to a minimum frame quality. Frame quality is defined as the number of pixels outside of the car divided by the total number of pixels. format: double frames_per_h3: title: Frames per H3 default: 5000 type: integer description: Maximum number of frames to return per H3 in the response. The resolution of the H3 cell varies based on the requested area's size, with a range of resolution 3 for very large areas to resolution 12 for smaller areas. format: int64 road_types: title: Road Types type: array description: Filters frames according to the OSM segment road type items: $ref: '#/components/schemas/road_itemapiOsmRoadTypeApiElement' start_time: title: Start timestamp type: string description: Filters frames which were captured after the specified start timestamp (Epoch milliseconds) format: uint64 end_time: title: End Timestamp type: string description: Filters frames which were captured before the specified end timestamp (Epoch milliseconds) format: uint64 GetH3CoverageRequestParams: title: H3 Coverage Request type: object properties: h3_coverage_bounding_box: $ref: '#/components/schemas/H3CoverageBoundingBoxApiElement' h3_indices: $ref: '#/components/schemas/H3IndicesApiRequest' apiFindRawFramesApiRequestParams: type: object title: VirtualCam Request properties: bounding_box: $ref: '#/components/schemas/road_itemapiGeoBoundingBoxApiElement' h3_location: $ref: '#/components/schemas/apiH3IndicesApiRequest' filters: $ref: '#/components/schemas/apiFindRawFramesApiFilters' sort_by: $ref: '#/components/schemas/apiSortByApiRequest' example: bounding_box: south_west: longitude: -73.99708049121774 latitude: 40.72176834293103 north_east: longitude: -73.98168795029027 latitude: 40.73122344104337 filters: frames_per_h3: 1 min_frame_quality: 0.7 road_types: - MOTORWAY - RESIDENTIAL frames_context: - DAYLIGHT - NIGHTTIME start_time: 1688169600000 end_time: 1689206400000 sort_by: QUALITY apiSortByApiRequest: title: Optional sorting modes of the returned frame type: string default: TIMESTAMP enum: - TIMESTAMP - QUALITY GetH3CoverageResponse: title: H3 Coverage Response type: object properties: coverage: type: array items: $ref: '#/components/schemas/H3CoverageApiElement' road_itemapiOsmRoadSegmentApiElement: title: Osm Info type: object properties: osm_node_id_from: type: string format: uint64 osm_node_id_to: type: string format: uint64 road_type: $ref: '#/components/schemas/road_itemapiOsmRoadTypeApiElement' description: Open Street Map way identifier and metadata H3IndicesApiRequest: title: Area of interest as H3 cells type: object description: Accepts H3 IDs with resolutions between 10 and 15 up to a maximum area equivalent to 1000 H3 cells of resolution 12. properties: h3_ids: title: H3 Ids type: array description: H3 IDs list in decimal format items: type: string HeadingApiElement: title: HeadingApiElement type: string description: Nexar car heading direction enum: - NORTH - NORTH_WEST - WEST - SOUTH_WEST - SOUTH - SOUTH_EAST - EAST - NORTH_EAST FindRawFramesApiRequestParams: title: VirtualCam Request type: object properties: bounding_box: $ref: '#/components/schemas/GeoBoundingBoxApiElement' h3_location: $ref: '#/components/schemas/H3IndicesApiRequest' filters: $ref: '#/components/schemas/FindRawFramesApiFilters' sort_by: $ref: '#/components/schemas/SortByApiRequest' FindRawFramesApiResponse: type: object properties: frames: type: array items: $ref: '#/components/schemas/RawFrameApiElement' frames_fetched: title: Frames Fetched type: integer description: Frames fetched count format: int32 DaylightStateApiElement: title: Daylight conditions type: string enum: - DAYLIGHT - TWILIGHT - NIGHTTIME OsmRoadSegmentApiElement: title: Osm Info type: object properties: osm_node_id_from: type: string format: uint64 osm_node_id_to: type: string format: uint64 road_type: $ref: '#/components/schemas/OsmRoadTypeApiElement' description: Open Street Map way identifier and metadata FindRawFramesApiFilters: title: Request Filters type: object properties: directions: title: Directions type: array description: Filters frames according to the direction of the camera at the time the frame was captured items: $ref: '#/components/schemas/HeadingApiElement' frames_context: title: Frames Context type: array description: Filters frames according to daylight conditions items: $ref: '#/components/schemas/DaylightStateApiElement' min_frame_quality: title: Minimum Frame Quality type: number description: Filters frames according to a minimum frame quality. Frame quality is defined as the number of pixels outside of the car divided by the total number of pixels. format: double frames_per_h3: title: Frames per H3 type: integer description: Maximum number of frames to return per H3 in the response. The resolution of the H3 cell varies based on the requested area's size, with a range of resolution 3 for very large areas to resolution 12 for smaller areas. format: int64 road_types: title: Road Types type: array description: Filters frames according to the OSM segment road type items: $ref: '#/components/schemas/OsmRoadTypeApiElement' start_time: title: Start timestamp type: string description: Filters frames which were captured after the specified start timestamp (Epoch milliseconds) format: uint64 end_time: title: End Timestamp type: string description: Filters frames which were captured before the specified end timestamp (Epoch milliseconds) format: uint64 securitySchemes: Bearer: type: apiKey name: Authorization in: header