Monitor any bot that can send an HTTPS request
.NET, Python, Blue Prism or a job on a timer: if it can sign and send a JSON request, Robovue watches it next to your UiPath, Automation Anywhere and Power Automate bots.
Your code’s bots this morning
Example- Stock syncMissed
- Price file importFailed
- Report exportRunning
- Email to your team · 06:05Stock sync missed a run. Its last run was yesterday at 06:00.
- Slack on the Team plan, #rpa-alerts · 06:05Missed · Stock sync missed a run.
What Robovue watches
Each request reports one run. Send it when the run ends, or as it starts and again when it finishes.
- Runs as they happen. Report a run as Running when it starts, then send the same delivery ID with Success or Failure when it ends. Retries are safe: a report sent twice is recorded once.
- Bots that do not run. Give the bot a schedule, and Robovue marks it Missed when its time passes with no report.
- Why it failed. Send a failure category and any detail you like in the payload. An
error,errorMessageormessagefield in it becomes the alert’s summary. - Screenshots and logs. On the Team plan and above, attach one PNG, JPEG or text file, up to 5 MB, to a failed run.
The SDKs
Open source under the MIT licence. Each signs every request, retries when the network or Robovue has a problem, checks a report before sending it, and can send dry runs while you set up.
- .NET.
dotnet add package Robovue.Sdk, for .NET Framework 4.6.2 or later and .NET 6 or later. Robovue.Sdk on NuGet - Python.
pip install robovue-sdk, for Python 3.9 or later. robovue-sdk on PyPI - Anything else. Send the request below yourself. Robovue gives it in C#, Python, PowerShell and shell, and every example there is MIT-0, free to copy.
Connect it in three steps
Install the .NET or Python SDK, or send the request yourself from any language. Robovue gives it in C#, Python, PowerShell and shell (curl).
-
Open Connections → Your code
Start free, and your address and webhook secret are waiting there. The address holds your workspace ID (
tenantIdin the request). Keep the secret out of your source code. -
Install the SDK, or sign the request yourself
The SDK signs, retries and checks every report. Without it, sign the exact bytes you send with HMAC-SHA256 and your secret. Robovue has examples in C#, Python, PowerShell and shell, and a checker to compare your signature against.
-
Send one run and check it
The page shows it arrive, or says exactly why it was rejected. Add the dry-run header to check everything without recording a run. Then register the bot and say when it runs, so a missed run alerts you.
After a dry run
A dry run passed every check in the last 24 hours.
Nothing was stored. Send a run without the dry-run header to record one.
Once a run has reported
Connected. The last run was recorded at 07:20.
The request
Every response code, the limits and the full signature scheme are in the reference in Robovue once you’ve signed up.
POST https://app.robovue.co.uk/
The endpoint both SDKs call, and the one to use from any other language.
Headers
Content-TypeRequired-
application/jsonThe body is JSON. A charset parameter is fine.
X-Robovue-Delivery-IdRequired-
1–200 printable ASCII characters, no spaces
Unique to this run. Sending it again updates or confirms the same run instead of creating a second one, as a retry does, or the Success or Failure that ends a Running run. A GUID or your bot’s own run ID both work. It cannot start with "uipath-job-" or "automation-anywhere-", because Robovue uses those for runs it receives from UiPath and Automation Anywhere.
X-Robovue-TimestampRequired-
Unix time in whole seconds
When you signed the request. It must be within 5 minutes of Robovue’s clock either way, so a captured request stops working within minutes. Sign each attempt just before sending it, retries included.
X-Robovue-SignatureRequired-
v1=<lowercase hex>An HMAC-SHA256 keyed with your webhook secret. Sign the timestamp, the word run and the delivery ID, each followed by a line break, then the exact request body. Encode it as lowercase hex and put v1= in front. Sign the exact bytes you send, because re-serialising the JSON after signing changes them. Several comma-separated v1= values are accepted, and any one matching is enough.
X-Robovue-Dry-RunOptional-
trueChecks the request exactly as a real one would be checked, including authentication, every field, the delivery ID and your plan’s bot limit, and stores nothing. The response says what would have happened. Use it to test an integration without creating runs. Any other value, or no header, is an ordinary request.
Body
A JSON object with the fields below.
botIdstring, up to 200 characters Required-
Your name for the bot. Every run with the same botId belongs to the same bot in Robovue. Spaces and punctuation are fine, but not / or \. It cannot start or end with a space, or contain tabs or line breaks. The same ID registers and manages the bot through the Management API.
For example
invoice-bot-01 platformstring, up to 50 characters Required-
What runs the bot, shown beside it in Robovue. Any short label works, such as dotnet, python, go or blue-prism. The same space and line break rules as botId apply.
For example
python statusstring Required-
How the run went. Running reports a run that has started and not finished yet. When it ends, send the same delivery ID again with Success or Failure. Values are case-sensitive.
One of
SuccessFailureRunningFor example
Success startedAttimestamp Required-
When the run started, as an RFC 3339 timestamp with a time zone offset: Z for UTC, or ±hh:mm. For example, 2026-07-17T09:00:00Z. It cannot be before 2000, or more than an hour ahead of Robovue’s clock. Unix times are not accepted.
For example
2026-07-17T09:00:00Z completedAttimestamp Sometimes-
Required when status is Success or Failure; leave it out when status is Running
When the run finished. It has the same format and limits as startedAt, and cannot be before it.
For example
2026-07-17T09:01:30Z failureCategorystring Optional-
Only with status Failure
Why the run failed, if your bot can tell. If it cannot, leave it out: the run is recorded as Uncategorized, and you can change that later on the run’s page. Values are case-sensitive.
One of
UncategorizedBusinessExceptionApplicationExceptionTimeoutAuthenticationErrorCancelledFor example
ApplicationException payloadobject Optional-
Anything that will help you debug the run later, such as an invoice number, the step that failed or a stack trace. It must be a JSON object, and it’s stored as sent and shown on the run’s page. A top-level error, errorMessage or message string becomes the summary in the failure alert. It counts toward the 64 KB request limit.
For example
{ "invoiceId": "INV-2291", "error": "Timed out waiting for the vendor portal" }
One request, and your code’s bots sit alongside your others
You need no card and no sales call. Your address and secret are ready the moment you sign up.