Skip to main content

Weflow Public API

The Weflow Public API gives you programmatic access to the data Weflow Conversation Intelligence captures from your meetings. Use it to push data into a data warehouse, sync recordings into internal tools, or trigger workflows in other systems.

Using the Weflow Public API

The Weflow Public API gives you programmatic access to the data Weflow Conversation Intelligence captures from your meetings — recordings, participants, video URLs, comments, clips, and interaction metrics. You can use it to push call data into a data warehouse, build custom dashboards, sync recordings into internal tools, or trigger workflows in other systems.

This article walks through how to authenticate, what's available today, and what's coming in the early May 2026 release.

The full interactive reference lives at api.getweflow.app/api/v1/docs.


Before you start

To use the API you'll need:

  • A Weflow workspace on a plan that includes API access. If you're not sure whether your plan includes it, reach out to your Customer Success Manager or contact support.

  • An API key generated from your Weflow workspace settings. Treat this key like a password — it grants access to all conversation data in your company workspace.

  • The API can be set here:

The API base URL is:

https://api.getweflow.app/api/v1

Authentication

Every request must include your API key in the Authorization header as a Bearer token:

Authorization: Bearer YOUR_API_KEY

If the key is missing or invalid, the API returns a 401 Unauthorized response. If your workspace doesn't have API access enabled, list endpoints return 403 Forbidden — in that case, contact support to enable it.

Rate limits

The API is rate limited per workspace. If you exceed the limit, you'll receive a 429 Too Many Requests response. We recommend implementing exponential backoff for any production integration and batching reads where possible (for example, paginating with a sensible page size rather than fetching one record at a time).


Working with recordings

Everything in the API today is centered on recordings — the meetings Weflow has captured, transcribed, and analyzed. Each recording has a unique uid (UUID) that you'll use across all the endpoints below.

List recordings

GET /recordings

Returns a paginated list of recordings for your company, newest first.

Query parameters:

Parameter

Type

Description

limit

integer

Number of recordings per page (default 20)

cursor

string

Cursor from the previous response to fetch the next page

startDate

ISO 8601 datetime

Only return recordings on or after this date

endDate

ISO 8601 datetime

Only return recordings on or before this date

The response includes data (the recordings), total, nextCursor, and hasMore. To paginate, pass nextCursor back in your next request as the cursor parameter — and keep going while hasMore is true.

Example:

curl "https://api.getweflow.app/api/v1/recordings?limit=50&startDate=2026-04-01T00:00:00Z" \   -H "Authorization: Bearer YOUR_API_KEY"

Get a single recording

GET /recordings/{uid}

Returns full metadata for one recording, including:

  • Title, duration, and start time

  • Source (bot or other), whether the meeting was external, and conference URL

  • The linked Salesforce recording ID (if Weflow synced it to Salesforce)

  • Transcript and summary languages

  • The list of participants with name, email, and role (host or attendee)

  • All Salesforce records the recording is linked to (Account, Opportunity, Contact, etc.) with their IDs, object types, and names

This is the endpoint you'll typically call to enrich a recording in your system after spotting it in the list endpoint.

Get recording video URLs

GET /recordings/{uid}/video

Returns pre-signed S3 URLs for the recording video:

  • streamUrl — for playback (e.g., embedding in a web player)

  • downloadUrl — for downloading the file

  • expiresAt — the timestamp at which both URLs expire

Important: The URLs expire after 1 hour. Don't store them long-term. If you need a fresh URL, re-call this endpoint at request time.

Get recording comments

GET /recordings/{uid}/comments

Returns threaded comments left on the recording. The response is a flat list, but each comment includes a parentCommentUid and a replies array containing the UIDs of its replies — so you can reconstruct threads on your side.

Each comment includes the author (userUid, userName), timestamp position in the recording (timestampSeconds), the rich-text content, and the character range it's anchored to (startChar, endChar).

Get recording clips

GET /recordings/{uid}/clips

Returns all clips someone has saved from the recording. Each clip has a start and end (in seconds), a title, the text it covers, and the user who created it.

Useful for surfacing customer-highlighted moments, building libraries of objection-handling examples, or syndicating clips to enablement tools.

Get recording interaction metrics

GET /recordings/{uid}/interaction-metrics

Returns per-participant conversation analytics:

Metric

What it measures

talkRatio

Share of the meeting this person spoke

longestMonologue

Longest uninterrupted stretch of speech (seconds)

interactivityScore

Composite score for back-and-forth engagement

patience

How long this person waits before responding

questionsPerHour

Question rate normalized to hourly

totalQuestions

Total questions asked

transitionPauses

Number of pauses between speaker transitions

These are the same metrics that power the coaching insights in the Weflow app — pulling them via API is how teams typically build custom rep scorecards or feed coaching data into a BI tool.


Coming in early May 2026: Scorecards and Transcripts

Two new endpoints are landing in the early May release.

Scorecards

You'll be able to fetch scorecard results for any recording — the criteria, scores, AI-generated reasoning, and reviewer comments. This makes it possible to:

  • Pipe scorecard outcomes into Salesforce as custom object records

  • Build aggregate reporting across reps, teams, or deal stages in your BI tool

  • Trigger workflows when specific criteria fail (e.g., notify a manager when "next steps confirmed" is rated low)

Full transcripts

You'll be able to retrieve the complete transcript for a recording, including:

  • Speaker-attributed utterances with timestamps

  • Word-level timing where available

  • The detected language

This unlocks a wide range of use cases — feeding transcripts into your own LLM workflows, archiving meeting content in your knowledge base, running custom search across calls, or training internal models on your sales conversations.

We'll update this article with detailed endpoint references and examples once the release is live. If you want to be notified when it ships, opt in to API release announcements in your workspace settings.


Error handling

Errors follow a consistent shape:

{   "error": {     "code": "string",     "message": "string"   } }

Common status codes:

  • 400 Bad Request — invalid query parameters (typically a malformed date or unknown cursor)

  • 401 Unauthorized — missing or invalid API key

  • 403 Forbidden — API not enabled for your workspace

  • 404 Not Found — recording UID doesn't exist or isn't accessible to your workspace

  • 429 Too Many Requests — rate limit exceeded; back off and retry

A typical integration pattern

For most use cases, the flow looks like this:

  1. Discover new recordings — poll GET /recordings on a schedule (e.g., every 15 minutes) using startDate set to the last sync time, paginating until hasMore is false.

  2. Enrich each recording — for any new UID, call GET /recordings/{uid} to pull metadata, participants, and Salesforce links.

  3. Pull the analytics you need — call interaction-metrics, comments, clips, and (from May) scorecards and the transcript endpoint as needed.

  4. Generate video URLs on demand — never cache streamUrl or downloadUrl; call /video at the moment you need them.

Need help?

If you run into anything unexpected — missing data, unclear errors, or a use case the API doesn't yet support — reach out to support@getweflow.com or use the in-app chat. We read every API feedback ticket and use it to prioritize the roadmap.

Did this answer your question?