Nuvelics documentation
APIAPI reference

Story checks

Write the checks Nuvelics evaluates your stories against, draft one from a sentence, and preview one before you save it.

GET
/api/tenant/v1/story-checks

Authorization

headerx-api-key<token>

A service key (nvs_...) in the x-api-key header. A service key belongs to one organization: an X-Org-Id header is optional and, when sent, must name that organization. This header also accepts any credential the bearer scheme does, and when a request sends both headers, this one is used.

Response Body

Every check the org has ever defined, archived included

application/json
  1. response
items*array<>
Example Request
curl -X GET 'https://api.nuvelics.com/api/tenant/v1/story-checks'
Example Response
{  "items": [    {      "id": "string",      "orgId": "string",      "slug": "string",      "name": "string",      "instructions": "string",      "outputKind": "findings",      "maxSeverity": "inform",      "channels": [        "nrcs"      ],      "modelTier": "fast",      "enabled": false,      "enabledAt": "2019-08-24T14:15:22Z",      "definitionVersion": 1,      "version": 0,      "createdBy": "string",      "createdAt": "2019-08-24T14:15:22Z",      "updatedAt": "2019-08-24T14:15:22Z",      "archivedAt": "2019-08-24T14:15:22Z"    }  ]}

Create a story check

POST
/api/tenant/v1/story-checks

Authorization

headerx-api-key<token>

A service key (nvs_...) in the x-api-key header. A service key belongs to one organization: an X-Org-Id header is optional and, when sent, must name that organization. This header also accepts any credential the bearer scheme does, and when a request sends both headers, this one is used.

Request Body

application/json
  1. body
slug*string

Kebab-case identifier this check is keyed by downstream (the rule_id on the wire); immutable after create

Match^[a-z0-9]+(-[a-z0-9]+)*$
Length1 <= length <= 100
name*string

Check display name

Length1 <= length
instructions*string

Org-authored rubric text evaluated against a story's content, in the admin's own words

Length1 <= length <= 4000
outputKind*string

Whether this check reports findings against a rubric or freeform suggestions

Value in"findings""suggestions"
maxSeverity*string

Severity ceiling a finding is clamped to, never raised past; only meaningful when outputKind is findings, null otherwise

Value in"inform""flag"null
channels*array<>

Where this check runs; a non-empty set with no duplicates

Items1 <= items
modelTier?string

Which model tier evaluates this check

Default"fast"
Value in"fast""capable"
enabled?boolean

Whether this check runs on matching stories

Defaultfalse

Response Body

Story check created

application/json
  1. response
id*string

Story check identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
orgId*string

Owning organization identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
slug*string

Kebab-case identifier this check is keyed by downstream (the rule_id on the wire); immutable after create

Match^[a-z0-9]+(-[a-z0-9]+)*$
Length1 <= length <= 100
name*string

Check display name

Length1 <= length
instructions*string

Org-authored rubric text evaluated against a story's content, in the admin's own words

Length1 <= length <= 4000
outputKind*string

Whether this check reports findings against a rubric or freeform suggestions

Value in"findings""suggestions"
maxSeverity*string

Severity ceiling a finding is clamped to, never raised past; only meaningful when outputKind is findings, null otherwise

Value in"inform""flag"null
channels*array<>

Where this check runs; a non-empty set with no duplicates

Items1 <= items
modelTier?string

Which model tier evaluates this check

Default"fast"
Value in"fast""capable"
enabled?boolean

Whether this check runs on matching stories

Defaultfalse
enabledAt*string

When enabled was last switched on; null if it never has been

Formatdate-time
definitionVersion*integer

Bumped whenever instructions, maxSeverity, outputKind or modelTier changes

Range1 <= value
version*integer

Monotonic row version; used as concurrency token

createdBy*string

User who created this check

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
createdAt*string

ISO 8601 creation timestamp

Formatdate-time
updatedAt*string

ISO 8601 last-modified timestamp

Formatdate-time
archivedAt*string

ISO 8601 archival timestamp; null while the check is active

Formatdate-time
Example Request
curl -X POST 'https://api.nuvelics.com/api/tenant/v1/story-checks' \  -H 'Content-Type: application/json' \  -d '{  "slug": "string",  "name": "string",  "instructions": "string",  "outputKind": "findings",  "maxSeverity": "inform",  "channels": [    "nrcs"  ]}'
Example Response
{  "id": "string",  "orgId": "string",  "slug": "string",  "name": "string",  "instructions": "string",  "outputKind": "findings",  "maxSeverity": "inform",  "channels": [    "nrcs"  ],  "modelTier": "fast",  "enabled": false,  "enabledAt": "2019-08-24T14:15:22Z",  "definitionVersion": 1,  "version": 0,  "createdBy": "string",  "createdAt": "2019-08-24T14:15:22Z",  "updatedAt": "2019-08-24T14:15:22Z",  "archivedAt": "2019-08-24T14:15:22Z"}

