> For the complete documentation index, see [llms.txt](https://multiset.gitbook.io/multiset/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://multiset.gitbook.io/multiset/basics/rest-api-docs/modelset-upload.md).

# Object Upload

To create a new Object for tracking using the upload API, make a POST request to **/v1/vps/object** with your authentication token, providing the object name, tracking type (full for 360-degree tracking or side for side-view only), and source details including the file type (glb or gltf), provider (web), and coordinate system (RHS for right-handed or LHS for left-handed).

The API will respond with a pre-signed S3 upload URL, unique object ID, and object code. Use the returned uploadUrl to upload your 3D model file directly to S3 via a PUT request with Content-Type: application/octet-stream. Once uploaded, the system will automatically process the model for Object tracking.

## Create a new ModelSet object

> Creates a new ModelSet object and returns a pre-signed URL for uploading the 3D model file.\
> The model file should be uploaded to the returned uploadUrl using a PUT request.\
> \
> \*\*Workflow:\*\*\
> 1\. Call this endpoint to create the object and get an upload URL\
> 2\. Upload the model file (.glb or .gltf) to the uploadUrl using PUT request with Content-Type: application/octet-stream\
> 3\. The system will process the uploaded file for VPS tracking<br>

```json
{"openapi":"3.0.3","info":{"title":"MultiSet ModelSet Upload API","version":"1.0.0"},"tags":[{"name":"ModelSet","description":"ModelSet upload and creation operations"}],"servers":[{"url":"https://api.multiset.ai","description":"Production server"}],"security":[{"BearerAuth":[]}],"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"JWT token obtained from authentication"}},"schemas":{"CreateVPSObjectRequest":{"type":"object","required":["objectName","trackingType","source"],"properties":{"objectName":{"type":"string","description":"Name of the ModelSet object","minLength":1,"maxLength":255},"trackingType":{"type":"string","enum":["full","side"],"description":"Type of tracking to be performed:\n- `full`: 360-degree tracking (all angles)\n- `side`: Side-view tracking only\n"},"source":{"type":"object","required":["provider","fileType","coordinateSystem"],"properties":{"provider":{"type":"string","enum":["web"],"description":"Source provider (currently only 'web' is supported)"},"fileType":{"type":"string","enum":["glb","gltf"],"description":"3D model file format:\n- `glb`: Binary GLTF format (recommended)\n- `gltf`: Text-based GLTF format\n"},"coordinateSystem":{"type":"string","enum":["RHS","LHS"],"description":"Coordinate system of the 3D model:\n- `RHS`: Right-handed coordinate system\n- `LHS`: Left-handed coordinate system\n"}}}}},"CreateVPSObjectResponse":{"type":"object","required":["message","objectCode","objectId","uploadUrl"],"properties":{"message":{"type":"string","description":"Success message"},"objectCode":{"type":"string","description":"Unique code for the object"},"objectId":{"type":"string","description":"Unique identifier for the object"},"uploadUrl":{"type":"string","format":"uri","description":"Pre-signed S3 URL for uploading the 3D model file.\nUse PUT request to upload the file to this URL.\n"}}},"Error":{"type":"object","required":["message"],"properties":{"message":{"type":"string","description":"Error message"}}}}},"paths":{"/v1/vps/object":{"post":{"tags":["ModelSet"],"summary":"Create a new ModelSet object","description":"Creates a new ModelSet object and returns a pre-signed URL for uploading the 3D model file.\nThe model file should be uploaded to the returned uploadUrl using a PUT request.\n\n**Workflow:**\n1. Call this endpoint to create the object and get an upload URL\n2. Upload the model file (.glb or .gltf) to the uploadUrl using PUT request with Content-Type: application/octet-stream\n3. The system will process the uploaded file for VPS tracking\n","operationId":"createVPSObject","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateVPSObjectRequest"}}}},"responses":{"200":{"description":"ModelSet object created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateVPSObjectResponse"}}}},"400":{"description":"Bad request - Invalid parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Unauthorized - Invalid or missing authentication token","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://multiset.gitbook.io/multiset/basics/rest-api-docs/modelset-upload.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
