Photo Upload

Upload Photo

Request Sample

const result = await mediaviz.photoUpload.uploadPhoto(
  '<COMPANY_ID>',
  '<USER_ID>',
  '<PROJECT_TABLE_NAME>',
  '<PHOTO>'
);
const result = await mediaviz.photoUpload.uploadPhoto(
  '<COMPANY_ID>',
  '<USER_ID>',
  '<PROJECT_TABLE_NAME>',
  '<PHOTO>'
);
const result = await mediaviz.photoUpload.uploadPhoto(
  '<COMPANY_ID>',
  '<USER_ID>',
  '<PROJECT_TABLE_NAME>',
  '<PHOTO>'
);
const { client } = useMediaViz();

const result = await client.photoUpload.uploadPhoto(
  '<COMPANY_ID>',
  '<USER_ID>',
  '<PROJECT_TABLE_NAME>',
  '<PHOTO>'
);
result = mediaviz.photo_upload.upload_photo(
    '<COMPANY_ID>',
    '<USER_ID>',
    '<PROJECT_TABLE_NAME>',
    '<PHOTO>'
)
$result = $mediaviz->photoUpload->uploadPhoto(
  '<COMPANY_ID>',
  '<USER_ID>',
  '<PROJECT_TABLE_NAME>',
  '<PHOTO>'
);
# Step 1: get_project_prelim_model_request_template
curl -X GET 'https://api.mediaviz.ai/api/v1/project_outcome/<PROJECT_TABLE_NAME>' \
  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoidXNyXzAxYWJjMTIzIiwiZXhwIjoxNzQzNjMwMzI5fQ.RwJF-KLLr8K5JgEtIeFiKWELcv-FDLNzMPHJ2St_wAo'

# Step 2: Upload a preprocessed photo with metadata in the JSON body
curl -X POST 'https://upload.mediaviz.ai/photo_upload' \
  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoidXNyXzAxYWJjMTIzIiwiZXhwIjoxNzQzNjMwMzI5fQ.RwJF-KLLr8K5JgEtIeFiKWELcv-FDLNzMPHJ2St_wAo' \
  -H 'Content-Type: application/json' \
  --data @- <<'JSON'
{
  "file_content": "<FILE_CONTENT>",
  "file_path": "<FILE_PATH>",
  "mimetype": "<MIMETYPE>",
  "company_id": "<COMPANY_ID>",
  "user_id": "<USER_ID>",
  "project_table_name": "<PROJECT_TABLE_NAME>",
  "blur": "<BLUR>",
  "colors": "<COLORS>",
  "face_recognition": "<FACE_RECOGNITION>",
  "image_classification": "<IMAGE_CLASSIFICATION>",
  "image_comparison": "<IMAGE_COMPARISON>",
  "image_describe": "<IMAGE_DESCRIBE>",
  "ocr": "<OCR>"
}
JSON

Response Sample

{
  "message": "Upload successful",
  "photo_id": 1035601,
  "timestamp": "1760888400",
  "company_id": "1024"
}

Upload Photo Manually

Most integrations should use Upload Photo, which fetches the collection's model flags once and applies them to every photo for you. Use this instead when you're calling the API without the SDK, or want full control over each request. You'll need to send the model flags yourself, and they must match the collection: the upload service only runs models flagged true, so a photo sent with every flag false is saved but never processed. Get the values from Get Project Prelim Model Request Template. Uploads go to a separate host (upload.mediaviz.ai). file_content is the Base64-encoded image without a data: prefix, and the photo's title comes from the file name in file_path. user_id is required but ignored; the access token determines the user.

Request Sample

const result = await mediaviz.photoUpload.uploadPhotoToMediaviz(
  '<FILE_CONTENT>',
  '<FILE_PATH>',
  '<MIMETYPE>',
  '<COMPANY_ID>',
  '<USER_ID>',
  '<PROJECT_TABLE_NAME>',
  '<BLUR>',
  '<COLORS>',
  '<FACE_RECOGNITION>',
  '<IMAGE_CLASSIFICATION>',
  '<IMAGE_COMPARISON>',
  '<IMAGE_DESCRIBE>',
  '<OCR>',
  {
    clientSideId: '<CLIENT_SIDE_ID>',
    format: '<FORMAT>',
    size: '<SIZE>',
    sourceResolutionX: '<SOURCE_RESOLUTION_X>',
    sourceResolutionY: '<SOURCE_RESOLUTION_Y>',
    dateTaken: '<DATE_TAKEN>',
    latitude: '<LATITUDE>',
    longitude: '<LONGITUDE>'
  }
);
const result = await mediaviz.photoUpload.uploadPhotoToMediaviz(
  '<FILE_CONTENT>',
  '<FILE_PATH>',
  '<MIMETYPE>',
  '<COMPANY_ID>',
  '<USER_ID>',
  '<PROJECT_TABLE_NAME>',
  '<BLUR>',
  '<COLORS>',
  '<FACE_RECOGNITION>',
  '<IMAGE_CLASSIFICATION>',
  '<IMAGE_COMPARISON>',
  '<IMAGE_DESCRIBE>',
  '<OCR>',
  {
    clientSideId: '<CLIENT_SIDE_ID>',
    format: '<FORMAT>',
    size: '<SIZE>',
    sourceResolutionX: '<SOURCE_RESOLUTION_X>',
    sourceResolutionY: '<SOURCE_RESOLUTION_Y>',
    dateTaken: '<DATE_TAKEN>',
    latitude: '<LATITUDE>',
    longitude: '<LONGITUDE>'
  }
);
const result = await mediaviz.photoUpload.uploadPhotoToMediaviz(
  '<FILE_CONTENT>',
  '<FILE_PATH>',
  '<MIMETYPE>',
  '<COMPANY_ID>',
  '<USER_ID>',
  '<PROJECT_TABLE_NAME>',
  '<BLUR>',
  '<COLORS>',
  '<FACE_RECOGNITION>',
  '<IMAGE_CLASSIFICATION>',
  '<IMAGE_COMPARISON>',
  '<IMAGE_DESCRIBE>',
  '<OCR>',
  {
    clientSideId: '<CLIENT_SIDE_ID>',
    format: '<FORMAT>',
    size: '<SIZE>',
    sourceResolutionX: '<SOURCE_RESOLUTION_X>',
    sourceResolutionY: '<SOURCE_RESOLUTION_Y>',
    dateTaken: '<DATE_TAKEN>',
    latitude: '<LATITUDE>',
    longitude: '<LONGITUDE>'
  }
);
const { client } = useMediaViz();

