Documentation Index
Fetch the complete documentation index at: https://docs.serval.com/llms.txt
Use this file to discover all available pages before exploring further.
About Typeform
Typeform is a conversational form and survey platform with a REST API that covers form design, response collection, theming, and webhook delivery. Connecting Typeform to Serval enables workflows that read and create forms, pull form responses into your CRM or warehouse, manage themes and images, and register webhooks that fire on every new submission.What the Typeform integration enables
| Capability | Description | Typeform scope required |
|---|---|---|
| Account info | Read the connected user’s email, language, and account ID | accounts:read |
| Form management | List, create, update, and delete forms; perform JSON Patch updates on existing forms | forms:read, forms:write |
| Response collection | Pull paginated responses for a form, filter by date range or token, delete specific responses | responses:read, responses:write |
| Webhooks | List, create, update, and delete webhooks per form, addressed by tag | webhooks:read, webhooks:write |
| Workspaces | List, create, update, and delete workspaces, including searching by name | workspaces:read, workspaces:write |
| Themes | List, create, update, and delete themes used across forms | themes:read, themes:write |
| Images | List, upload, and delete images stored in the account for use across forms | images:read, images:write |
Prerequisites
- A Typeform account with permission to register apps in the Typeform Developer Apps panel.
Connect Typeform to Serval
The Typeform app registration form requires the Redirect URI up front — you cannot save the app and add it later. Because of that, the connection flow interleaves between Serval and Typeform: start the connection in Serval to reveal the Redirect URI, register your Typeform app with that URI, then come back to Serval with the resulting Client ID and Client Secret to finish. Have both browser tabs open before you start. The full sequence:Start the connection in Serval to reveal the Redirect URI
https://svflow-auth-config.api.serval.com/typeform/oauth/callback).Click Copy to grab the URI. Leave this modal open — you’ll come back to it once you have your Typeform credentials.Register a Typeform app with the Redirect URI
- App name — for example,
Serval Integration. - App website — your company website. This is metadata Typeform shows on the consent screen and does not affect the OAuth flow.
- Redirect URI(s) — paste the URI you copied from the Serval Connect modal. This field is required at registration.
- Developer email — your email; Typeform contacts you here about the app.
Approve the OAuth 2.0 scopes on the new app
accounts:readforms:readforms:writeimages:readimages:writethemes:readthemes:writeworkspaces:readworkspaces:writeresponses:readresponses:writewebhooks:readwebhooks:writeoffline
offline scope is required for Serval to refresh access tokens automatically. Without it, Typeform issues access tokens that expire after one week and the connection would need to be reauthorized every week. With offline, Typeform issues a refresh token alongside the access token and Serval uses it transparently.Finish the connection in Serval
- Paste the Client ID from the Typeform Developer Apps panel.
- Paste the Client Secret you copied when you registered the app.
- Click Connect to Typeform.
user_id of the account that authorized the app. Reconnecting the same Typeform account later — for example, after rotating the Client Secret or expanding scopes — updates the existing Serval connection in place, preserving any workflows already wired to it. Reconnecting with a different Typeform account creates a new, separate connection.Updating scopes
If you approve a new OAuth scope on your Typeform app after you’ve already connected Serval, the existing connection keeps using the scopes it was originally granted. To pick up new scopes:- In the Typeform Developer Apps panel, confirm the new scope is approved on your app.
- In Serval, open the connected Typeform integration and click Reconnect.
- Typeform will show the consent screen again with the expanded scope list — approve it to refresh the grant.
Troubleshooting
'Typeform rejected the client credentials' or 'invalid_client' at the end of the OAuth flow
'Typeform rejected the client credentials' or 'invalid_client' at the end of the OAuth flow
- Someone clicked Regenerate client secret in the Edit app panel after the old one was pasted into Serval. Typeform invalidates the previous secret immediately.
- The secret was copied with a leading or trailing character — Typeform shows the secret only once, so a typo can slip through unnoticed.
- The Client ID and Client Secret pasted into Serval belong to different Typeform apps.
The OAuth flow fails with 'invalid_scope'
The OAuth flow fails with 'invalid_scope'
The connection works initially but breaks after about a week
The connection works initially but breaks after about a week
offline scope was not granted, so Typeform did not issue a refresh token alongside the access token. Typeform access tokens expire after one week by default — without a refresh token, the connection cannot recover automatically.To fix: confirm the offline scope is approved on your Typeform app, then reconnect in Serval. The new authorize step will include offline in the requested scopes and Typeform will issue a refresh token.An API call returns HTTP 403 even though the connection is healthy
An API call returns HTTP 403 even though the connection is healthy

