Good Tables provides a full API to process and validate tabular data.

Let's start with an example. Scroll down for the methods supported by the API.

# make a request
curl http://goodtables.okfnlabs.org/api/run --data "data=https://raw.githubusercontent.com/okfn/goodtables/master/examples/row_limit_structure.csv&schema=https://raw.githubusercontent.com/okfn/goodtables/master/examples/test_schema.json"

# the response will be like
    "report": {
        "summary": {
            "bad_row_count": 1,
            "total_row_count": 10,
        "results": [
            "result_id": "structure_001", # the ID of this result type
            "result_level": "error", # the severity of this result type (info/warning/error)
            "result_message": "Row 1 is defective: there are more cells than headers", # a message that describes the result
            "result_name": "Defective Row", # a human-readable title for this result
            "result_context": ['38', 'John', '', ''], # the row values from which this result triggered
            "row_index": 1, # the idnex of the row
            "row_name": "", # If the row has an id field, this is displayed, otherwise empty
            "column_index": 4, # the index of the column
            "column_name": "" # the name of the column (the header), if applicable


All API endpoints support CORS.

/api (API Index)
/api/run (Validation Runner)

Both the POST and GET methods support the same parameters. These parameters are described below.

Configuration parameters

The Web API supports a subset of all parameters supported by Good Tables Python library

Report structure

For details on the report structure, refer to the Good Tables documentation.