Per-link anti-fraud results for one template version
GET
https://emails.routeon.io/api/v1/templates/{id}/versions/{version}/links
Returns what the last Verify stored for this version's links. Cache-only: it never re-crawls, so it is safe to load on every editor open — press Verify to get a new answer. status is the stored links status, as recorded by that run: stored verdicts do not expire, so nothing here changes on its own between two Verify presses. not_verified means no run was ever stored, which is different from a run that found no links (approved with extracted_count: 0). This is a warning surface, not a gate: it reports what is stored even where a link verdict does not take part in activation, and answers not_verified with an empty list only when nothing was ever stored for the version.
Parameters
id
string<uuid>
required
path
version
integer
required
path
Responses
200
Stored link results for the requested version
404
Resource not found within tenant scope
422
Body/query/params failed validation. meta.reason=VALIDATION_ERROR, meta.validation_error[] carries {field, message} per failure ('' field = show the message as-is). Always 422 — a request that parsed but broke a rule is never 400. Sender resolution reports through meta.details.code: invalid_from_address (the `from` string is not `local@domain` or `Name <local@domain>`), from_domain_mismatch (its domain is not a verified domain of the tenant), domain_required (neither `domain_id` nor `from` was given), sender_not_configured (no route and no default profile resolves for this send) and sender_not_found (the referenced profile id is unknown to the tenant). content_moderation_rejected: POST /transactional/send and /transactional/send-batch verify the template's active version before accepting the send, and a rejected verdict fails the request. The check cannot be switched off.
Example response · 200
{
"status": "success",
"http_code": 0,
"payload": {
"status": "not_verified",
"reason": "string",
"links": [
{
"url": "string",
"status": "pending",
"stage": "skipped",
"reason": "string"
}
],
"extracted_count": 0,
"links_truncated": true,
"links_set_truncated_by": "deadline"
},
"meta": []
}
Example response · 404
{
"status": "error",
"http_code": 0,
"payload": [],
"meta": {
"reason": "VALIDATION_ERROR",
"validation_error": [
{
"field": "string",
"message": "string"
}
],
"details": []
}
}
Example response · 422
{
"status": "error",
"http_code": 0,
"payload": [],
"meta": {
"reason": "VALIDATION_ERROR",
"validation_error": [
{
"field": "string",
"message": "string"
}
],
"details": []
}
}