Assetera Docs
Distribution partners

Applicant status (GetApplicantProgress)

Read where a user is in the KYC workflow. The GetApplicantProgress request, its response shape, and the enum vocabulary every status field uses.

GetApplicantProgress answers "where is this user in the workflow?". It is the endpoint the SDK itself polls, and the one to call from your backend whenever you need status on demand.

Call it after onComplete fires, and whenever you render a status badge. For the push side, subscribe to webhooks instead of polling on a timer.

GET {baseUrl}/api/Applicant/GetApplicantProgress?applicantId={id}&fetchStepInfo={bool}

Request

ParameterTypeRequiredDescription
applicantIdlongyesThe applicant ID returned by createToken.
fetchStepInfoboolnotrue re-evaluates and returns full localized step metadata.

Use fetchStepInfo=true on first load and when the user changes language. Ordinary polling uses false, which keeps the call cheap.

HeaderValue
AuthorizationBearer {accessToken}
Accept-LanguageISO 639-1 locale (en, de, ar). Controls localized step copy.
Abp-TenantId / ClientIdTenant scope.

Response

{
  "success": true,
  "result": {
    "applicantId":      1248,
    "externalUserId":   "USER-12345",
    "workFlowKey":      "INDIVIDUAL_FULL_KYC",
    "workflowResult":   "InProgress",
    "riskLevel":        "LowRisk",
    "kycStatus":        "Pending",
    "reviewStatus":     "InProgress",
    "nextWorkflowKey":  null,
    "nextWorkflowName": null,
    "status":           "InProgress",
    "customMessage":    "",
    "customMessageDE":  "",
    "currentStep": {
      "order":       2,
      "action":      "Questionaries",
      "name":        "QuestionnaireStep",
      "title":       "Knowledge questionnaire",
      "description": "Please answer the following questions"
    },
    "flowSteps":    [ /* every step in this workflow, same shape */ ],
    "stepInfoList": [ /* full localized info, only when fetchStepInfo=true */ ]
  }
}

For a status badge there is a lighter variant that skips the step metadata entirely.

Do not grant access on kycStatus alone

kycStatus is the identity verdict. Whether a customer may trade also depends on review and risk outcomes, so gate on your own backend's reading of the full result, never on a browser callback.

Enum reference

Every status field above uses one of these vocabularies.

ApplicantProgressStatus

ValueNumericMeaning
None0Not started.
InProgress1Workflow is active on a step.
Finished2Workflow tree complete.
OnHold3Paused for manual review, document review, or representative KYC.
IdentityPending4Submitted to the ID provider, waiting on their webhook.

ReviewStatus

ValueMeaning
NewJust created, no decisions yet.
InProgressWorkflow running.
UnderReviewWaiting on the admin team.
AdminReviewRouted to an admin for an explicit decision.
ApprovedFinal state, passed.
RejectFinal state, failed.
ClosedFinal state, archived.

KycStatus

ValueNumeric
None0
Pending1
Approved2
Rejected3
ResendRequested4

RiskLevel

ValueNumeric
LowRisk0
MediumRisk1
HighRisk2
Alert3

WorkflowResultType

ValueNumeric
NotStarted0
InProgress1
Success2
PartialSuccess3
Failed4
Skipped5
AdminReview6
SkippedAndAdminReview7

WorkflowStepAction

ValueNumeric
IdentitySdk0
RiskScoring1
Questionaries2
AdditionalData3
AppropriatenessTest4
UploadDocument5
ManualReview6
Overview7

Questionaries and OnHoldPrgocess keep their original spelling for backwards compatibility. Match them exactly.

On this page