This is not meant to replace services like BrainTrust, LangTrace, and similar. This is taking telemetry from the business perspective, allowing you to optimize, manage, improve, and measure work against the broader business context.
Base URL
Fluency supplies the endpoint for your organization’s home region during onboarding.
Store this as
FLUENCY_WORKFLOW_ENDPOINT. Do not copy a URL from another Fluency organization or choose a region based on latency; an organization’s data remains in its assigned region.
Authentication
Send the organization-owned API key supplied by Fluency as a bearer credential:- be owned by your Fluency organization;
- include the
workflow-telemetry:writepermission; and - belong to an organization enabled for workflow telemetry.
Submit a run
Minimal request
Complete request
Run fields
Unknown fields are rejected.
Executor fields
For the organization API key flow, the submitted executor identity describes the workflow while the verified credential independently determines the organization and authorization.
Step fields
Steps may overlap or nest. Fluency calculates handling time from the union of measured step intervals so concurrent work is not counted twice.
Artifact fields
An execution artifact records what this particular run produced or observed. A business artifact identifies the underlying object across many human and automated executions.
Business artifact identity
Use one of these forms: Known Fluency artifact ID:source and external_id must be supplied together. Make source specific enough to separate systems, environments, accounts, and record types. Display names are not stable identity.
If no explicit business identity is supplied, Fluency may use exact structured identifiers and tenant-local semantic evidence. Ambiguous or conflicting evidence remains unlinked rather than merging unrelated objects.
Limits and validation
- Maximum request body: 2 MiB.
- Maximum steps: 1,000.
- Maximum artifacts: 100.
- Run, step, and artifact timestamps must be timezone-aware and ordered.
- Every step interval must fall within the run interval.
- Completed or failed runs cannot contain running steps.
- IDs must be unique within the run.
- All values must be valid JSON.
Acceptance response
New evidence:200. accepted means Fluency durably stored the evidence. It does not mean asynchronous process matching has finished.
Check processing status
process_id can be null until association succeeds. projection contains enrichment details and may gain fields during the private preview; clients should use processing_status and process_id for control flow.
An organization API key can check runs submitted to its organization.
Idempotency and retries
run_id is the idempotency key across the organization.
- Retry the exact same payload with the same
run_idafter a timeout or temporary server error. - An identical payload returns
duplicateand does not create another execution. - Different evidence under an existing
run_idreturns HTTP409. - Use a new
run_idfor every distinct execution, including a business-level retry that actually ran the workflow again.
5xx responses. Do not automatically retry other 4xx responses without correcting the request or credential.
Errors
Errors return a JSON body with a human-readabledetail field.
Never log the bearer credential while recording or reporting an error.
Process matching
Most customers should omitprocess_id. Fluency attempts association in this order:
- An explicit valid
process_id, when supplied. - A unique normalized workflow-name match.
- Grounded semantic matching against candidate processes in the authenticated organization.
- Creation or reuse of a workflow process when no safe existing match is available.
Delivery and privacy
- The API accepts final snapshots, not live partial updates or arbitrary OTLP streams.
- Inputs, outputs, artifact content, URIs, and error messages are stored when supplied.
- Do not include credentials or secrets in captured evidence.
- Omit sensitive values or use the SDK’s
captureContent: false/capture_content=Falsemode. - Processing failures do not delete the raw accepted evidence.
- The current API does not provide a customer endpoint for deleting individual runs.
SDK equivalents
TypeScript:Support information
When contacting Fluency, provide:- Fluency organization name;
executor.id;run_id;- approximate UTC timestamp;
- endpoint region;
- SDK language and version, if applicable; and
- HTTP status and error
detail.