For developers
If you track AI incidents, studies or claims, you can send them to us from your own tools. Each item lands in the same review queue as a reader’s submission, and a person checks it before it appears on the site.
How review works
- A key belongs to a person. Everything it sends is recorded under your name.
- Everything arrives as submitted. A key cannot approve, publish or edit anything, and no setting gives it that.
- A reviewer approves or declines each item. You can ask what happened to what you sent, including the reviewer’s note when something is declined.
- Sending the same catalogue entry twice files it twice. Check what you have already sent before you retry (see
/api/v1/evidence/statusbelow).
Get a key
Tell us what you will use it for and we will get back to you. Once we approve it, you collect the key here, signed in, within 14 days. It is shown once: we keep only a fingerprint of it, so a lost key is replaced rather than recovered.
A key can send evidence and read back what it sent. It allows 200 items a day and lasts 90 days. If you need more, say so in your request.
Endpoints
Send your key as a bearer token on every request. Any problem with the key, whether it is unknown, revoked or expired, gets the same 401.
Authorization: Bearer afais_live_…GET /api/v1/whoami
Make this your first call. It confirms whose name your submissions will carry, your limits and how many you have used today, and lists the risk slugs and catalogue names we accept.
curl https://www.australiansforaisafety.com.au/api/v1/whoami \
-H "Authorization: Bearer $AFAIS_API_KEY"POST /api/v1/evidence
Send up to 25 items at a time. Each item gets its own result, so one bad item does not fail the rest. A claim is 15 to 500 characters, and riskSlug must be one that whoami lists.
curl https://www.australiansforaisafety.com.au/api/v1/evidence \
-H "Authorization: Bearer $AFAIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"items": [{
"kind": "claim",
"claim": "A chatbot gave a customer a refund policy that did not exist.",
"occurredOn": "2024-02-14",
"sourceName": "Example News",
"sourceUrl": "https://example.com/story",
"riskSlug": "<a slug from whoami>",
"references": [{ "source": "aiid", "externalId": "639" }]
}]
}'A result with created: true carries the new item’s id. A non-empty collidesWith means something already on file cites the same catalogue entry: the item is still filed, and a reviewer decides.
Testing: ?dry_run=true
Add ?dry_run=true to the same request to check a batch without sending it. We run every check the real request would, then throw the result away: nothing reaches the queue and nothing counts towards your daily limit. Each result says wouldCreate: true and shows the item as it would be stored. The only values accepted are true and false; anything else is refused, so a typo cannot turn a test into a real submission. Dry runs still count towards your per-minute limit.
curl "https://www.australiansforaisafety.com.au/api/v1/evidence?dry_run=true" \
-H "Authorization: Bearer $AFAIS_API_KEY" \
-H "Content-Type: application/json" \
-d @batch.jsonPOST /api/v1/evidence/status
Ask what happened to items you sent, by catalogue reference: up to 100 at a time. It only answers about items your key sent.
curl https://www.australiansforaisafety.com.au/api/v1/evidence/status \
-H "Authorization: Bearer $AFAIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "refs": [{ "source": "aiid", "externalId": "639" }] }'Limits
- Per minute: set on your key, reported by
whoami. Over it, you get429. - Per day: 200 items on a new key, counted over the last 24 hours. Over it, the batch stops with
daily_cap. - The whole queue: when too many items are waiting for review, from anyone, new items stop with
queue_fulluntil reviewers catch up. Try again later.