Deliverd Screen API

The Screen API from Deliverd — 1 operation(s) for screen.

Operations 1

POST /api/v1/screen Screen text before it goes to an AI model #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/deliverd-dev:deliverd-dev-screen-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

deliverd-dev-screen-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Deliverd Dev Screen API
  version: 1.0.0
  x-refined-note:
  - x-source differs across the merged source definitions and was not carried
  description: 'Operations tagged Screen across 2 of this provider''s published API definitions: deliverd-dev-openapi.json, deliverd-dev-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://deliverd.dev
  description: 'Deliverd REST API (paths carry the /api/v1 prefix; https://deliverd.dev/llms.txt: "REST API: https://deliverd.dev/api/v1")'
tags:
- name: Screen
paths:
  /api/v1/screen:
    post:
      summary: Screen text before it goes to an AI model
      description: 'Finds email addresses, phone numbers, IBANs, card numbers, national identifiers, secrets, special-category data and the organisation''s own terms, and decides against what the AI register approves the model (`aiSystemId`) to receive: `allow`, `redact` (send `redactedText`), `ask` (a person decides through the approval in `approval`; send the original only once it is approved) or `deny`. Send `text`, screened in memory and never stored, or `counts`, what the SDK found on the caller''s machine, so the text never leaves it. Every check is audited with counts and the verdict, never a value. On the Free plan the check is report-only (`mode: report_only`): it runs and is audited, `verdict` is always `allow`, and `wouldBe` says what a paid plan would have done. A net, not a guarantee: names are not reliably found.'
      security:
      - bearerAuth: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                text:
                  type: string
                  maxLength: 200000
                  description: The text about to be sent to a model. Screened in memory and never stored
                counts:
                  type: object
                  additionalProperties:
                    type: integer
                    minimum: 0
                    maximum: 1000000
                  description: What was found, by kind, when the text was screened where it is (the SDKs do this) and is not being sent
                termClassification:
                  type: string
                  enum:
                  - confidential
                  - restricted
                  description: 'With counts: the strictest classification among the terms found'
                aiSystemId:
                  type: string
                  format: uuid
                  description: The AI register's record for the model it is going to
                purpose:
                  type: string
                  maxLength: 500
                  description: 'What the text is for, for the person asked: ''Summarise a claim file'''
                externalId:
                  type: string
                  maxLength: 200
                  description: Your own reference, kept on any approval this asks for
                purview:
                  type: object
                  properties:
                    restriction:
                      type:
                      - string
                      - 'null'
                      enum:
                      - audit
                      - warn
                      - block
                      - null
                    actions:
                      type: integer
                      minimum: 0
                      maximum: 1000
                    scopeModified:
                      type: boolean
                    unavailable:
                      type: boolean
                  required:
                  - restriction
                  - actions
                  - scopeModified
                  - unavailable
                  description: 'Microsoft Purview''s answer on the text, from the SDKs'' purviewCheck: the strictest restriction its DLP policies returned (block, warn, audit or none). The text itself went to Microsoft, never here'
                ask:
                  type: boolean
                  description: Whether an `ask` verdict creates an approval for a person. Default true
      responses:
        '200':
          description: The verdict, and why
          content:
            application/json:
              schema:
                type: object
                properties:
                  verdict:
                    type: string
                    enum:
                    - allow
                    - redact
                    - ask
                    - deny
                  allowed:
                    type: boolean
                  classification:
                    type: string
                    enum:
                    - public
                    - internal
                    - confidential
                    - restricted
                  personalData:
                    type: boolean
                  categories:
                    type: array
                    items:
                      type: string
                  counts:
                    type: object
                    additionalProperties:
                      type: number
                  offending:
                    type: array
                    items:
                      type: string
                  reasons:
                    type: array
                    items:
                      type: string
                  target:
                    type:
                    - object
                    - 'null'
                    properties:
                      aiSystemId:
                        type: string
                        format: uuid
                      name:
                        type: string
                      approvedClassification:
                        type:
                        - string
                        - 'null'
                      personalData:
                        type: boolean
                    required:
                    - aiSystemId
                    - name
                    - approvedClassification
                    - personalData
                  findings:
                    type:
                    - array
                    - 'null'
                    items:
                      type: object
                      properties:
                        kind:
                          type: string
                        label:
                          type: string
                        start:
                          type: number
                        end:
                          type: number
                      required:
                      - kind
                      - label
                      - start
                      - end
                  redactedText:
                    type:
                    - string
                    - 'null'
                  approval:
                    type:
                    - object
                    - 'null'
                    properties:
                      id:
                        type: string
                      url:
                        type: string
                      status:
                        type: string
                    required:
                    - id
                    - url
                    - status
                  mode:
                    type: string
                    enum:
                    - enforce
                    - report_only
                  wouldBe:
                    type:
                    - string
                    - 'null'
                    enum:
                    - allow
                    - redact
                    - ask
                    - deny
                    - null
                required:
                - verdict
                - allowed
                - classification
                - personalData
                - categories
                - counts
                - offending
                - reasons
                - target
                - findings
                - redactedText
                - approval
                - mode
                - wouldBe
        '404':
          description: No AI system with that id in the organisation's register
      tags:
      - Screen
      operationId: postApiV1Screen
      x-operation-id-source: derived
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: 'API key (dlv_…) created in Settings → API tokens, or an OAuth access token (dlvo_…). Every route below can answer `401 auth_error` — the credential was not accepted — or `403 insufficient_scope`, which is a different thing: the credential is fine and was not issued with the scope this route needs. Reissue it with that scope rather than replacing it with another of the same ones. Older clients may still branch on `auth_error` for both.'
x-refined-from:
- deliverd-dev-openapi.json
- deliverd-dev-openapi.yml