Skip to content
Anlyon
Esc
↑↓navigate↵open⌘Jpreview

Replay a lost write under the same identity

Repeat the write of an unknown effect under the same provider identity, for adapters that declare sameKeyReplay backed by a provider idempotency key (stripe.refund and resend.email_send, each within its 24-hour window). github.file_update does not offer replay: GitHub has no idempotency key, and the blob-SHA precondition cannot tell a restored file from an unwritten one. A declared action never offers replay either, because it sends no provider idempotency key. A replay is a write and passes every control a first dispatch passes: the reviewed binding and preview expiry, the approval, the action version that would run now, the halt switch, the requesting credential’s authority, current policy and dependencies. Every refusal has one shape: 409 with code REPLAY_REFUSED, the reason in details.reason (replay_unsupported, not_unknown, replay_window_passed, credential_unavailable, allowance_released, write_in_flight, or the dispatch control that failed, such as policy_denies or preview_expired) and the effect’s current outcome in details.outcome. A refusal is recorded in the effect’s evidence, sends nothing and changes nothing else. An admitted replay that fails (never sent, or refused by the provider) describes that attempt, not the original write: the effect stays unknown with its allowance held. Only the provider’s own record of the operation in a failed state settles it failed. It never creates a second effect.

POST/api/v2/actions/effects/{id}/replay
Authorization
AuthorizationBearer token (Anlyon API key) · headerrequired

Workspace API key sent as Authorization: Bearer <key>.

or
better-auth.session_tokenAPI key · cookierequired

Browser session used by dashboard-only operations.

Path parameters
idstringrequired

Public effect identifier.

min length 1 · max length 100
Header parameters
X-Request-Idstring

Optional caller correlation ID. Unsafe or oversized values are replaced.

max length 128
Responses
200

Effect with evidence returned.

successbooleanrequired
Allowed:true
dataEffectDetailrequired
Show properties
idstringrequired
invocationIdstringrequired
operationKeystringrequired
environmentIdstring<uuid>required
actionobjectrequired
Show properties
namestringrequired
versionIdstringrequired
adapterobjectrequired
Show properties
typestringrequired
versionstringrequired
stagestringrequired
Allowed:awaiting_approvalreadydispatchingreconcilingsettledrejected
outcomestringrequired
Allowed:not_dispatchedpendingsucceededfailedunknown
partialEffectstringrequired

A failure is not proof of zero impact.

Allowed:nonepossibleconfirmed
gradestringrequired

The receipt grade, derived by the database from the stage, outcome, outcome source and rejection reason. confirmed: the outcome is succeeded and it was read from the provider's own record of the operation, or a declared read-back matched. acknowledged: the provider accepted the request with a 2xx and no read-back has matched. An operator's manual succeeded also grades here and keeps verification: manual. unknown: no usable response, so reconciliation owns the effect and its allowance stays held. failed: the provider rejected the request, or the request provably never left Anlyon. refused: Anlyon refused at dispatch, for example on a digest mismatch, an exhausted or unbounded limit, an expired preview or a changed action version. denied: the approval was denied. pending: no receipt yet.

Allowed:confirmedacknowledgedunknownfailedrefuseddeniedpending
verificationstringrequired
Allowed:providermanualunverifiednot_dispatched
providerReferencestring | nullrequired
targetobjectrequired
impactImpactQuantity[]required
Show properties
Array of ImpactQuantity
dimensionstringrequired

money, resource_mutations, or a workspace-declared unit such as emails.

matches ^[a-z][a-z0-9_]{0,31}$
currencystring

Present for money.

matches ^[a-z]{3}$
amountintegerrequired

Integer minor units for money. A count for every other dimension.

