Skip to main content

API Documentation

Build powerful integrations with the EuropaTech REST API. Access real estate objects, portfolios, P2P trading, and market data.

Base URL

text
https://api.europa-tech.org

Authentication

All API requests require an API key passed in the X-API-Key header. Create keys in your developer dashboard.

bash
curl -H "X-API-Key: ek_live_your_key_here" \
  https://api.europa-tech.org/api/v1/objects

Note: Keys starting with ek_live_ are for production. Keep your keys secret — never expose them in client-side code.

Rate Limits

60

requests per key / min

300

requests per user / min

5

max keys per user

Rate limit info is returned in response headers:

http
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 58
Retry-After: 30

Pagination

List endpoints use cursor-based pagination. Pass the nextCursor value to fetch the next page.

json
{
  "success": true,
  "data": [...],
  "pagination": {
    "nextCursor": "clx8f9g2k0001...",
    "hasMore": true
  }
}

Use ?cursor=<nextCursor>&limit=20 to paginate through results.

Endpoints

GET/api/auth/export-dataread:auth

apiDocs.endpoints.get__api_auth_export_data

POST/api/auth/forgot-passwordwrite:auth

apiDocs.endpoints.post__api_auth_forgot_password

POST/api/auth/loginwrite:auth

apiDocs.endpoints.post__api_auth_login

POST/api/auth/logoutwrite:auth

apiDocs.endpoints.post__api_auth_logout

GET/api/auth/meread:auth

apiDocs.endpoints.get__api_auth_me

GET/api/auth/notification-preferencesread:auth

apiDocs.endpoints.get__api_auth_notification_preferences

PUT/api/auth/notification-preferenceswrite:auth

apiDocs.endpoints.put__api_auth_notification_preferences

PUT/api/auth/passwordwrite:auth

apiDocs.endpoints.put__api_auth_password

PUT/api/auth/profilewrite:auth

apiDocs.endpoints.put__api_auth_profile

POST/api/auth/refreshwrite:auth

apiDocs.endpoints.post__api_auth_refresh

POST/api/auth/registerwrite:auth

apiDocs.endpoints.post__api_auth_register

POST/api/auth/resend-verificationwrite:auth

apiDocs.endpoints.post__api_auth_resend_verification

POST/api/auth/reset-passwordwrite:auth

apiDocs.endpoints.post__api_auth_reset_password

DELETE/api/auth/sessionswrite:auth

apiDocs.endpoints.delete__api_auth_sessions

GET/api/auth/sessionsread:auth

apiDocs.endpoints.get__api_auth_sessions

POST/api/auth/verify-emailwrite:auth

apiDocs.endpoints.post__api_auth_verify_email

POST/api/exchangewrite:exchange

apiDocs.endpoints.post__api_exchange

GET/api/income/accrualsread:income

apiDocs.endpoints.get__api_income_accruals

POST/api/income/confirm-otpwrite:income

apiDocs.endpoints.post__api_income_confirm_otp

GET/api/income/payoutsread:income

apiDocs.endpoints.get__api_income_payouts

POST/api/income/payoutswrite:income

apiDocs.endpoints.post__api_income_payouts

POST/api/income/payouts/cryptowrite:income

apiDocs.endpoints.post__api_income_payouts_crypto

GET/api/income/payouts/scheduleread:income

apiDocs.endpoints.get__api_income_payouts_schedule

GET/api/income/reports/{objectId}read:income

apiDocs.endpoints.get__api_income_reports__objectId_

POST/api/income/request-otpwrite:income

apiDocs.endpoints.post__api_income_request_otp

POST/api/kyc/sessionwrite:kyc

apiDocs.endpoints.post__api_kyc_session

GET/api/kyc/statusread:kyc

apiDocs.endpoints.get__api_kyc_status

GET/api/p2p/escrowsread:p2p-marketplace

apiDocs.endpoints.get__api_p2p_escrows

GET/api/p2p/escrows/{id}read:p2p-marketplace

apiDocs.endpoints.get__api_p2p_escrows__id_

GET/api/p2p/limitsread:p2p-marketplace

apiDocs.endpoints.get__api_p2p_limits

GET/api/p2p/my-ordersread:p2p-marketplace

apiDocs.endpoints.get__api_p2p_my_orders

GET/api/p2p/orderbook/{roomId}read:p2p-marketplace

apiDocs.endpoints.get__api_p2p_orderbook__roomId_

GET/api/p2p/ordersread:p2p-marketplace

apiDocs.endpoints.get__api_p2p_orders

POST/api/p2p/orderswrite:p2p-marketplace

apiDocs.endpoints.post__api_p2p_orders

POST/api/p2p/orders/{id}/cancelwrite:p2p-marketplace

apiDocs.endpoints.post__api_p2p_orders__id__cancel

POST/api/p2p/orders/{id}/executewrite:p2p-marketplace

apiDocs.endpoints.post__api_p2p_orders__id__execute

GET/api/p2p/tradesread:p2p-marketplace

apiDocs.endpoints.get__api_p2p_trades

GET/api/paymentsread:payments

apiDocs.endpoints.get__api_payments

GET/api/payments/{id}read:payments

apiDocs.endpoints.get__api_payments__id_

POST/api/payments/{id}/cancel-cooling-offwrite:payments

