curl --request GET \
--url https://api.ebrc.in/api/v1/platform-customers/{id} \
--header 'x-api-key: <api-key>'import requests
url = "https://api.ebrc.in/api/v1/platform-customers/{id}"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.ebrc.in/api/v1/platform-customers/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.ebrc.in/api/v1/platform-customers/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.ebrc.in/api/v1/platform-customers/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.ebrc.in/api/v1/platform-customers/{id}")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ebrc.in/api/v1/platform-customers/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"id": "<string>",
"name": "<string>",
"email": "jsmith@example.com",
"type": "customer",
"companyName": "<string>",
"iec": "<string>",
"address": "<string>",
"platformId": "<string>",
"mode": "test",
"isActive": true,
"hasDgftCredentials": true,
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z"
}{
"code": "<string>",
"message": "<string>"
}{
"code": "<string>",
"message": "<string>"
}{
"code": "<string>",
"message": "<string>"
}Get Customer by Id
Fetch a single platform customer by its id to read the stored exporter entity details before you fetch IRMs or submit an eBRC generation request for them.
curl --request GET \
--url https://api.ebrc.in/api/v1/platform-customers/{id} \
--header 'x-api-key: <api-key>'import requests
url = "https://api.ebrc.in/api/v1/platform-customers/{id}"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.ebrc.in/api/v1/platform-customers/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.ebrc.in/api/v1/platform-customers/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.ebrc.in/api/v1/platform-customers/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.ebrc.in/api/v1/platform-customers/{id}")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ebrc.in/api/v1/platform-customers/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"id": "<string>",
"name": "<string>",
"email": "jsmith@example.com",
"type": "customer",
"companyName": "<string>",
"iec": "<string>",
"address": "<string>",
"platformId": "<string>",
"mode": "test",
"isActive": true,
"hasDgftCredentials": true,
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z"
}{
"code": "<string>",
"message": "<string>"
}{
"code": "<string>",
"message": "<string>"
}{
"code": "<string>",
"message": "<string>"
}id. Use this to check a client’s details, its IEC, or whether it is ready to file, before you push IRMs for it.
Request example
curl --location 'https://api.ebrc.in/api/v1/platform-customers/ee849a90-7a28-49b4-8cb2-8e31041650a2' \
--header 'x-api-key: <YOUR_API_KEY>'
Response example
{
"success": true,
"data": {
"id": "ee849a90-7a28-49b4-8cb2-8e31041650a2",
"name": "Rohan Mehta",
"email": "finance@suryatextiles.example.com",
"type": "customer",
"companyName": "Surya Textile Exports Pvt Ltd",
"iec": "AAECS1234F",
"address": "Tiruppur, Tamil Nadu",
"platformId": "1f0c9a52-3b41-4d78-9e26-7a8b5c4d3e2f",
"isActive": true,
"hasDgftCredentials": true,
"createdAt": "2026-07-22T10:15:04.874Z",
"updatedAt": "2026-07-22T10:21:33.120Z"
},
"statusCode": 200,
"timestamp": "2026-07-22T10:25:00.000Z"
}
mode is not returned by this endpoint; a client is only reachable in the mode your key selects, so the mode is implied by the key you used. Fields the client has no value for are null.
Is this client ready to file?
isActive | hasDgftCredentials | Meaning |
|---|---|---|
false | false | Created but never validated. Validate its DGFT credentials. |
false | true | Credentials are on file but were never verified, or the client was deactivated. Re-run validation. |
true | true | Onboarding is complete. Check dgftApiStatus.state: activation_pending means DGFT opens API access at activatesAt (see the 24-hour activation); ready means it can fetch and file now. |
Errors
400Invalid platform customer ID format: <id>. Expected a UUID format...when the id is not a UUID. Platform customer ids are UUIDs; a Clerk user id starting withuser_is not one.401No API key providedorInvalid API key. See authentication errors.404Platform customer with id <id> not foundwhen no client with that id belongs to your account in the mode your key selects. Adev_key cannot read a live client and gets this same404.
Next steps
Authorizations
Path Parameters
The customer ID
Response
Customer response
Unique identifier of the platform customer. This is the platformCustomerId used in every later call.
customer The exporter's registered legal name. Required by the eBRC console, optional on this API.
Importer Exporter Code: exactly 10 alphanumeric characters, stored uppercase. Required by the eBRC console, optional on this API.
10^[A-Za-z0-9]{10}$Free text. Not collected by the eBRC console, so console-onboarded clients have none.
Platform account that owns this client
Fixed at creation from the API key prefix and never editable. Returned by create, update and validate; omitted by the list and get endpoints.
test, live Always false at creation. Becomes true only when DGFT credentials are verified by POST /platform-customers/{id}/check-dgft-credentials.
Derived: true once DGFT credentials are on file. Branch on this; the raw DGFT credential fields are not part of the response contract and the password is never returned on any surface.
Not returned by GET /platform-customers (list).