Deliverd Screen API
The Screen API from Deliverd — 1 operation(s) for screen.
The Screen API from Deliverd — 1 operation(s) for screen.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/deliverd-dev:deliverd-dev-screen-api"
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.
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: 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