# STR address evidence API

Send one supported U.S. jurisdiction and one to 25 addresses to the live STR Permit Registry Actor. Use a caller-owned Apify token in the `Authorization: Bearer` header.

```bash
curl -X POST "https://api.apify.com/v2/acts/civicdataforge~str-permit-registry/runs?waitForFinish=120" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"outputMode":"address_evidence","cities":["orlando"],"addresses":["1100 Briercliff Drive, Orlando, FL"]}'
```

Read the run response, then fetch the dataset identified by `defaultDatasetId`. Preserve the decision state, issuing source URL, retrieval time, selected scope, and receipt hash.

## Receipt-bound evidence in your automation

Use the [Evidence Gateway](https://apify.com/civicdataforge/civicdataforge-evidence-gateway) when your workflow needs a combined, source-bound evidence packet. Your existing HTTP client can use your own Apify credential, kept in its secret store. Review the Actor tariff and set an explicit run-cost ceiling before starting. Start once and retain the run ID; retries should read that run, not buy a replacement.

The Gateway's authoritative result is `GATEWAY-PACKET` in the run's default key-value store, not the STR dataset described above. Check the Gateway Actor identity, stored `INPUT`, and packet receipt bindings before accepting the result. Preserve its source dates, completeness and decision state.

With a CivicDataForge first-party key, use [our MCP endpoint](https://civicdataforge.pages.dev/mcp). Recover a pending call by repeating the original `tools/call` body and `Idempotency-Key`. The service reads the bound run and does not start another one. A lost start with no confirmed run ID requires reconciliation; `UNRESOLVED` is not delivery. First-party keys do not grant Apify account or storage access. See the [agent catalog](https://civicdataforge.pages.dev/agent-catalog.json) for supported tasks and routes.

Possible decision states are `EVIDENCE_FOUND`, `NO_PUBLISHED_MATCH`, `REVIEW_REQUIRED`, `SOURCE_UNAVAILABLE`, and `SCOPE_INCOMPLETE`. A no-match is bounded to the selected published source; it is not proof that a permit does not exist.

- Live Actor: https://apify.com/civicdataforge/str-permit-registry
- Public example: https://apify.com/civicdataforge/str-permit-registry/examples/check-orlando-str-permits
- Decision contract: https://civicdataforge.pages.dev/decision-contract.json
- Agent catalog: https://civicdataforge.pages.dev/agent-catalog.json
