Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.vangrid.io/llms.txt

Use this file to discover all available pages before exploring further.

The data ingestion endpoint lets you contribute spatial observations from your own sensor systems into the Vangrid network. Submitted observations are processed through the same cryptographic provenance pipeline as native edge node data, giving you verifiable records of what your systems reported and when.

Endpoint

POST https://api.vangrid.io/v1/ingest

Request

Headers

HeaderValue
AuthorizationBearer your-api-key
Content-Typeapplication/json

Body parameters

observations
array
required
Array of observation objects to submit. Maximum 500 observations per request.

Example request

curl -X POST https://api.vangrid.io/v1/ingest \
  -H "Authorization: Bearer your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "observations": [
      {
        "geometry": {
          "type": "Point",
          "coordinates": [-122.4150, 37.7800]
        },
        "observation_type": "vehicle",
        "timestamp": "2026-05-22T10:14:30.000Z",
        "sensor_id": "lidar-unit-42",
        "confidence": 0.88
      }
    ]
  }'

Response

Response fields

ingestion_id
string
Unique identifier for this ingestion batch.
accepted
integer
Number of observations successfully accepted.
rejected
integer
Number of observations rejected due to validation errors.
provenance_hashes
array
Array of provenance hash strings, one per accepted observation. Archive these for future verification.
errors
array
Details on any rejected observations, including index and reason.

Example response

{
  "ingestion_id": "ing_7c4d1e8b",
  "accepted": 1,
  "rejected": 0,
  "provenance_hashes": [
    "sha256:b7c3d9e1f4a6b8c0d2e5f7a9b1c4d6e8f0a2b4c6"
  ],
  "errors": []
}
Store each provenance_hash alongside the original observation in your own system. You can verify these hashes at any time using the provenance verification endpoint.

Error responses

StatusError codeDescription
400invalid_geometryOne or more geometries are not valid GeoJSON
400invalid_observation_typeUnknown observation type provided
400batch_too_largeMore than 500 observations in a single request
401unauthorizedMissing or invalid API key
429rate_limit_exceededToo many requests