public_id query parameter before it opens either of these widgets:
- A custom widget in the Fluid mobile app
- A Droplet iframe widget in Portal
public_id to resolve the current user’s information from your server. Do not use it to authenticate the user or the API request.
What public_id identifies
public_id is a stable, company-scoped identity identifier. For an ordinary member-backed account, it is the member’s stable UUID. An admin-only account can receive an admin identity UUID instead.
Do not parse the value or infer a record type from it. Send it to the resolver and use the returned user data.
Resolve the user from your server
Keep your Droplet installation token on your server. Never expose it in iframe JavaScript, mobile widget content, a query parameter, or a response to the browser.1
Read public_id from the widget URL
Read the value as an opaque string. Handle a missing value before you request user information.
2
Send public_id to your server
Send the value to an authenticated route in your widget application. Your server must select the Droplet installation for the current company. Do not accept a company identifier from the browser as proof of that selection.
3
Call the Fluid resolver
From your server, call The resolver searches only the company associated with the Bearer token. It does not create a Fluid session or turn
GET /api/v2025-06/users/by-public-id/{public_id}. Authenticate with the installation token for the company that owns the widget.public_id into a login credential.Request the required scope
Request theusers scope for your Droplet before a company installs it. The resolver returns 403 when the installation does not have this scope.
Use the installation’s authentication_token as the Bearer token. See Build and publish a Fluid Droplet for the installation credential flow.