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.
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
| Limit | Value | Response headers |
|---|---|---|
| Requests a minute | 60 per account | X-RateLimit-Limit, X-RateLimit-Remaining |
| Requests a day | 10,000 per account | X-RateLimit-Daily-Limit, X-RateLimit-Daily-Remaining |
| Items | Your plan: 80 3D links, 50 Video AR, 50 3D on Print | see GET /me |
| Upload size | 60 MB per 3D model |
Go over a limit and you get status 429 with a Retry-After header in seconds.
Endpoints
Account
/meYour plan, how many items you have against each limit, and API requests used today./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
/modelsList your 3D models, newest first. Use limit (up to 100) and offset to page./models/{id}One model, with its AR link, QR code, embed code and file./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./models/{id}Rename: send {"name": "..."}./models/{id}Delete the model and its file. Its AR link and QR code stop working./models/{id}/viewsViews for one model.Video AR
/videoarList your Video AR items./videoar/{id}One item, with its AR link, QR code, image and video./videoar/{id}Rename or change visibility: send {"name": "...", "public": true}. Public items also work in the Universal Scanner./videoar/{id}Delete the item and its files./videoar/{id}/viewsScans for one item, including the average % of the video watched.3D on Print
/print3dList your 3D on Print items./print3d/{id}One item, with its AR link, QR code, image, model and placement settings./print3d/{id}Rename: send {"name": "..."}./print3d/{id}Delete the item and its files./print3d/{id}/viewsScans for one item.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" } }
| Status | Meaning |
|---|---|
| 400 | Something is missing from the request, such as the file. |
| 401 | No key, or the key is wrong or revoked. |
| 403 | The account is not on Business, or you have reached an item limit on your plan. |
| 404 | The endpoint or item does not exist, or belongs to another account. |
| 413 / 415 / 422 | File too large, wrong file type, or a value that cannot be used. |
| 429 | Too 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.