Skip to main content
This API creates a normal Revyl login handoff. It never creates a partner-scoped session or signs a person in automatically.
Call POST /api/v1/partner/connections/{external_account_id}/dashboard-links with your partner API key, not a connected workspace credential. The account must have a live connection, and the request has no body. REVYL_API_BASE_URL and PARTNER_API_KEY are set as in Connect accounts.
HTTP 200 returns Cache-Control: no-store and: The URL is Revyl’s normal login page with an encoded return destination for /dashboard?organization_id=<ORGANIZATION_UUID>. After the person signs in, Revyl selects that workspace if their account belongs to it; otherwise Revyl tells them they don’t have access to it. The organization ID is a destination selector, not proof of access. Known limit: a magic link opened in a new browser tab loses the destination and lands on the person’s default workspace, which is correct for partner-created users who belong to a single workspace. Offer the button to the person who should use the connected workspace, but do not treat the partner key as a user identity. Normal Revyl authentication, organization membership, permissions, MFA, session lifetime and logout controls still apply.

Handle failures and quotas

The endpoint uses the existing partner error shape:
Use error.code, not message text, to decide what to do. The partner and account quota headers are present on successful responses and rate-limit refusals when that bucket was evaluated: X-RateLimit-Limit-*, X-RateLimit-Remaining-* and X-RateLimit-Reset-*. Reset values are Unix timestamps in seconds. An absent header does not mean unlimited capacity. Send a UUID in X-Request-Id to receive it back for support correlation. Keep the partner key server-side and do not log or cache the returned login URL.