Run Checker
API Documentation
Integrate organic compliance checks into your own systems using the OWC REST API.
Authentication

All API requests require your API key, passed as a Bearer token:

Authorization: Bearer owc_live_YOUR_KEY

Generate a key in your Account settings. Keys never expire — revoke them there if compromised.

Endpoints
GET /api/v1/status Validate key & check credits
curl -H "Authorization: Bearer owc_live_YOUR_KEY" \
     https://www.organicwebchecker.com/api/v1/status

{
  "ok": true,
  "email": "you@example.com",
  "credits": 10,
  "rate_limit": "60 checks per rolling hour"
}
POST /api/v1/check Submit a compliance check

Returns immediately with a job_id. Poll the result endpoint until status is done. Costs 1 credit per call.

curl -X POST \
     -H "Authorization: Bearer owc_live_YOUR_KEY" \
     -H "Content-Type: application/json" \
     -d '{"operation": "Green Hills Farm", "website": "https://example.com"}' \
     https://www.organicwebchecker.com/api/v1/check

{
  "ok": true,
  "job_id": "a1b2c3d4e5f6...",
  "status": "queued",
  "poll_url": "https://www.organicwebchecker.com/api/v1/check/a1b2c3d4e5f6..."
}
GET /api/v1/check/{job_id} Poll for results

Poll every 3–5 seconds. status progresses: queuedrunningdone or error.

curl -H "Authorization: Bearer owc_live_YOUR_KEY" \
     https://www.organicwebchecker.com/api/v1/check/a1b2c3d4e5f6...

{
  "ok": true,
  "job_id": "a1b2c3d4e5f6...",
  "status": "done",
  "operation": "Green Hills Farm",
  "website": "https://example.com",
  "report": {
    "flags": 2,
    "cautions": 1,
    "flagged":  [{ "title": "...", "detail": "..." }],
    "caution":  [{ "title": "...", "detail": "..." }],
    "verified": [...],
    "cert":     { "operation": "...", "certifier": "...", "status": "..." },
    "cert_products": ["Organic Apples", "Organic Pears"]
  }
}
Rate Limits & Credits

Need higher limits? Contact us for enterprise pricing.

Python Example
import requests, time

API_KEY = "owc_live_YOUR_KEY"
BASE    = "https://www.organicwebchecker.com"
HEADERS = {"Authorization": f"Bearer {API_KEY}"}

# Submit
r = requests.post(f"{BASE}/api/v1/check",
    headers=HEADERS,
    json={"operation": "Green Hills Farm", "website": "https://example.com"})
job_id = r.json()["job_id"]

# Poll
while True:
    r = requests.get(f"{BASE}/api/v1/check/{job_id}", headers=HEADERS)
    data = r.json()
    if data["status"] == "done":
        print(f'{data["report"]["flags"]} flags, {data["report"]["cautions"]} cautions')
        break
    elif data["status"] == "error":
        print("Error:", data.get("error"))
        break
    time.sleep(4)