Skip to content

May this portal file be used like this?

POST
/api/v1/portal/{slug}/check
curl --request POST \
--url http://localhost:3000/api/v1/portal/example/check \
--header 'Content-Type: application/json' \
--data '{ "channel": "example", "territory": "example", "date": "2026-04-15", "asset": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0" }'

POST /api/v1/check for a portal’s visitor, behind the same door as the portal (see GET /api/v1/portal/{slug}): one of the files it shows, weighed for a use against its license window, territories, channels and model release. A file the portal doesn’t show is a 404. It never suggests another file.

No key needed.

slug
required
string

The portal’s address

Media typeapplication/json
object
channel

Where it will run, e.g. paid-social

string
/^[a-z0-9]+(-[a-z0-9]+)*$/
territory

The country it will run in, e.g. DE

string
/^[A-Z]{2}$/
date

The day it will run; today when left out

string format: date
/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))$/
asset
required
string format: uuid
/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/
Examplegenerated
{
"channel": "example",
"territory": "example",
"date": "2026-04-15",
"asset": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0"
}

The verdict

Media typeapplication/json
object
allowed
required

False when any reason is blocking

boolean
asset
required
object
id
required
string format: uuid
/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/
title
required
string
use
required
object
channel
string
territory
string
date
string format: date
/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))$/
context
string
reasons
required

Why not, and what to know

Array<object>
object
code
required
string
Allowed values: not_approved deleted archived superseded embargoed expired territory channel model_release context
message
required
string
blocking
required

False: go ahead, but know this

boolean
suggest
required

What to use instead: the replacement, the brand’s variant for the context

Array<object>
object
id
required
string format: uuid
/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/
title
required
string
url
required
string format: uri
why
required
string
Example
{
"reasons": [
{
"code": "not_approved"
}
]
}

Not in yet: how to get in

Media typeapplication/json
object
error
required
object
code
required
string
Allowed value: password
message
required
string
detail
required
object
name
required
string
access
required
string
Allowed values: password members
theme
required
object
logo
required

A URL on this host: the portal’s, else its first brand’s mark, else its organization’s

string | null
accent
required

The portal’s, else its first brand’s color, else its organization’s

string | null
background
required
string | null
icon
required

The organization’s, for the browser tab

string | null
product
required

What the organization calls the product

string
Example
{
"error": {
"code": "password",
"detail": {
"access": "password"
}
}
}

An error

Media typeapplication/json
object
error
required
object
code
required
string
message
required
string
detail
Examplegenerated
{
"error": {
"code": "example",
"message": "example",
"detail": "example"
}
}