Image Management

The Vision API provides endpoints for managing images in your account. You can upload images for indexing, retrieve image details, list images with filters, and delete images when no longer needed. While video search is ideal for more complex use cases that require video context and understanding, for the majority of simple use cases, image upload and search has similiar accuracy to video search but with significantly faster processing and lower costs.

Upload Images

Upload one or more images to your account with optional indexing.

Endpoint

  • POST /v1/images/upload

Request

Bash

$curl -X POST https://vision-agent.api.reka.ai/v1/images/upload \
> -H "X-Api-Key: YOUR_API_KEY" \
> -F "images=@/path/to/image1.jpg" \
> -F "images=@/path/to/image2.jpg" \
> -F 'metadata={"requests":[{"indexing_config":{"index":true},"metadata":{}},{"indexing_config":{"index":true},"metadata":{}}]}'

Python

1import requests
2import json
3import io
4
5url = f"{BASE_URL}/v1/images/upload"
6headers = {
7 "X-Api-Key": REKA_API_KEY
8}
9images = [get_image() for _ in range(10)]
10metadata = {
11 "requests": [
12 {
13 "indexing_config": {"index": True},
14 "metadata": {}
15 } for i in range(len(images))
16 ]
17}
18
19# Prepare files and data
20files = []
21for i, image in enumerate(images):
22 file_obj = io.BytesIO(image)
23 files.append(
24 ('images', (f'test_image_{i}.jpg', file_obj, 'image/jpeg'))
25 )
26data = {'metadata': json.dumps(metadata)}
27
28# Make request
29response = requests.post(
30 url,
31 files=files,
32 data=data,
33)
34if response.status_code == 200:
35 result = response.json()
36 print("Upload successful:", result)
37else:
38 raise ValueError(
39 "Error:", response.status_code, response.text
40 )

Parameters

  • images (required): Image file(s) to upload
  • metadata (optional): JSON object containing configuration for each image:
    • indexing_config: Configuration for indexing
      • index: Boolean indicating whether to index the image
    • metadata: Custom metadata for the image

Response

Returns an array of image upload results with:

  • image_id: Unique identifier for the uploaded image
  • image_url: URL to access the uploaded image
  • indexing_status: Indexing status (1 = indexing in progress, 2 = indexed)
  • image_metadata: Custom metadata fields for the image
  • upload_timestamp: Unix timestamp of when the image was uploaded

Get Image

Retrieve details for a specific image by its ID.

Endpoint

  • GET /v1/images/{image_id}

Request

Bash

$curl -X GET https://vision-agent.api.reka.ai/v1/images/550e8400-e29b-41d4-a716-446655440000 \
> -H "X-Api-Key: YOUR_API_KEY"

Python

1import requests
2
3image_id = "550e8400-e29b-41d4-a716-446655440000"
4url = f"{BASE_URL}/v1/images/{image_id}"
5headers = {
6 "X-Api-Key": REKA_API_KEY
7}
8response = requests.get(url, headers=headers)

Parameters

  • image_id (required, path): The unique identifier of the image to retrieve

Response

Returns the image object with the same structure as the upload response.

List Images

List images in your account with optional pagination.

Endpoint

  • GET /v1/images

Request

Bash

$curl -X GET "https://vision-agent.api.reka.ai/v1/images?limit=20&offset=0" \
> -H "X-Api-Key: YOUR_API_KEY"

Python

1import requests
2
3url = f"{BASE_URL}/v1/images"
4params = {
5 "limit": 20,
6 "offset": 0,
7}
8headers = {
9 "X-Api-Key": REKA_API_KEY
10}
11response = requests.get(url, params=params, headers=headers)

Parameters

  • limit (optional, query): Maximum number of images to return
  • offset (optional, query): Number of images to skip for pagination

Response

Returns a paginated array of images with the same structure as the upload and get responses.

Delete Image

Delete an image from your account.

Endpoint

  • DELETE /v1/images/{image_id}

Request

Bash

$curl -X DELETE https://vision-agent.api.reka.ai/v1/images/550e8400-e29b-41d4-a716-446655440000 \
> -H "X-Api-Key: YOUR_API_KEY"

Python

1import requests
2
3image_id = "550e8400-e29b-41d4-a716-446655440000"
4url = f"{BASE_URL}/v1/images/{image_id}"
5headers = {
6 "X-Api-Key": REKA_API_KEY
7}
8response = requests.delete(url, headers=headers)
9if response.status_code == 200:
10 result = response.json()
11 print("Delete successful:", result)
12else:
13 raise ValueError("Error:", response.status_code, response.text)

Parameters

  • image_id (required, path): The unique identifier of the image to delete

Response

Returns a confirmation message indicating the image was deleted successfully.