Get a story check

GET
/api/tenant/v1/story-checks/{id}

Authorization

headerx-api-key<token>

A service key (nvs_...) in the x-api-key header. A service key belongs to one organization: an X-Org-Id header is optional and, when sent, must name that organization. This header also accepts any credential the bearer scheme does, and when a request sends both headers, this one is used.

Path Parameters

id*string

Story check identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$

Response Body

The story check.

application/json
  1. response
id*string

Story check identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
orgId*string

Owning organization identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
slug*string

Kebab-case identifier this check is keyed by downstream (the rule_id on the wire); immutable after create

Match^[a-z0-9]+(-[a-z0-9]+)*$
Length1 <= length <= 100
name*string

Check display name

Length1 <= length
instructions*string

Org-authored rubric text evaluated against a story's content, in the admin's own words

Length1 <= length <= 4000
outputKind*string

Whether this check reports findings against a rubric or freeform suggestions

Value in"findings""suggestions"
maxSeverity*string

Severity ceiling a finding is clamped to, never raised past; only meaningful when outputKind is findings, null otherwise

Value in"inform""flag"null
channels*array<>

Where this check runs; a non-empty set with no duplicates

Items1 <= items
modelTier?string

Which model tier evaluates this check

Default"fast"
Value in"fast""capable"
enabled?boolean

Whether this check runs on matching stories

Defaultfalse
enabledAt*string

When enabled was last switched on; null if it never has been

Formatdate-time
definitionVersion*integer

Bumped whenever instructions, maxSeverity, outputKind or modelTier changes

Range1 <= value
version*integer

Monotonic row version; used as concurrency token

createdBy*string

User who created this check

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
createdAt*string

ISO 8601 creation timestamp

Formatdate-time
updatedAt*string

ISO 8601 last-modified timestamp

Formatdate-time
archivedAt*string

ISO 8601 archival timestamp; null while the check is active

Formatdate-time
Example Request
curl -X GET 'https://api.nuvelics.com/api/tenant/v1/story-checks/string'
Example Response
{  "id": "string",  "orgId": "string",  "slug": "string",  "name": "string",  "instructions": "string",  "outputKind": "findings",  "maxSeverity": "inform",  "channels": [    "nrcs"  ],  "modelTier": "fast",  "enabled": false,  "enabledAt": "2019-08-24T14:15:22Z",  "definitionVersion": 1,  "version": 0,  "createdBy": "string",  "createdAt": "2019-08-24T14:15:22Z",  "updatedAt": "2019-08-24T14:15:22Z",  "archivedAt": "2019-08-24T14:15:22Z"}
PATCH
/api/tenant/v1/story-checks/{id}

Authorization

headerx-api-key<token>

A service key (nvs_...) in the x-api-key header. A service key belongs to one organization: an X-Org-Id header is optional and, when sent, must name that organization. This header also accepts any credential the bearer scheme does, and when a request sends both headers, this one is used.

Path Parameters

id*string

Story check identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$

Request Body

application/json
  1. body
name?string

Check display name

Length1 <= length
instructions?string

Org-authored rubric text evaluated against a story's content, in the admin's own words

Length1 <= length <= 4000
outputKind?string

Whether this check reports findings against a rubric or freeform suggestions

Value in"findings""suggestions"
maxSeverity?string

Severity ceiling a finding is clamped to, never raised past; only meaningful when outputKind is findings, null otherwise

Value in"inform""flag"null
channels?array<>

Where this check runs; a non-empty set with no duplicates

Items1 <= items
modelTier?string
Value in"fast""capable"
enabled?boolean

Response Body

Story check updated

application/json
  1. response
id*string

Story check identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
orgId*string

Owning organization identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
slug*string

Kebab-case identifier this check is keyed by downstream (the rule_id on the wire); immutable after create

Match^[a-z0-9]+(-[a-z0-9]+)*$
Length1 <= length <= 100
name*string

Check display name

Length1 <= length
instructions*string

Org-authored rubric text evaluated against a story's content, in the admin's own words

Length1 <= length <= 4000
outputKind*string

Whether this check reports findings against a rubric or freeform suggestions

Value in"findings""suggestions"
maxSeverity*string

Severity ceiling a finding is clamped to, never raised past; only meaningful when outputKind is findings, null otherwise

Value in"inform""flag"null
channels*array<>

Where this check runs; a non-empty set with no duplicates

Items1 <= items
modelTier?string

Which model tier evaluates this check

Default"fast"
Value in"fast""capable"
enabled?boolean

Whether this check runs on matching stories

Defaultfalse
enabledAt*string

