Projects
Several sites in one organization, each with its own verdicts, queue and webhooks.
A project is one site or app. An organization that moderates a forum and a marketplace makes one project for each, and every verdict is filed under the project the call names. The activity, the review queue and the webhooks are then per project, while the keys, the members, the plan and the credits stay with the organization and serve all of them.
Every organization starts with a project called default. Make more in your
dashboard, and name one in the call:
curl https://toxicfilter.com/api/v1/text \
-H "Authorization: Bearer tf_live_..." \
-H "Content-Type: application/json" \
-d '{ "content": "...", "project": "forum" }'
The answer says where it was filed, as "project": "forum". Leave
project out and the verdict goes to your default project. Name one that does
not exist and the call is refused with 422 unknown_project, never filed
somewhere else, because a typo would otherwise send a whole site's verdicts into another
project's queue.
What belongs to a project
| Per project | Per organization |
|---|---|
| Its verdicts, its activity and its review queue | The API keys: any key works for any project |
| Its webhook endpoints, which hear about this project only | The plan and the credits, which every project spends from |
| Its repetition counts, reputation and remembered pictures (see context) | The members and their roles |
| The policy its calls use when they name none | The policies themselves, which any project can use |
Repetition and reputation are kept apart on purpose: the same message arriving on your forum says nothing about your shop, and one person's record on one site is not their record on another.
A policy per project
Each project can choose the policy its calls are judged under when they name none. A call
that sends policy still decides for itself, and a project that chose nothing
uses your default policy. So a forum and a marketplace can share one set of keys and still
be judged by different rules without either integration sending a policy name.
Batches and the review queue
A batch names its project once, on the
envelope, and every item in it is filed there. GET /v1/batches?project=forum
lists one project's batches, and GET /v1/records?project=forum reads one
project's queue.
Names
A project has a name people read and a slug the API uses, lowercase letters, numbers and dashes. The name can change; the slug cannot, so renaming a project never breaks an integration. The default project can be changed from the dashboard, and it cannot be deleted while it is the default. Deleting another project deletes its webhook endpoints and keeps its verdicts.