SightEngine alternative

A SightEngine alternative with the same workflow routes

openshield serves three SightEngine workflow routes with the same paths and request fields. Change the base URL and the key, create your workflows, and map the category ids.

Up to 2,000 free checks every month. No card needed.

Request
curl -X POST \
  -F "media=@photo.jpg" \
  -F "workflow=default" \
  -F "api_user=ignored" \
  -F "api_secret=$OPENSHIELD_API_KEY" \
  "https://api.openshield.dev/1.0/check-workflow.json"
Answer, trimmedreject
{
  "status": "success",
  "request": { "id": "01a1...", "timestamp": 1792355002.0, "operations": 1 },
  "summary": {
    "action": "reject",
    "reject_prob": 0.97,
    "reject_reason": [
      { "id": "nudity", "score": 0.97, "threshold": 0.8 }
    ],
    "review_reason": []
  },
  "workflow": { "id": "default" }
}

The switch

What stays and what changes

Only the three workflow routes are served, and only the fields listed here. Other SightEngine endpoints, models and fields are not.

What stays the same

  • POST /1.0/check-workflow.json, with media or url, and workflow
  • GET /1.0/check-workflow.json?url=&workflow=&api_user=&api_secret=
  • POST /1.0/text/check-workflow.json, with text and workflow
  • The multipart form fields of the POST calls
  • The envelope of the answer: status, request (id, timestamp, operations), workflow (id) and summary with action, reject_prob and reject_reason

What changes

  • The base URL, which becomes https://api.openshield.dev
  • api_secret, which holds an openshield API key. api_user is accepted and ignored
  • The workflows: create ones of the same name in the dashboard, or use default
  • The category ids, which are openmod's own: map the ids in reject_reason to your messages
  • The answer also carries request_id, workflow_version, scores, time_ms and ref, which a client may ignore
  • SightEngine's per-model score fields (weapon, alcohol, drugs...) and its other models are not served: the scores are in scores, by openmod category id

In three steps

From one provider to the other

  1. 01

    Point the client at the new base URL

    Keep your POST or GET calls. Send an openshield key as api_secret.

  2. 02

    Create the workflows you used

    Start from a template in the dashboard and set the thresholds for each category.

  3. 03

    Map the category ids

    Match on the ids in reject_reason, such as nudity or gore, and never on the English text. Map each id to the message you show your users.

On the other side

What you get with openshield

  • An engine you can read and run

    openmod is open source under the Apache-2.0 licence, and you can run it yourself. openshield is the hosted version.

  • Nothing stored

    Content is checked in memory and forgotten when the answer is sent. The journal keeps the decision, never the content.

    Privacy and data

  • Checks processed in the EU

    The checking server and the databases are in the European Union.

  • Your own image categories, in words

    Describe what to look for in a few short sentences, and set how strict it is. No model to train.

    Image moderation API

  • Prepaid, with free use every month

    Up to 2,000 free checks every month, then a prepaid balance with no subscription. Each workflow shows what it costs per image and per text before you save it.

    Pricing

  • The full answer from the first call

    The decision, the reasons, and the score and threshold of each, before a first top-up too.

    Responses and errors

SightEngine is a trademark of its owner. openshield is not affiliated with or endorsed by SightEngine.

Questions

Before you start

Do I need to change my code?
Only the base URL and the key, if you call the workflow routes with an HTTP client you control. If your client library does not let you change the base URL, call the routes with a plain HTTP client.
Which SightEngine endpoints work?
Three workflow routes: the image check (POST and GET) and the text check (POST). Nothing else is served.
Do my SightEngine workflows carry over?
No. A workflow is named in your calls: create one of the same name in the dashboard, or use default, and set what is checked and how strictly.
Why do the category ids differ?
The categories are openmod's own, with stable ids such as nudity, gore and self_harm. The docs list the ones you are most likely to meet, and the dashboard lists them all.
Can I try it before I switch?
Yes. Every account gets up to 2,000 free checks each month (€2.00 of use) with every category, and no card is needed.

Start with up to 2,000 free checks every month

No card needed. Create a key and send your first request in five minutes.

Prepaid, in euros, excluding VAT