curl --request GET \
--url https://{host}/v1/applications/{id} \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://{host}/v1/applications/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://{host}/v1/applications/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://{host}/v1/applications/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"object": "application",
"id": "app_3rbw6yq2kd5mz7tcxf4n",
"state": "submitted",
"reference": "KYC000001",
"account": null,
"reason": null,
"reject_reason": null,
"param": null,
"created_at": "2026-09-25T05:58:40Z",
"updated_at": "2026-09-25T05:58:40Z"
}Retrieve an application
Returns the application’s current state. Once it’s opened, you can trade for the account in account.
curl --request GET \
--url https://{host}/v1/applications/{id} \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://{host}/v1/applications/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://{host}/v1/applications/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://{host}/v1/applications/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"object": "application",
"id": "app_3rbw6yq2kd5mz7tcxf4n",
"state": "submitted",
"reference": "KYC000001",
"account": null,
"reason": null,
"reject_reason": null,
"param": null,
"created_at": "2026-09-25T05:58:40Z",
"updated_at": "2026-09-25T05:58:40Z"
}Authorizations
Authorization: Bearer <key>. Sandbox keys start with mgw_test_ and live keys start with mgw_live_. Each key works only in its own environment, and a live key works only from the IP addresses or ranges registered for it.
Path Parameters
The application's id.
Response
An application.
"application"Unique identifier for the application. Starts with app_.
sending: stored, and the send is in progress. submitted: the broker accepted it. opened: account is the new account, and you can trade for it. uncertain: we don't know whether the broker received it. We don't send it again; we reconcile it with the broker. rejected: see reject_reason and param. refused: it never reached the broker. unplaced: we found that the broker never had it.
sending, submitted, opened, uncertain, rejected, refused, unplaced The broker's reference for the application, once the broker has accepted it.
The account code, once the account is opened.
A sentence explaining the application's current state. It's for people to read, so don't use it in your logic.
Why the application was rejected. Set only when state is rejected.
invalid_field, already_at_broker, rejected_by_broker, declined_by_broker, null The field that caused the rejection, when the rejection names one. Never includes the field's value.