apiDocs.endpoints.post__api_payments__id__cancel_cooling_off

POST/api/payments/buy-from-balancewrite:payments

apiDocs.endpoints.post__api_payments_buy_from_balance

POST/api/payments/nowpayments/invoicewrite:payments

apiDocs.endpoints.post__api_payments_nowpayments_invoice

POST/api/payments/stripe/checkoutwrite:payments

apiDocs.endpoints.post__api_payments_stripe_checkout

GET/api/portfolioread:portfolio

apiDocs.endpoints.get__api_portfolio

POST/api/portfolio/buywrite:portfolio

apiDocs.endpoints.post__api_portfolio_buy

POST/api/portfolio/buyback-quotewrite:portfolio

apiDocs.endpoints.post__api_portfolio_buyback_quote

GET/api/portfolio/certificate/{roomId}read:portfolio

apiDocs.endpoints.get__api_portfolio_certificate__roomId_

POST/api/portfolio/sell-to-platformwrite:portfolio

apiDocs.endpoints.post__api_portfolio_sell_to_platform

GET/api/portfolio/transactionsread:portfolio

apiDocs.endpoints.get__api_portfolio_transactions

GET/api/portfolio/transactions/exportread:portfolio

apiDocs.endpoints.get__api_portfolio_transactions_export

GET/api/v1/compliance/statusread:public-api-v1-—-institutional

apiDocs.endpoints.get__api_v1_compliance_status

GET/api/v1/fundread:public-api-v1-—-institutional

apiDocs.endpoints.get__api_v1_fund

POST/api/v1/investwrite:public-api-v1-—-institutional

apiDocs.endpoints.post__api_v1_invest

GET/api/v1/market/ratesread:public-api-v1-—-market

apiDocs.endpoints.get__api_v1_market_rates

GET/api/v1/objectsread:public-api-v1-—-objects

apiDocs.endpoints.get__api_v1_objects

GET/api/v1/objects/{id}read:public-api-v1-—-objects

apiDocs.endpoints.get__api_v1_objects__id_

GET/api/v1/p2pread:public-api-v1-—-p2p

apiDocs.endpoints.get__api_v1_p2p

POST/api/v1/p2pwrite:public-api-v1-—-p2p

apiDocs.endpoints.post__api_v1_p2p

DELETE/api/v1/p2p/{id}write:public-api-v1-—-p2p

apiDocs.endpoints.delete__api_v1_p2p__id_

GET/api/v1/portfolioread:public-api-v1-—-portfolio

apiDocs.endpoints.get__api_v1_portfolio

GET/api/v1/portfolio/transactionsread:public-api-v1-—-portfolio

apiDocs.endpoints.get__api_v1_portfolio_transactions

GET/api/v2/partner/commissionsread:partner-api-v2

apiDocs.endpoints.get__api_v2_partner_commissions

GET/api/v2/partner/conversionsread:partner-api-v2

apiDocs.endpoints.get__api_v2_partner_conversions

GET/api/v2/partner/objectsread:partner-api-v2

apiDocs.endpoints.get__api_v2_partner_objects

POST/api/v2/partner/payoutswrite:partner-api-v2

apiDocs.endpoints.post__api_v2_partner_payouts

GET/api/v2/partner/statsread:partner-api-v2

apiDocs.endpoints.get__api_v2_partner_stats

Quick Start

Get up and running in minutes. Here are examples in popular languages:

cURL

bash
curl -s -H "X-API-Key: ek_live_your_key_here" \
  https://api.europa-tech.org/api/v1/objects | jq .

JavaScript / TypeScript

typescript
const res = await fetch('https://api.europa-tech.org/api/v1/objects?limit=10', {
  headers: { 'X-API-Key': 'ek_live_your_key_here' },
})
const objects = await res.json()

for (const obj of objects.data) {
  console.log(obj.name, obj.sharePrice)
}

Python

python
import requests

res = requests.get(
    "https://api.europa-tech.org/api/v1/objects",
    headers={"X-API-Key": "ek_live_your_key_here"},
    params={"limit": 10},
)

for obj in res.json()["data"]:
    print(obj["name"], obj["sharePrice"])

Error Codes

The API uses standard HTTP status codes. Error responses include a message and request ID.

400

Bad Request — invalid parameters or missing required fields.

401

Unauthorized — missing or invalid API key.

403

Forbidden — insufficient permissions or scope.

404

Not Found — the requested resource does not exist.

429

Too Many Requests — rate limit exceeded. Check Retry-After header.

500

Internal Server Error — unexpected server failure.

json
{
  "success": false,
  "message": "Invalid API key",
  "requestId": "req_abc123..."
}

Webhooks

Receive real-time notifications for events like new investments, P2P trades, and payouts. Webhook payloads are signed with HMAC-SHA256.

typescript
import { verifyWebhook } from '@europatech/sdk/webhooks'

const isValid = verifyWebhook(payload, signature, secret)
// HMAC-SHA256 signature verification

SDKs

JavaScript / TypeScript

npm install @europatech/sdk

Node.js 18+, ESM & CJS, zero runtime dependencies, auto-pagination, typed errors.

Python

pip install europatech

Python 3.9+, httpx-based, sync & async, auto-pagination, typed errors.

Ready to Build?

Create your API key and start integrating EuropaTech data into your applications.

Get API Key