All pages

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 projectPer organization
Its verdicts, its activity and its review queueThe API keys: any key works for any project
Its webhook endpoints, which hear about this project onlyThe 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 noneThe 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.