min 0
boundstringrequired
Allowed:exactupper_bound
previewIdstring | nullrequired
approvalIdstring | nullrequired
bindingDigeststring | nullrequired
dependsOnobject[]required
Show properties
Array of object
effectIdstringrequired
outcomestringrequired
compensatesstring | nullrequired
rejectionReasonstring | nullrequired
unresolvedExposurebooleanrequired
reconciliationobjectrequired
Show properties
attemptsintegerrequired
min 0
nextAtstring<date-time> | nullrequired
exhaustedbooleanrequired
createdAtstring<date-time>required
firstDispatchedAtstring<date-time> | nullrequired
outcomeAtstring<date-time> | nullrequired
updatedAtstring<date-time>required
requestobjectrequired
capabilitiesobjectrequired
attemptsobject[]required
Show properties
Array of object
numberintegerrequired
kindstringrequired
Allowed:dispatchreplayreconcile
statusstringrequired
Allowed:startedcompletedabandoned
observedOutcomestring | nullrequired
errorstring | nullrequired
startedAtstring<date-time>required
finishedAtstring<date-time> | nullrequired
evidenceobject[]required
Show properties
Array of object
idstringrequired
sourcestringrequired
Allowed:previewprovider_responseprovider_lookupsystemoperator_notemanual_resolution
observedAtstring<date-time>required
impliedOutcomestring | nullrequired
providerIdsobjectrequired
summarystringrequired
detailsobjectrequired
actorobjectrequired
Show properties
typestringrequired
idstring | nullrequired
recordedAtstring<date-time>required
reservationsobject[]required
Show properties
Array of object
limitIdstringrequired
namestringrequired
dimensionstringrequired
currencystring | nullrequired
periodstringrequired

The accounting period this reservation belongs to for its whole life.

amountintegerrequired
statestringrequired
Allowed:reservedsettledreleased
exposurestring | nullrequired
Allowed:dispatchingpendingunknownpartialnull
settledintegerrequired
releasedintegerrequired
createdAtstring<date-time>required
finishedAtstring<date-time> | nullrequired
previewActionPreview | nullrequired
Show properties
Any of:
ActionPreview
idstringrequired
actionobjectrequired
Show properties
idstringrequired
namestringrequired
versionIdstringrequired
adapterobjectrequired
Show properties
typestringrequired
versionstringrequired
environmentobjectrequired
Show properties
idstringrequired
namestringrequired
kindstringrequired
targetobjectrequired
requestobjectrequired

The exact normalized request that will be dispatched.

impactImpactQuantity[]required
blocksPreviewBlock[]required
Show properties
Array of PreviewBlock
typestringrequired
Allowed:fieldstext_diffimpactlimitations
titlestringrequired
fieldsobject[]
Show properties
Array of object
labelstringrequired
valuestringrequired
pathstring
beforestring
afterstring
truncatedboolean
quantitiesImpactQuantity[]
itemsobject[]
Show properties
Array of object
kindstringrequired
Allowed:guaranteefreshnessunsupportedirreversible
textstringrequired
preconditionsobjectrequired

Material preconditions; part of the binding.

capabilitiesobjectrequired

The adapter's declared guarantees.

allowancesobject[]required

Applicable impact limits at preview time. Dispatch rechecks.

evidenceObservedAtstring<date-time>required
expiresAtstring<date-time>required
expiredbooleanrequired
requestDigeststringrequired
bindingDigeststringrequired

SHA-256 over the canonical request, target, versions, preconditions, scope and expiry. What an approval agrees to.

supersedesstring | nullrequired
effectIdstring | nullrequired

The effect executing this preview, once one is admitted.

createdAtstring<date-time>required
null
null
401

Unauthorized - Invalid or missing API key

successbooleanrequired
requestIdstringrequired

Correlation ID matching the X-Request-Id response header.

errorobjectrequired
Show properties
codestring
messagestring
detailsobject
403

Authenticated credential lacks the required scope or workspace access.

successbooleanrequired
requestIdstringrequired

Correlation ID matching the X-Request-Id response header.

errorobjectrequired
Show properties
codestring
messagestring
detailsobject
404

Not Found - Resource does not exist

successbooleanrequired
requestIdstringrequired

Correlation ID matching the X-Request-Id response header.

errorobjectrequired
Show properties
codestring
messagestring
detailsobject
409

The request conflicts with current resource state or a concurrent decision.

successbooleanrequired
requestIdstringrequired

Correlation ID matching the X-Request-Id response header.

errorobjectrequired
Show properties
codestring
messagestring
detailsobject
429

Too Many Requests - Rate limit exceeded

successbooleanrequired
requestIdstringrequired

Correlation ID matching the X-Request-Id response header.