const result = await client.photoUpload.uploadPhotoToMediaviz(
  '<FILE_CONTENT>',
  '<FILE_PATH>',
  '<MIMETYPE>',
  '<COMPANY_ID>',
  '<USER_ID>',
  '<PROJECT_TABLE_NAME>',
  '<BLUR>',
  '<COLORS>',
  '<FACE_RECOGNITION>',
  '<IMAGE_CLASSIFICATION>',
  '<IMAGE_COMPARISON>',
  '<IMAGE_DESCRIBE>',
  '<OCR>',
  {
    clientSideId: '<CLIENT_SIDE_ID>',
    format: '<FORMAT>',
    size: '<SIZE>',
    sourceResolutionX: '<SOURCE_RESOLUTION_X>',
    sourceResolutionY: '<SOURCE_RESOLUTION_Y>',
    dateTaken: '<DATE_TAKEN>',
    latitude: '<LATITUDE>',
    longitude: '<LONGITUDE>'
  }
);
result = mediaviz.photo_upload.upload_photo_to_mediaviz(
    '<FILE_CONTENT>',
    '<FILE_PATH>',
    '<MIMETYPE>',
    '<COMPANY_ID>',
    '<USER_ID>',
    '<PROJECT_TABLE_NAME>',
    '<BLUR>',
    '<COLORS>',
    '<FACE_RECOGNITION>',
    '<IMAGE_CLASSIFICATION>',
    '<IMAGE_COMPARISON>',
    '<IMAGE_DESCRIBE>',
    '<OCR>',
    client_side_id='<CLIENT_SIDE_ID>',
    format='<FORMAT>',
    size='<SIZE>',
    source_resolution_x='<SOURCE_RESOLUTION_X>',
    source_resolution_y='<SOURCE_RESOLUTION_Y>',
    date_taken='<DATE_TAKEN>',
    latitude='<LATITUDE>',
    longitude='<LONGITUDE>'
)
$result = $mediaviz->photoUpload->uploadPhotoToMediaviz(
  '<FILE_CONTENT>',
  '<FILE_PATH>',
  '<MIMETYPE>',
  '<COMPANY_ID>',
  '<USER_ID>',
  '<PROJECT_TABLE_NAME>',
  '<BLUR>',
  '<COLORS>',
  '<FACE_RECOGNITION>',
  '<IMAGE_CLASSIFICATION>',
  '<IMAGE_COMPARISON>',
  '<IMAGE_DESCRIBE>',
  '<OCR>',
  [
    'clientSideId' => '<CLIENT_SIDE_ID>',
    'format' => '<FORMAT>',
    'size' => '<SIZE>',
    'sourceResolutionX' => '<SOURCE_RESOLUTION_X>',
    'sourceResolutionY' => '<SOURCE_RESOLUTION_Y>',
    'dateTaken' => '<DATE_TAKEN>',
    'latitude' => '<LATITUDE>',
    'longitude' => '<LONGITUDE>'
  ]
);
curl -X POST 'https://upload.mediaviz.ai/photo_upload' \
  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoidXNyXzAxYWJjMTIzIiwiZXhwIjoxNzQzNjMwMzI5fQ.RwJF-KLLr8K5JgEtIeFiKWELcv-FDLNzMPHJ2St_wAo' \
  -H 'Content-Type: application/json' \
  --data @- <<'JSON'
{
  "file_content": "<FILE_CONTENT>",
  "file_path": "<FILE_PATH>",
  "mimetype": "<MIMETYPE>",
  "company_id": "<COMPANY_ID>",
  "user_id": "<USER_ID>",
  "project_table_name": "<PROJECT_TABLE_NAME>",
  "blur": "true",
  "colors": "true",
  "face_recognition": "true",
  "image_classification": "true",
  "image_comparison": "true",
  "image_describe": "false",
  "ocr": "false",
  "client_side_id": "<CLIENT_SIDE_ID>",
  "format": "<FORMAT>",
  "size": "<SIZE>",
  "source_resolution_x": "<SOURCE_RESOLUTION_X>",
  "source_resolution_y": "<SOURCE_RESOLUTION_Y>",
  "date_taken": "<DATE_TAKEN>",
  "latitude": "<LATITUDE>",
  "longitude": "<LONGITUDE>"
}
JSON

Response Sample

{
  "message": "Upload successful",
  "photo_id": 1035601,
  "timestamp": "1760888400",
  "company_id": "1024"
}