Get 50 GB free!Register for a free account and start migrating today — no credit card required.Register now →
GodwitGodwit Sync
HomePricingDownloadsDocs
Customer PortalGet Started
Get Started
Status API

Status Endpoint

JSON endpoint for real-time monitoring of sync progress. Use it for scripting, dashboards, and automation.

Enabling the Endpoint

Pass --status-addr to expose the /status and /metrics HTTP endpoints.

godwit sync --source s3://src --dest s3://dst --status-addr :8080

curl -s localhost:8080/status | jq .

Example Response

{
  "run_id": "abc123",
  "status": "running",
  "source": "s3://my-source",
  "destination": "s3://my-dest",

  "objects_total": 15000,
  "objects_done": 12400,
  "objects_failed": 3,
  "objects_skipped": 120,
  "objects_excluded": 77,
  "objects_pending": 2300,
  "objects_running": 100,

  "bytes_total": 1073741824,
  "bytes_done": 858993459,
  "bytes_failed": 5242880,
  "bytes_skipped": 10485760,
  "bytes_excluded": 2097152,
  "bytes_pending": 192937573,
  "bytes_running": 4980000,

  "started_at": "2026-02-25T10:00:00Z",
  "finished_at": null,
  "eta_seconds": 42.5,

  "errors": ["upload failed on path/to/file.bin: connection reset"],

  "storage_classes": [
    { "storage_class": "STANDARD", "count": 14500, "total_size": 1048576000, "percent": 96.7 },
    { "storage_class": "GLACIER", "count": 500, "total_size": 25165824, "percent": 3.3 }
  ]
}

Field Reference

Top Level

FieldTypeDescription
run_idstringUnique identifier for this run
statusstringRun lifecycle state (running, planned, completed, failed)
sourcestringSource URI (e.g. s3://bucket)
destinationstringDestination URI

Object Counts

FieldTypeDescription
objects_totalint64Total objects discovered during planning
objects_doneint64Objects successfully transferred
objects_failedint64Objects that failed to transfer
objects_skippedint64Objects skipped (Glacier, unsupported key)
objects_excludedint64Objects excluded by policy
objects_pendingint64Objects queued but not yet started
objects_runningint64Objects currently being transferred

Byte Counts

FieldTypeDescription
bytes_totalint64Total bytes of all planned objects
bytes_doneint64Bytes successfully written
bytes_failedint64Bytes in failed objects
bytes_skippedint64Bytes in skipped objects
bytes_excludedint64Bytes in excluded objects
bytes_pendingint64Bytes in pending objects
bytes_runningint64Bytes in objects currently transferring

Timing & ETA

FieldTypeDescription
started_atRFC 3339When the run started
finished_atRFC 3339 | nullWhen the run finished (null while running)
eta_secondsfloat64Estimated seconds to completion

Storage Classes

FieldTypeDescription
storage_classes[].storage_classstringS3 storage class name (STANDARD, GLACIER, etc.)
storage_classes[].countint64Number of objects in this class
storage_classes[].total_sizeint64Total bytes in this class
storage_classes[].percentfloat64Percentage of total objects

Run Status Values

ValueMeaning
runningSync is in progress
plannedPlan-only mode completed
completedAll objects transferred successfully
failedOne or more objects failed

Usage Examples

Poll Until Complete

while true; do
  STATUS=$(curl -s localhost:8080/status | jq -r .status)
  if [ "$STATUS" = "completed" ] || [ "$STATUS" = "failed" ]; then
    echo "Run finished with status: $STATUS"
    break
  fi
  sleep 5
done

Progress Snapshot

curl -s localhost:8080/status | jq '{
  progress: (.objects_done / .objects_total * 100 | round),
  eta: .eta_seconds,
  failed: .objects_failed
}'
← Prometheus MetricsCLI Reference →
Godwit Sync

Production-grade data migration and synchronization for large object storage. Control, predictability, and safety at scale.

Product

  • Pricing
  • Documentation

Legal

  • Terms of Service
  • User Agreement
  • Privacy Policy

© 2026 Godwit Sync. All rights reserved.

Version v1.0.19