The Propper API lets your own website, back office or automation talk to the platform. Everything runs on one host:
https://api.proppertrading.com/v1
There is no propfirm identifier anywhere in a URL. The API key you send decides which firm the request acts for, so a key from one firm can never read or change another firm's data.
Your first request
curl https://api.proppertrading.com/v1/ping \
-H "Authorization: Bearer sk_live_a1b2c3d4_9f83c2e15b7a4d6e8091c3f5a7b9d1e2"
{
"data": {
"ok": true,
"environment": "live",
"api_key": "a1b2c3d4",
"scopes": ["affiliates:write"],
"tenant": { "name": "Acme Funded", "slug": "acme" },
"time": "2026-08-03T12:00:00+00:00"
},
"meta": { "request_id": "req_01kz4bkr1aj1gv63d8fv3133ey" }
}
If that works, your key is valid and you can see exactly which scopes it carries.
What to read next
- Authentication - how keys work and how to keep them safe.
- Errors - the error shape and every code we can return.
- Idempotency - required on every POST.
- Pagination - how to walk a list safely.
Conventions
Every response uses the same envelope. Success:
{
"data": {},
"meta": { "request_id": "req_01kz4bkr1aj1gv63d8fv3133ey" }
}
Failure:
{
"error": {
"type": "invalid_request_error",
"code": "email_already_registered",
"message": "This email address already has a reserved referral code.",
"request_id": "req_01kz4bkr1aj1gv63d8fv3133ey"
}
}
- All timestamps are ISO-8601 in UTC.
- All ids are strings carrying a prefix that tells you the type, such as
aff_pre_. - Only
application/jsonrequest bodies are accepted. - Every response carries an
X-Request-Idheader that matchesmeta.request_id. Quote it when you contact support and we can find the exact request.
Reading this with an AI
Every page here is available as markdown by adding .md to its URL, for example
/docs/api/errors.md. /docs/llms.txt
lists all of them in one file.