Voyc · Authentication Profile
Voyc Authentication
Authentication
Voyc secures its APIs with cookie-session and api-token across 2 declared security schemes, as derived from its OpenAPI definitions.
CompanyConversation IntelligenceComplianceCall MonitoringSpeech AnalyticsContact CentersFinancial ServicesArtificial Intelligence
Methods: cookie-session, api-token
Schemes: 2
OAuth flows:
API key in:
Security Schemes
SessionCookieWithCSRF cookie
OrganisationAppAccessToken apiToken
Source
Authentication Profile
generated: '2026-08-14'
method: probed
source: >-
Live unauthenticated probes of https://api.app.voyc.ai plus the public Voyc web
application bundle at https://app.voyc.ai/assets/api-Y8KVxUPb.js (first-party
JavaScript served from Voyc's own domain).
note: >-
Voyc publishes no public API reference, so no securityScheme document exists to
derive from. This profile is assembled ONLY from what an unauthenticated client
can observe on Voyc's own hosts: the HTTP responses api.app.voyc.ai returns, and
the request configuration Voyc's own first-party web app ships to every browser.
No credentials were used and no access control was defeated.
api_host: https://api.app.voyc.ai
summary:
types: [cookie-session, api-token]
api_key_in: []
oauth2_flows: []
oauth2: false
openid_connect: false
public_reference_published: false
schemes:
- name: SessionCookieWithCSRF
type: cookie
description: >-
The Voyc web application authenticates to /api/v2 with a Django session cookie
plus a CSRF double-submit token. The first-party client is configured with
withCredentials, xsrfHeaderName "X-CSRFToken" and xsrfCookieName "csrftoken".
This is the browser/app path, not a documented integration path.
evidence:
source: https://app.voyc.ai/assets/api-Y8KVxUPb.js
detail: >-
axios instance created with {withCredentials:true, withXSRFToken:true,
xsrfHeaderName:"X-CSRFToken", xsrfCookieName:"csrftoken", baseURL: <api host>/api/v2}
- name: OrganisationAppAccessToken
type: apiToken
description: >-
Voyc API v3 exposes a per-organisation "app" registration with issuable access
tokens. The management surface is /v3/organisation/{organisationId}/app/ and
/v3/organisation/{organisationId}/app/{appId}/access-token/ (list, create,
delete). The token issued there is the credential an integrating system uses.
The transport header for the issued token is NOT publicly documented and was
not observed unauthenticated.
management_endpoints:
- method: GET
path: /v3/organisation/{organisationId}/app/
- method: GET
path: /v3/organisation/{organisationId}/app/{appId}/
- method: PATCH
path: /v3/organisation/{organisationId}/app/{appId}/
- method: DELETE
path: /v3/organisation/{organisationId}/app/{appId}/
- method: GET
path: /v3/organisation/{organisationId}/app/{appId}/access-token/
- method: POST
path: /v3/organisation/{organisationId}/app/{appId}/access-token/
- method: DELETE
path: /v3/organisation/{organisationId}/app/{appId}/access-token/{tokenId}/
evidence:
source: https://app.voyc.ai/assets/index-BKkV0m2i.js
detail: >-
First-party app bundle issues GET/POST/PATCH/DELETE against these exact v3
template paths.
observed_challenges:
- url: https://api.app.voyc.ai/v3/organisation/
method: GET
http_status: 403
www_authenticate: null
body: >-
{"type":"client_error","errors":[{"code":"not_authenticated","detail":"Authentication
credentials were not provided.","attr":null}]}
detail: >-
Returns 403 with a DRF standardized-errors envelope rather than a 401 with a
WWW-Authenticate challenge, so an agent gets no machine-readable hint about
which credential to present.
- url: https://api.app.voyc.ai/api/v2/auth/login/
method: GET
http_status: 200
detail: >-
Anonymous session-state endpoint; returns {"authenticated": false, "user": null, ...}
to an unauthenticated caller.
gaps:
- No public authentication documentation page.
- No OAuth 2.0 or OpenID Connect surface (/.well-known/oauth-authorization-server,
/.well-known/oauth-protected-resource and /.well-known/openid-configuration all 404
on api.app.voyc.ai and voyc.ai).
- The header name and format for the v3 access token are not published, so an
integrator cannot write a client from public material.