Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.go.gbgplc.com/llms.txt

Use this file to discover all available pages before exploring further.

At any point during a journey, you can check the overall journey status and results. This is especially useful after the final interaction is submitted, when you need to detect completion and retrieve verification outcomes.

What you need

Before sending the request, make sure you have:

Fetch journey state

Send a POST request to the /journey/state/fetch endpoint:
BASH
curl --request POST \
  --url https://eu.platform.go.gbgplc.com/v2/captain/journey/state/fetch \
  --header 'Authorization: Bearer your_access_token' \
  --header 'Content-Type: application/json' \
  --data '{
    "instanceId": "Pq_hhIX6-sHUy9FLSDzPLu"
  }'

Request body fields

FieldRequiredDescription
instanceIdYesThe journey instance ID returned when you started the journey.

Journey pending response:

If the journey is still in progress, then the response contains:
JSON
{
  "instanceId": "Pq_hhIX6-sHUy9FLSDzPLu",
  "status": "InProgress",
  "context": {
    "process": {
      "journey": {
        "name": "Journey Name",
        "startedAt": "2026-03-16T23:56:04.097Z",
        "id": "9dcd95e06495ec32c9ad149283a935548e4a380461b9ee6981af0fef5c70c8c3",
        "version": "5f7yigc4"
      },
      "instance": {
        "id": "Pq_hhIX6-sHUy9FLSDzPLu",
        "instanceId": "Pq_hhIX6-sHUy9FLSDzPLu"
      },
      "steps": []
    },
    "subject": {},
    "result": {
      "status": "pending",
      "advice": {}
    }
  }
}

Journey completed response:

Once the journey completes, the system returns a response similar to the following:
JSON
{
  "instanceId": "Pq_hhIX6-sHUy9FLSDzPLu",
  "status": "Completed",
  "context": {
    "subject": {
      "identity": {
        "lastNames": [
          "Doe"
        ],
        "dateOfBirth": "1982-09-27",
        "phones": [
          {
            "type": "mobile",
            "number": ""
          }
        ],
        "currentAddress": {
          "lines": [
            "New Orleans, Louisiana, U.S."
          ],
          "locality": "New Orleans",
          "postalCode": "900010",
          "country": "US"
        },
        "firstName": "John",
        "middleNames": [
          "Michael"
        ]
      }
    },
    "result": {
      "advice": {},
      "status": "complete"
    },
    "process": {
      "instance": {
        "id": "Pq_hhIX6-sHUy9FLSDzPLu",
        "instanceId": "Pq_hhIX6-sHUy9FLSDzPLu"
      },
      "journey": {
        "id": "9dcd95e06495ec32c9ad149283a935548e4a380461b9ee6981af0fef5c70c8c3",
        "version": "5f7yigc4",
        "name": "Age verification",
        "endedAt": "2026-03-16T23:57:38.417Z",
        "durationMilliSec": 94320,
        "terminateInteraction": {
          "grId": "grn:::gbg:design:interaction:end@latest",
          "resource": {
            "id": "end",
            "name": "interactionEnd",
            "version": "latest",
            "type": "interaction",
            "data": {
              "pages": [
                {
                  "id": "pagesForEnd",
                  "cards": [
                    {
                      "id": "AllDoneCard"
                    }
                  ]
                }
              ]
            }
          },
          "collects": [],
          "consumes": []
        },
        "startedAt": "2026-03-16T23:56:04.097Z"
      },
      "steps": [
        {
          "moduleId": "US_AgeVerification_Source1IncludingDOB",
          "result": {
            "note": {
              "expectid_age": {
                "id_number": "6554532688"
              }
            },
            "advice": {
              "address_risk_capabilities": [],
              "dob_risk_capabilities": [],
              "subject_risk_capabilities": [],
              "alert_list_capabilities": [],
              "acceptance_result_capabilities": [],
              "age_result_capabilities": [
                "resultcode.confirm.age"
              ],
              "trust_usa_risk_capabilities": [],
              "trust_usa_result_capabilities": [],
              "ssn_risk_capabilities": [],
              "age_restricted_capabilities": [],
              "name_risk_capabilities": [],
              "match_result_capabilities": []
            },
            "outcome": "Of Age",
            "status": "complete"
          },
          "subject": {
            "identity": {
              "currentAddress": {
                "locality": "New Orleans",
                "postalCode": "900010",
                "country": "US",
                "lines": [
                  "New Orleans, Louisiana, U.S."
                ]
              },
              "firstName": "John",
              "middleNames": [
                "Michael"
              ],
              "lastNames": [
                "Doe"
              ],
              "dateOfBirth": "1982-09-27",
              "phones": [
                {
                  "number": "",
                  "type": "mobile"
                }
              ]
            }
          },
          "process": {
            "instance": {
              "id": "Pq_hhIX6-sHUy9FLSDzPLu",
              "instanceId": "Pq_hhIX6-sHUy9FLSDzPLu"
            },
            "journey": {
              "id": "9dcd95e06495ec32c9ad149283a935548e4a380461b9ee6981af0fef5c70c8c3",
              "version": "5f7yigc4",
              "name": "Age verification",
              "startedAt": "2026-03-16T23:56:04.097Z"
            }
          }
        }
      ]
    }
  }
}

Response fields

FieldDescription
instanceIdThe journey instance identifier.
statusCurrent journey status: InProgress, Completed, or Failed.
context.process.journey.nameThe name of the journey.
context.process.journey.startedAtThe ISO 8601 timestamp of when the journey started.
context.process.journey.idThe internal journey definition identifier.
context.process.journey.versionThe version of the journey that was started.
context.process.instance.idThe journey instance identifier (matches instanceId).
context.process.stepsArray of steps executed so far. Empty while the journey is in progress.
context.subjectThe identity data collected during the journey. Empty object until the journey completes.
context.result.statusThe verification result status: pending, completed, or failed.
context.result.adviceThe verification advice returned on completion. Empty object until the journey completes.

Journey lifecycle states

StatusDescription
InProgressThe journey is still in progress. Continue polling.
CompletedThe journey has finished successfully. Verification results are available.
FailedThe journey encountered an unrecoverable error during execution.

Polling for completion

Poll the state fetch endpoint at regular intervals until the journey completes:
  • Begin polling after submitting the final interaction data.
  • Stop polling when status changes to Completed or Failed.
SettingValueDescription
Base interval10sTime between polling calls.
Error backoff+5sAdd five seconds per consecutive error.
Max error retries30Stop polling after 30 consecutive failures.
Reset on successYesRevert to base interval after a successful fetch.
Stop conditionStatusStop when journey status is no longer InProgress.

Best practices

  • Do not share your access token with the frontend. All polling should be done from your backend server.
  • Handle the Failed status gracefully. Inspect the response for error details and determine whether the journey should be retried or escalated.

FAQ

In the v2 API, all journey execution is asynchronous. There is no synchronous mode.When you start a journey, the API returns an instanceId immediately. Backend modules such as document verification, face matching, data checks process in the background.To track progress, you poll the /journey/interaction/fetch endpoint to discover when the next interaction is available, or poll /journey/state/fetch to check the overall journey status.The recommended polling approach is to call the fetch endpoint at a base interval of 10 seconds, apply backoff on errors, and stop when the journey status changes from InProgress to either Completed or Failed.If you are migrating from v1: the async: true flag was a v1-specific concept. In v2, async behaviour is the default and does not need to be specified.