The Validations API provides access to validation data from Project Sidewalk, where community members review and validate labels placed by other users. Each validation record includes the validator's judgment (Agree, Disagree, or Unsure), any changes made to tags or severity levels, and associated metadata.
This API is useful for researchers studying data quality, community validation patterns, and the reliability of crowdsourced accessibility data. The validation process helps ensure the accuracy and consistency of Project Sidewalk's accessibility information.
Below is a live preview showing validation result distributions by label type, retrieved directly from the API:
Retrieve validation data with optional filtering by various criteria.
GET /v3/api/validations
/v3/api/validations
Get all validations in JSON (default)
/v3/api/validations?filetype=csv
Get all validations in CSV format
/v3/api/validations?validationResult=1
Get only "Agree" validations
/v3/api/validations?labelTypeId=2&changedTags=true
Get validations for label type 2 where tags were changed
Download validation data directly in your preferred format:
This endpoint accepts the following optional query parameters to filter validation data.
Parameter | Type | Description |
---|---|---|
labelId |
integer |
Filter validations for a specific label by its unique ID. |
userId |
string |
Filter validations performed by a specific user (validator). |
validationResult |
integer |
Filter by validation result: 1 (Agree), 2 (Disagree), 3 (Unsure). |
labelTypeId |
integer |
Filter validations for a specific label type (e.g., CurbRamp, Obstacle). See Label Types API |
validationTimestamp |
string |
Filter validations performed after this ISO 8601 timestamp (e.g., "2023-01-01T00:00:00Z"). |
changedTags |
boolean |
Filter validations where tags were changed (true ) or not changed (false ). |
changedSeverityLevels |
boolean |
Filter validations where severity levels were changed (true ) or not changed (false ). |
filetype |
string |
Output format: json (default), csv . Note: shapefile is not supported for validation data. |
inline |
boolean |
Whether to display the file inline (true ) or as a download attachment (false , default). |
On success, the API returns an HTTP 200 OK
status code and the requested data in the specified format.
Returns a JSON array containing validation objects:
[
{
"validation_id": 12345,
"label_id": 67890,
"user_id": "user_abc123",
"validation_result": 1,
"validation_timestamp": "2023-09-15T14:32:47Z",
"label_type_id": 2,
"label_type": "NoCurbRamp",
"severity_before": 3,
"severity_after": 4,
"changed_severity": true,
"tags_before": ["narrow"],
"tags_after": ["narrow", "steep"],
"changed_tags": true,
"street_edge_id": 54321,
"neighborhood_id": 15,
"neighborhood_name": "Downtown",
"lat": 47.6062,
"lng": -122.3321
},
{
"validation_id": 12346,
"label_id": 67891,
"user_id": "user_def456",
"validation_result": 2,
"validation_timestamp": "2023-09-15T15:45:12Z",
"label_type_id": 1,
"label_type": "CurbRamp",
"severity_before": 2,
"severity_after": 2,
"changed_severity": false,
"tags_before": ["wide"],
"tags_after": ["wide"],
"changed_tags": false,
"street_edge_id": 54322,
"neighborhood_id": 15,
"neighborhood_name": "Downtown",
"lat": 47.6065,
"lng": -122.3318
}
]
Field | Type | Description |
---|---|---|
validation_id | integer | Unique identifier for the validation record. |
label_id | integer | ID of the label that was validated. |
user_id | string | ID of the user who performed the validation. |
validation_result | integer | Validation judgment: 1 (Agree), 2 (Disagree), 3 (Unsure). |
validation_timestamp | string | ISO 8601 formatted timestamp when the validation was performed. |
label_type_id | integer | ID of the label type (e.g., 1 for CurbRamp, 2 for NoCurbRamp). |
label_type | string | Name of the label type (e.g., "CurbRamp", "Obstacle"). |
severity_before | integer | null | Severity rating before validation (1-5 scale), or null if not applicable. |
severity_after | integer | null | Severity rating after validation, or null if not changed/applicable. |
changed_severity | boolean | Whether the validator changed the severity rating. |
tags_before | array | Array of tag names before validation. |
tags_after | array | Array of tag names after validation. |
changed_tags | boolean | Whether the validator changed any tags. |
street_edge_id | integer | ID of the street segment where the label is located. |
neighborhood_id | integer | ID of the neighborhood containing the label. |
neighborhood_name | string | Name of the neighborhood containing the label. |
lat | number | Latitude coordinate of the validated label. |
lng | number | Longitude coordinate of the validated label. |
If filetype=csv
is specified, the response will be CSV data with the same field structure:
validation_id,label_id,user_id,validation_result,validation_timestamp,label_type_id,label_type,severity_before,severity_after,...
12345,67890,user_abc123,1,2023-09-15T14:32:47Z,2,NoCurbRamp,3,4,...
12346,67891,user_def456,2,2023-09-15T15:45:12Z,1,CurbRamp,2,2,...
If an error occurs, the API will return an appropriate HTTP status code and a JSON response body containing details about the error.
400 Bad Request
: Invalid parameter values (e.g., invalid validationResult, unsupported filetype).404 Not Found
: The requested resource does not exist.500 Internal Server Error
: An unexpected error occurred on the server.503 Service Unavailable
: The server is temporarily unable to handle the request.Error responses include a JSON body with the following structure:
{
"status": 400,
"code": "INVALID_PARAMETER",
"message": "Invalid validationResult value. Must be 1 (Agree), 2 (Disagree), or 3 (Unsure).",
"parameter": "validationResult"
}
Project Sidewalk uses three validation result types to categorize validator responses:
ID | Name | Description |
---|---|---|
1 |
Agree | The validator agrees with the original label placement and classification. |
2 |
Disagree | The validator disagrees with the original label placement or classification. |
3 |
Unsure | The validator is uncertain about the label's accuracy (e.g., due to image quality). |
You can also retrieve this information programmatically from the/v3/api/validationResultTypes
endpoint, which includes current count statistics for each validation result type.
The Validations API provides rich data for understanding community consensus and data quality. Here are some suggestions for effectively using this data:
For comprehensive validation analysis, consider using the Validations API alongside:
Project Sidewalk is an open-source project created by the Makeability Lab and hosted on GitHub. We welcome your contributions! If you found a bug or have a feature request, please open an issue on GitHub.
You can also email us at sidewalk@cs.uw.edu
If you are interested in bringing Project Sidewalk to your city, please read our Wiki page.