Vidjet · Authentication Profile
Vidjet Authentication
Authentication
Vidjet secures its APIs with none and apiKey across 4 declared security schemes, as derived from its OpenAPI definitions.
CompanyE-commerceVideoShoppable VideoShopifyConversionMarketingNo-codeWidgetsEmbed
Methods: none, apiKey
Schemes: 4
OAuth flows:
API key in: query, body
Security Schemes
none none
siteId apiKey
· in: query (siteId)
authToken apiKey
· in: body (integrationKeys.authToken)
woocommerce-auth-callback oauth-like-handshake
Source
Authentication Profile
generated: '2026-08-13'
method: derived
source: >-
wordpress.org/plugins/vidjet (includes/class-vidjet-api.php,
includes/class-vidjet-settings.php, v1.1.4) + media.vidjet.io/client-app.js +
live unauthenticated probes of app-api.vidjet.io on 2026-08-13
note: >-
Vidjet publishes no authentication documentation. There is no OpenAPI to derive
securitySchemes from, so this profile is derived from the two first-party
artifacts Vidjet does publish (the GPL WordPress plugin source and the public
embed script) plus what the live API returned to anonymous requests. Nothing
here is inferred from naming or convention.
docs: null
summary:
types: [none, apiKey]
documented_by_provider: false
oauth2: false
openid_connect: false
mutual_tls: false
api_key_in: [query, body]
schemes:
- name: none
type: none
applies_to:
- GET /widgets
evidence: >-
GET https://app-api.vidjet.io/widgets returned HTTP 200 with
application/json and no credential of any kind on 2026-08-13. With no siteId
it returned a default test site record; with an unknown siteId it returned
200 and an empty site object. Read access to the campaign-resolution endpoint
is anonymous by design — it is called from the browser by the embed script.
- name: siteId
type: apiKey
in: query
parameter: siteId
format: UUID v4
secret: false
evidence: >-
The documented embed snippet is
media.vidjet.io/client-app.js?siteId=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx and
the script forwards it as GET ${backend}/widgets?siteId=... . It is a public
tenant identifier shipped in page source, not a credential.
note: >-
Because it is embedded in every customer's HTML, siteId must be treated as
public. It selects a tenant; it does not authorize anything.
- name: authToken
type: apiKey
in: body
parameter: integrationKeys.authToken
secret: true
evidence: >-
Vidjet_Api::install() POSTs to /plugins/install and, on HTTP 200, stores
`siteId` and `authToken` from the response via
Vidjet_Settings::set_settings(); the plugin persists them in a WordPress
option. The pair is also accepted on the way in as
body.integrationKeys.{siteId,authToken} when re-installing.
issued_by: POST https://app-api.vidjet.io/plugins/install
rotation: not documented
scopes: none published
- name: woocommerce-auth-callback
type: oauth-like-handshake
applies_to:
- POST /woocommerce/auth-callback
evidence: >-
The plugin registers https://app-api.vidjet.io/woocommerce/auth-callback as
the return endpoint of the WooCommerce REST API key-generation flow, so
Vidjet receives WooCommerce consumer credentials for the merchant store.
OPTIONS on that path returned 200 with `Allow: POST`.
note: >-
This is WooCommerce's authorization handshake, not a Vidjet OAuth server.
Vidjet publishes no authorization or token endpoint of its own — every
/.well-known/oauth-authorization-server and /.well-known/openid-configuration
probe on every Vidjet host returned 404 or 403.
transport:
https_only: true
observed_headers:
access-control-allow-origin: '*'
access-control-allow-methods: PUT, POST, GET, DELETE, OPTIONS
access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept
note: >-
CORS is fully open on app-api.vidjet.io, consistent with an API designed to be
called from arbitrary merchant storefronts.
gaps:
- No published authentication documentation of any kind.
- No documented way for a merchant to obtain an API credential outside of installing a platform plugin.
- No scopes, no token expiry, no rotation or revocation policy published.