Stable

Material Tracking API

Stockpile measurement and material inventory monitoring with delivery tracking.

Stockpile volumes Inventory tracking Delivery monitoring Usage analytics

Authentication

All API requests require authentication using your API key. Include it in the Authorization header:

Authorization: Bearer your_api_key_here

Base URL

All endpoints are relative to the following base URL:

https://api.fitechco.com/api/v1/materials

List Stockpiles

GET /stockpiles

Retrieve all material stockpiles with current volumes.

Parameters

Name Type Description
project_id required string Project identifier
material_type string Filter by material

Response

200 List of stockpiles
{
  "data": [
    {
      "id": "stk_sand01",
      "material": "sand",
      "location": "Storage Area A",
      "current_volume_m3": 450,
      "max_capacity_m3": 800,
      "last_measured": "2024-03-15T08:00:00Z",
      "status": "adequate"
    }
  ]
}

Measure Stockpile

POST /stockpiles/{stockpile_id}/measure

Trigger a new volume measurement using drone imagery.

Parameters

Name Type Description
stockpile_id required string Stockpile identifier
images required array Drone images of stockpile

Response

200 Measurement result
{
  "stockpile_id": "stk_sand01",
  "previous_volume_m3": 420,
  "current_volume_m3": 450,
  "change_m3": 30,
  "measured_at": "2024-03-15T10:30:00Z",
  "accuracy": "98.5%"
}

Error Handling

The API uses standard HTTP status codes to indicate success or failure:

200 Request succeeded
201 Resource created
400 Bad request - invalid parameters
401 Unauthorized - invalid or missing API key
403 Forbidden - insufficient permissions
404 Resource not found
429 Rate limit exceeded
500 Internal server error

Rate Limits

API requests are rate limited to ensure fair usage:

Standard
1,000 requests/min
Enterprise
10,000 requests/min

Rate limit information is included in response headers:

X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1609459200
List Stockpiles
import fi_sdk

client = fi_sdk.Client(api_key="your_api_key")

# List all stockpiles
stockpiles = client.materials.stockpiles.list(
    project_id="proj_abc123"
)

for stockpile in stockpiles.data:
    print(f"{stockpile.material}: {stockpile.current_volume_m3} m³")
    print(f"  Capacity: {stockpile.current_volume_m3}/{stockpile.max_capacity_m3}")
    print(f"  Status: {stockpile.status}")
Try It Now
export const prerender = true;