Create Image Groups
From Existing Files
from pathlib import Path
from uuid import UUID
from encord import EncordUserClient
# --- Configuration ---
SSH_PATH = "/Users/chris-encord/ssh-private-key.txt"
FOLDER_ID = "00000000-0000-0000-0000-000000000000"
# --- Connect to Encord ---
user_client: EncordUserClient = EncordUserClient.create_with_ssh_private_key(
ssh_private_key_path=SSH_PATH,
# For US platform users use "https://api.us.encord.com"
domain="https://api.encord.com",
)
folder = user_client.get_storage_folder(FOLDER_ID)
group_uuid: UUID = folder.create_image_group(
file_paths=[
Path("/path/to/front.jpg"),
Path("/path/to/side.jpg"),
Path("/path/to/rear.jpg"),
],
title="vehicle-inspection-001",
)
print(f"Created image group with UUID: {group_uuid}")
from encord import EncordUserClient
from encord.orm.dataset import LongPollingStatus
from encord.orm.storage import DataUploadImageGroupFromItems
from encord.storage import DataUploadItems
user_client = EncordUserClient.create_with_ssh_private_key(
ssh_private_key_path="<private_key_path>"
)
storage_folder = user_client.get_storage_folder("<folder_hash>")
image_group = DataUploadImageGroupFromItems(
image_items=[
"11111111-1111-1111-1111-111111111111",
"22222222-2222-2222-2222-222222222222",
"33333333-3333-3333-3333-333333333333",
],
title="My Image Group",
)
upload_job_id = storage_folder.add_private_data_to_folder_start(
integration_id="<integration_id>",
private_files=DataUploadItems(
image_groups_from_items=[image_group]
),
)
result = storage_folder.add_private_data_to_folder_get_result(upload_job_id)
if result.status == LongPollingStatus.DONE:
print("Image group created successfully!")
Create Image Sequences
From Existing Files
from pathlib import Path
from uuid import UUID
from encord import EncordUserClient
# --- Configuration ---
SSH_PATH = "/Users/chris-encord/ssh-private-key.txt"
FOLDER_ID = "00000000-0000-0000-0000-000000000000"
# --- Connect to Encord ---
user_client: EncordUserClient = EncordUserClient.create_with_ssh_private_key(
ssh_private_key_path=SSH_PATH,
# For US platform users use "https://api.us.encord.com"
domain="https://api.encord.com",
)
folder = user_client.get_storage_folder(FOLDER_ID)
sequence_uuid: UUID = folder.create_image_sequence(
file_paths=[
Path("/path/to/frame001.jpg"),
Path("/path/to/frame002.jpg"),
Path("/path/to/frame003.jpg"),
],
title="drive-sequence-001",
)
print(f"Created image sequence with UUID: {sequence_uuid}")
from encord import EncordUserClient
from encord.orm.dataset import LongPollingStatus
from encord.orm.storage import DataUploadImageGroupFromItems
from encord.storage import DataUploadItems
# --- Configuration ---
SSH_PATH = "/Users/chris-encord/ssh-private-key.txt" # Replace with your SSH private key path
FOLDER_ID = "00000000-0000-0000-0000-000000000000" # Replace with the Folder ID
INTEGRATION_ID = "00000000-0000-0000-0000-000000000000" # Replace with the Integration ID
# --- Connect to Encord ---
user_client = EncordUserClient.create_with_ssh_private_key(
ssh_private_key_path=SSH_PATH,
domain="https://api.encord.com",
)
storage_folder = user_client.get_storage_folder(FOLDER_ID)
image_sequence = DataUploadImageGroupFromItems(
image_items=[
"11111111-1111-1111-1111-111111111111",
"22222222-2222-2222-2222-222222222222",
"33333333-3333-3333-3333-333333333333",
],
title="drive-sequence-001",
create_video=True,
)
upload_job_id = storage_folder.add_private_data_to_folder_start(
integration_id=INTEGRATION_ID,
private_files=DataUploadItems(
image_groups_from_items=[image_sequence],
),
)
result = storage_folder.add_private_data_to_folder_get_result(upload_job_id)
if result.status == LongPollingStatus.DONE:
print("Image sequence created successfully.")
Create at Scale
For large-scale imports, create image groups and image sequences from a JSON manifest. This is the recommended approach when importing hundreds or thousands of grouped images because it avoids making one SDK request per group.Image Groups
from pathlib import Path
from encord import EncordUserClient
from encord.orm.dataset import LongPollingStatus
from encord.storage import DataUploadItems
SSH_PATH = "/path/to/ssh-private-key.txt"
FOLDER_ID = "00000000-0000-0000-0000-000000000000"
JSON_FILE = Path("./image-groups.json")
user_client = EncordUserClient.create_with_ssh_private_key(
ssh_private_key_path=SSH_PATH,
# For US platform users use "https://api.us.encord.com"
domain="https://api.encord.com",
)
folder = user_client.get_storage_folder(FOLDER_ID)
upload_job_id = folder.add_private_data_to_folder_start(
DataUploadItems(file_path=JSON_FILE)
)
result = folder.add_private_data_to_folder_get_result(
upload_job_id,
timeout_seconds=600,
)
if result.status == LongPollingStatus.DONE:
print("Upload complete.")
print(result)
else:
print("Upload did not complete within the timeout.")
print(result)
Image Sequences
from pathlib import Path
from encord import EncordUserClient
from encord.orm.dataset import LongPollingStatus
from encord.storage import DataUploadItems
SSH_PATH = "/path/to/ssh-private-key.txt"
FOLDER_ID = "00000000-0000-0000-0000-000000000000"
JSON_FILE = Path("./image-sequences.json")
user_client = EncordUserClient.create_with_ssh_private_key(
ssh_private_key_path=SSH_PATH,
# For US platform users use "https://api.us.encord.com"
domain="https://api.encord.com",
)
folder = user_client.get_storage_folder(FOLDER_ID)
upload_job_id = folder.add_private_data_to_folder_start(
DataUploadItems(file_path=JSON_FILE)
)
result = folder.add_private_data_to_folder_get_result(
upload_job_id,
timeout_seconds=600,
)
if result.status == LongPollingStatus.DONE:
print("Upload complete.")
print(result)
else:
print("Upload did not complete within the timeout.")
print(result)

