UMOX
API v1 · REST · JSON

REST API v1

Programmatic access to UMOX AI Link Exchange. Bulk buy up to 100 placements per request. USDT-only. Bearer token auth.

Authentication

Every request must include the Authorization header with a bearer token. Get your token at https://umox.net/adv/api-tokens (advertiser cabinet).

Authorization: Bearer um_abcdefghij1234567890...
Token is shown once when created. Store it securely. If lost, revoke and generate a new one.

Base URL

https://umox.net/api/v1

Rate limits

60/minAll GET endpoints (per token) 10/minPOST /placements (bulk buy)

Endpoints

GET/me
Current user info: role, balance, reputation, referral code.
curl https://umox.net/api/v1/me \
  -H "Authorization: Bearer YOUR_TOKEN"
GET/sites
Catalog of approved sites. Query params: niche, language, tier, traffic_min, geo, limit.
curl "https://umox.net/api/v1/sites?niche=adult&traffic_min=10000&limit=20" \
  -H "Authorization: Bearer YOUR_TOKEN"
GET/sites/{id}
Single site with pricing per format (Description/Blog/Below-player/Footer).
curl https://umox.net/api/v1/sites/42 \
  -H "Authorization: Bearer YOUR_TOKEN"
POST/placements
Bulk buy. Up to 100 placements per request. Per-item transaction: failed items don't block successful ones. Response includes summary + created + failed arrays.
curl -X POST https://umox.net/api/v1/placements \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "items": [
      {
        "site_id": 42,
        "target_url": "https://mybrand.com/promo",
        "brand_name": "MyBrand",
        "format_type": "description_context",
        "anchor_type": "branded",
        "anchor_text": "MyBrand"
      },
      {
        "site_id": 43,
        "target_url": "https://mybrand.com/promo",
        "brand_name": "MyBrand",
        "format_type": "blog_article",
        "anchor_type": "naked_url",
        "anchor_text": "mybrand.com/promo"
      }
    ]
  }'
{
  "created": [
    {"input_index":0,"placement_id":123,"site_domain":"a.com","price_usd":15.00,"status":"pending_publisher_accept"},
    {"input_index":1,"placement_id":124,"site_domain":"b.com","price_usd":12.00,"status":"pending_publisher_accept"}
  ],
  "failed": [],
  "summary": {"total":2,"created":2,"failed":0,"spent_usd":27.00,"balance_after":473.00}
}
GET/placements
Your placements. Query params: status, limit.
curl "https://umox.net/api/v1/placements?status=active" \
  -H "Authorization: Bearer YOUR_TOKEN"
GET/placements/{id}
Single placement with current state: link_alive, indexed_google, publication_url.
curl https://umox.net/api/v1/placements/123 \
  -H "Authorization: Bearer YOUR_TOKEN"
GET/transactions
Your transaction ledger. Query params: type, status, from, to, limit.
curl "https://umox.net/api/v1/transactions?type=placement_buy&limit=100" \
  -H "Authorization: Bearer YOUR_TOKEN"

Formats

description_context×1.5 - AI paragraph in video description (max SEO weight) blog_article×1.5 - Contextual link in blog article body below_player_block×1.0 - AI-generated block under player footer_sitewide×0.5 - Site-wide footer link (economy)

Anchor types

brandedBrand name (safest for SEO) naked_urlURL as clickable text keywordSEO keyword (boosts but risky if overused) generic"click here", "read more" (camouflage)

Recommended mix: 30% branded / 30% naked_url / 20% keyword / 20% generic. UI tool available in the advertiser cabinet.

Error responses

All errors return HTTP 4xx/5xx with JSON body {"error":"message","code":"machine_code"}.

401Missing/invalid token 403Banned user or wrong role 404Not found 422Validation errors (Laravel default format) 429Rate limit exceeded
Support: support@umox.net · Home