When enabled was last switched on; null if it never has been

Formatdate-time
definitionVersion*integer

Bumped whenever instructions, maxSeverity, outputKind or modelTier changes

Range1 <= value
version*integer

Monotonic row version; used as concurrency token

createdBy*string

User who created this check

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$
createdAt*string

ISO 8601 creation timestamp

Formatdate-time
updatedAt*string

ISO 8601 last-modified timestamp

Formatdate-time
archivedAt*string

ISO 8601 archival timestamp; null while the check is active

Formatdate-time
Example Request
curl -X PATCH 'https://api.nuvelics.com/api/tenant/v1/story-checks/string' \  -H 'Content-Type: application/json' \  -d '{}'
Example Response
{  "id": "string",  "orgId": "string",  "slug": "string",  "name": "string",  "instructions": "string",  "outputKind": "findings",  "maxSeverity": "inform",  "channels": [    "nrcs"  ],  "modelTier": "fast",  "enabled": false,  "enabledAt": "2019-08-24T14:15:22Z",  "definitionVersion": 1,  "version": 0,  "createdBy": "string",  "createdAt": "2019-08-24T14:15:22Z",  "updatedAt": "2019-08-24T14:15:22Z",  "archivedAt": "2019-08-24T14:15:22Z"}
DELETE
/api/tenant/v1/story-checks/{id}

Authorization

headerx-api-key<token>

A service key (nvs_...) in the x-api-key header. A service key belongs to one organization: an X-Org-Id header is optional and, when sent, must name that organization. This header also accepts any credential the bearer scheme does, and when a request sends both headers, this one is used.

Path Parameters

id*string

Story check identifier

Match^[0-7][0-9A-HJKMNP-TV-Z]{25}$

Response Body

Story check archived

Example Request
curl -X DELETE 'https://api.nuvelics.com/api/tenant/v1/story-checks/string'
Example Response
Empty
POST
/api/tenant/v1/story-checks/preview

Authorization

headerx-api-key<token>

A service key (nvs_...) in the x-api-key header. A service key belongs to one organization: an X-Org-Id header is optional and, when sent, must name that organization. This header also accepts any credential the bearer scheme does, and when a request sends both headers, this one is used.

Request Body

application/json
  1. body
definition*
subject*|

Response Body

The evaluator's verdict against the draft definition and subject

application/json
  1. response
verdict*string
Value in"pass""findings"
findings*array<>
Itemsitems <= 20
truncated*boolean

Whether the model's findings list was longer than the cap and was truncated

Example Request
curl -X POST 'https://api.nuvelics.com/api/tenant/v1/story-checks/preview' \  -H 'Content-Type: application/json' \  -d '{  "definition": {    "instructions": "string",    "outputKind": "findings",    "maxSeverity": "inform"  },  "subject": {    "storyId": "string"  }}'
Example Response
{  "verdict": "pass",  "findings": [    {      "severity": "inform",      "title": "string",      "detail": "string",      "excerpt": "string"    }  ],  "truncated": true}
POST
/api/tenant/v1/story-checks/draft

Authorization

headerx-api-key<token>

A service key (nvs_...) in the x-api-key header. A service key belongs to one organization: an X-Org-Id header is optional and, when sent, must name that organization. This header also accepts any credential the bearer scheme does, and when a request sends both headers, this one is used.

Request Body

application/json
  1. body
intent*string

A sentence or two of editorial intent the admin types, from which a model drafts a full check definition

Length1 <= length <= 500

Response Body

A complete, editable check definition drafted from the intent; nothing is stored

application/json
  1. response
slug*string

Kebab-case identifier this check is keyed by downstream (the rule_id on the wire); immutable after create

Match^[a-z0-9]+(-[a-z0-9]+)*$
Length1 <= length <= 100
name*string

Check display name

Length1 <= length
instructions*string

Org-authored rubric text evaluated against a story's content, in the admin's own words

Length1 <= length <= 4000
outputKind*string

Whether this check reports findings against a rubric or freeform suggestions

Value in"findings""suggestions"
maxSeverity*string

Severity ceiling a finding is clamped to, never raised past; only meaningful when outputKind is findings, null otherwise

Value in"inform""flag"null
channels*array<>

Where this check runs; a non-empty set with no duplicates

Items1 <= items
modelTier?string

Which model tier evaluates this check

Default"fast"
Value in"fast""capable"
Example Request
curl -X POST 'https://api.nuvelics.com/api/tenant/v1/story-checks/draft' \  -H 'Content-Type: application/json' \  -d '{  "intent": "string"}'
Example Response
{  "slug": "string",  "name": "string",  "instructions": "string",  "outputKind": "findings",  "maxSeverity": "inform",  "channels": [    "nrcs"  ],  "modelTier": "fast"}

Report a problem with this page

On this page