Hosted pages
The calls behind Workwae's hosted connect pages. Your backend creates the session; these routes are used by the page itself.
Guides: Connect flows.
| Method | Path | Operation | Scope |
|---|---|---|---|
GET | /v1/hosted/connect-sessions/{token} | Read a hosted connect session | none |
POST | /v1/hosted/connect-sessions/{token}/imap-accounts | Connect an IMAP account from the hosted page | none |
GET | /v1/hosted/connect-sessions/{token}/autoconfig | Find IMAP and SMTP settings from the hosted page | none |
GET | /v1/hosted/meeting-connect-sessions/{token} | Read a hosted meeting connect session | none |
Runs in your browser against api.workwae.com with the key you enter. Use a read-only key, limited to a test account if you can.
token*string1 <= lengthOK
application/json- response
tenantName*stringproviders*array<>microsoftCloud*MicrosoftCloud"global""gcc-high""dod""china"status*ConnectSessionStatus"pending""completed""failed"reauthEmail*string|nullloginHint*string|nullexpiresAt*stringdate-timecurl -X GET 'https://api.workwae.com/v1/hosted/connect-sessions/string'{ "tenantName": "string", "providers": [ "google" ], "microsoftCloud": "global", "status": "pending", "reauthEmail": "string", "loginHint": "string", "expiresAt": "2026-05-04T09:30:00.000Z"}Runs against the live API with the key you enter: this change really happens. Use a key limited to a test account.
When the tenant's plan allows no more accounts, or its payment is past due beyond the grace period, the session fails and redirectUrl carries status=error&error=plan_limit_accounts (or billing_past_due), as the OAuth callback does. Giving dav switches settings.calendarEnabled and contactsEnabled on for the halves found unless the session's options name them, as POST /v1/imap-accounts does. A reconnect session replaces the password only: the account keeps its stored servers and DAV settings, and any sent here are ignored. Its DAV login is checked again: with the new password when DAV uses the IMAP password, otherwise with dav.password when given (which then replaces the stored DAV password) or the stored one.
token*string1 <= lengthapplication/json- body
email*stringemaillength <= 320displayName?stringlength <= 255password*string1 <= length <= 1024smtpPassword?string1 <= length <= 1024imap?smtp?|nullappendSent?booleandav?OK
application/json- response
redirectUrl*stringuricurl -X POST 'https://api.workwae.com/v1/hosted/connect-sessions/string/imap-accounts' \ -H 'Content-Type: application/json' \ -d '{ "email": "ada@example.com", "password": "string"}'{ "redirectUrl": "https://app.example.com/"}Runs in your browser against api.workwae.com with the key you enter. Use a read-only key, limited to a test account if you can.
token*string1 <= lengthemail*stringemaillength <= 320OK
application/json- response
source*AutoconfigSource"provider""autoconfig""ispdb""srv""mx"imap*smtp*|nulloauth*|nulldav*|nullcurl -X GET 'https://api.workwae.com/v1/hosted/connect-sessions/string/autoconfig?email=ada%40example.com'{ "source": "provider", "imap": { "host": "string", "port": 0, "security": "tls", "user": "string" }, "smtp": { "host": "string", "port": 0, "security": "tls", "user": "string" }, "oauth": "google", "dav": { "source": "provider", "calendarUrl": "string", "contactsUrl": "string" }}Runs in your browser against api.workwae.com with the key you enter. Use a read-only key, limited to a test account if you can.
token*string1 <= lengthOK
application/json- response
tenantName*stringservice*MeetingService"zoom""webex"accountEmail*stringstatus*ConnectSessionStatus"pending""completed""failed"expiresAt*stringdate-timecurl -X GET 'https://api.workwae.com/v1/hosted/meeting-connect-sessions/string'{ "tenantName": "string", "service": "zoom", "accountEmail": "string", "status": "pending", "expiresAt": "2026-05-04T09:30:00.000Z"}