errorobjectrequired
Show properties
codestring
messagestring
detailsobject
Try it
Server
Authorization
Parameters
Request
curl -X POST 'https://api.anlyon.com/api/v2/actions/effects/string/replay' \
  -H 'Authorization: Bearer YOUR_TOKEN'
Response
{
  "success": true,
  "data": {
    "id": "eff_01JABCDEF",
    "invocationId": "string",
    "operationKey": "string",
    "environmentId": "19f5cc2e-7657-437a-9268-83cd3d563563",
    "action": {
      "name": "string",
      "versionId": "string"
    },
    "adapter": {
      "type": "string",
      "version": "string"
    },
    "stage": "awaiting_approval",
    "outcome": "not_dispatched",
    "partialEffect": "none",
    "grade": "confirmed",
    "verification": "provider",
    "providerReference": "string",
    "target": {},
    "impact": [
      {
        "dimension": "money",
        "currency": "usd",
        "amount": 0,
        "bound": "exact"
      }
    ],
    "previewId": "string",
    "approvalId": "string",
    "bindingDigest": "string",
    "dependsOn": [
      {
        "effectId": "string",
        "outcome": "string"
      }
    ],
    "compensates": "string",
    "rejectionReason": "string",
    "unresolvedExposure": true,
    "reconciliation": {
      "attempts": 0,
      "nextAt": "2019-08-24T14:15:22Z",
      "exhausted": true
    },
    "createdAt": "2019-08-24T14:15:22Z",
    "firstDispatchedAt": "2019-08-24T14:15:22Z",
    "outcomeAt": "2019-08-24T14:15:22Z",
    "updatedAt": "2019-08-24T14:15:22Z",
    "request": {},
    "capabilities": {},
    "attempts": [
      {
        "number": 0,
        "kind": "dispatch",
        "status": "started",
        "observedOutcome": "string",
        "error": "string",
        "startedAt": "2019-08-24T14:15:22Z",
        "finishedAt": "2019-08-24T14:15:22Z"
      }
    ],
    "evidence": [
      {
        "id": "string",
        "source": "preview",
        "observedAt": "2019-08-24T14:15:22Z",
        "impliedOutcome": "string",
        "providerIds": {
          "property1": "string",
          "property2": "string"
        },
        "summary": "string",
        "details": {},
        "actor": {
          "type": "string",
          "id": "string"
        },
        "recordedAt": "2019-08-24T14:15:22Z"
      }
    ],
    "reservations": [
      {
        "limitId": "string",
        "name": "string",
        "dimension": "money",
        "currency": "string",
        "period": "string",
        "amount": 0,
        "state": "reserved",
        "exposure": "dispatching",
        "settled": 0,
        "released": 0,
        "createdAt": "2019-08-24T14:15:22Z",
        "finishedAt": "2019-08-24T14:15:22Z"
      }
    ],
    "preview": {
      "id": "prv_01JABCDEF",
      "action": {
        "id": "string",
        "name": "string",
        "versionId": "string"
      },
      "adapter": {
        "type": "string",
        "version": "string"
      },
      "environment": {
        "id": "string",
        "name": "string",
        "kind": "string"
      },
      "target": {},
      "request": {},
      "impact": [
        {
          "dimension": "money",
          "currency": "usd",
          "amount": 0,
          "bound": "exact"
        }
      ],
      "blocks": [
        {
          "type": "fields",
          "title": "string",
          "fields": [
            {
              "label": "string",
              "value": "string"
            }
          ],
          "path": "string",
          "before": "string",
          "after": "string",
          "truncated": true,
          "quantities": [
            {
              "dimension": "money",
              "currency": "usd",
              "amount": 0,
              "bound": "exact"
            }
          ],
          "items": [
            {
              "kind": "guarantee",
              "text": "string"
            }
          ]
        }
      ],
      "preconditions": {},
      "capabilities": {},
      "allowances": [
        {}
      ],
      "evidenceObservedAt": "2019-08-24T14:15:22Z",
      "expiresAt": "2019-08-24T14:15:22Z",
      "expired": true,
      "requestDigest": "string",
      "bindingDigest": "string",
      "supersedes": "string",
      "effectId": "string",
      "createdAt": "2019-08-24T14:15:22Z"
    }
  }
}