Upload 3D Video AR 3D on Print
Scan Community Explore 💰 Pricing
Platforms
🍽️ Restaurant AR 👗 Fashion AR 🛋️ Interior AR
Sign In Sign Up Free
Developers

ARView API

Connect ARView to your store, app or product database. Upload 3D models, get AR links and QR codes, manage Video AR and 3D on Print, and read how people use them.

REST + JSONworks from any language
60 / minute10,000 requests a day
3 products3D, Video AR, 3D on Print
Businessincluded in the $25 plan

Get started

The API is part of the Business plan. Once you are on Business, open Dashboard → API and create a key. You can have up to 5 keys, for example one per store or app, and revoke any of them at any time.

Every request goes to https://arview.space/api.php followed by the endpoint, for example https://arview.space/api.php/models.

Authentication

Send your key in the X-API-Key header on every request. Authorization: Bearer YOUR_KEY works too. Keep keys on your server; never put them in a web page or app that other people can open.

curl https://arview.space/api.php/me \
  -H "X-API-Key: arv_live_..."

If your account moves off Business, its keys pause instead of being deleted, and work again when you upgrade.

Limits

LimitValueResponse headers
Requests a minute60 per accountX-RateLimit-Limit, X-RateLimit-Remaining
Requests a day10,000 per accountX-RateLimit-Daily-Limit, X-RateLimit-Daily-Remaining
ItemsYour plan: 80 3D links, 50 Video AR, 50 3D on Printsee GET /me
Upload size60 MB per 3D model

Go over a limit and you get status 429 with a Retry-After header in seconds.

Endpoints

Account

GET/meYour plan, how many items you have against each limit, and API requests used today.
GET/views?days=30Views across your whole account: per day, devices, countries, where people opened from, and a split by product. days can be 7, 30, 90 or 365.

3D models

GET/modelsList your 3D models, newest first. Use limit (up to 100) and offset to page.
GET/models/{id}One model, with its AR link, QR code, embed code and file.
POST/modelsUpload a model. Send multipart/form-data with file (GLB, glTF or USDZ, up to 60 MB) and an optional name. Counts toward your 3D link limit.
PATCH/models/{id}Rename: send {"name": "..."}.
DELETE/models/{id}Delete the model and its file. Its AR link and QR code stop working.
GET/models/{id}/viewsViews for one model.

Video AR

GET/videoarList your Video AR items.
GET/videoar/{id}One item, with its AR link, QR code, image and video.
PATCH/videoar/{id}Rename or change visibility: send {"name": "...", "public": true}. Public items also work in the Universal Scanner.
DELETE/videoar/{id}Delete the item and its files.
GET/videoar/{id}/viewsScans for one item, including the average % of the video watched.

3D on Print

GET/print3dList your 3D on Print items.
GET/print3d/{id}One item, with its AR link, QR code, image, model and placement settings.
PATCH/print3d/{id}Rename: send {"name": "..."}.
DELETE/print3d/{id}Delete the item and its files.
GET/print3d/{id}/viewsScans for one item.
Video AR and 3D on Print are created in the browser at /video-ar and /3d-on-print, because the image tracking file is built on your device. After that, everything about them can be managed through the API. If your tools cannot send PATCH or DELETE, send POST with the header X-HTTP-Method-Override: PATCH (or DELETE).

What you get back

Every reply is JSON. Single items come inside data; lists also include total, limit and offset. A 3D model looks like this:

{
  "data": {
    "id": "a1b2c3d4e5f60718",
    "type": "model",
    "name": "Oak chair",
    "status": "live",
    "ar_link": "https://arview.space/v/a1b2c3d4e5f60718",
    "qr_code": "https://api.qrserver.com/v1/create-qr-code/?size=600x600&data=...",
    "embed_url": "https://arview.space/embed.php?id=a1b2c3d4e5f60718",
    "embed_html": "<iframe src=\"...\"></iframe>",
    "file_url": "https://arview.space/uploads/a1b2c3d4e5f60718.glb",
    "file_type": "GLB",
    "file_size": 2481152,
    "views": 128,
    "created_at": "2026-11-10 09:12:44"
  }
}

status is live, or paused when an item is over your plan's limit. Video AR adds public, image_url and video_url; 3D on Print adds image_url, model_url and settings.

A views report:

{
  "data": {
    "id": "a1b2c3d4e5f60718",
    "type": "models",
    "days": 30,
    "total": 49,
    "per_day": { "2026-10-12": 0, "...": 3, "2026-11-10": 5 },
    "devices": { "iPhone / iPad": 28, "Android": 19, "Desktop": 2 },
    "countries": { "United Arab Emirates": 21, "Saudi Arabia": 9, "...": 19 },
    "opened_from": { "QR code": 30, "Link": 19 }
  }
}

Errors

Errors use normal HTTP status codes and always include a readable message.

{ "error": { "message": "This API key is not valid. It may have been revoked.", "status": 401, "docs": "https://arview.space/api-docs" } }
StatusMeaning
400Something is missing from the request, such as the file.
401No key, or the key is wrong or revoked.
403The account is not on Business, or you have reached an item limit on your plan.
404The endpoint or item does not exist, or belongs to another account.
413 / 415 / 422File too large, wrong file type, or a value that cannot be used.
429Too many requests. Wait for the seconds in Retry-After.

Examples

Upload a model and get its AR link (cURL)

curl -X POST https://arview.space/api.php/models \
  -H "X-API-Key: arv_live_..." \
  -F "file=@oak-chair.glb" \
  -F "name=Oak chair"

JavaScript (Node 18+)

const res = await fetch('https://arview.space/api.php/models?limit=100', {
  headers: { 'X-API-Key': process.env.ARVIEW_KEY }
});
const { data } = await res.json();
data.forEach(m => console.log(m.name, m.ar_link, m.views));

PHP

$ch = curl_init('https://arview.space/api.php/views?days=30');
curl_setopt_array($ch, [
  CURLOPT_HTTPHEADER     => ['X-API-Key: ' . getenv('ARVIEW_KEY')],
  CURLOPT_RETURNTRANSFER => true,
]);
$report = json_decode(curl_exec($ch), true)['data'];
echo $report['total'] . " views in the last 30 days";

Python

import os, requests
r = requests.patch('https://arview.space/api.php/videoar/ITEM_ID',
    headers={'X-API-Key': os.environ['ARVIEW_KEY']},
    json={'name': 'Summer poster', 'public': True})
print(r.json()['data']['ar_link'])

Questions about the API? Business includes dedicated support: open Dashboard → Support, or email support@arview.space.