Sign in Get started

Explore

Search the public catalog - datasets and models any organization published to Explore - and start from one of them.

View as Markdown

Every organization can publish datasets and models to Explore. client.explore reads that catalog - exactly what the app’s Explore pages list - so you can find a dataset to start from or a model to build on, then copy it into your organization: datasets.import_public for a dataset, models.fork for a model.

A public dataset or model lives in another organization, where a bare name is not unique, so it is addressed by its qualified public name: the organization’s slug and the dataset’s (or model’s) slug or display name.

/api/v1/developer/public/datasets/{organization}/{dataset}

Every row these methods return carries that name as ref ("pictograph-research/coco-5k"), which is what import_public and fork take. Reading the catalog is free and open to every role.

datasets

One page of public datasets, filtered by name or content and sorted.

Source: Explore.datasets

Arg Type Default Notes
search str | None None Match a dataset’s name or what its images show (their tags).
class_name str | None None Only datasets that have this class.
sort DatasetSort 'recent' "recent" (default), "popular" (most starred), "trending" (most starred this week) or "alphabetical".
limit int 50 Up to 100 per page; iter_datasets pages for you.
offset int 0 Rows to skip.
rows = client.explore.datasets(
    search="coco",
    sort="popular",
    limit=20,
)
for ds in rows:
    print(ds.ref, ds.image_count, ds.license_id)
pictograph explore datasets --search coco --sort popular -n 20
curl -s "https://api.pictograph.io/api/v1/developer/public/datasets?search=coco&sort=popular&limit=20" \
  -H "X-API-Key: $PICTOGRAPH_API_KEY"

Returns list[PublicDataset]

PublicDataset · 19 fields
class PublicDataset(BaseModel):
    """A dataset in the public catalog, as Explore lists it."""
    id: str
    name: str
    slug: str | None = None
    description: str | None = None
    organization: PublicOrganization | None = None
    image_count: int = 0
    annotation_count: int = 0
    annotation_types: list[str] = []
    classes: list[DatasetClass] = []
    class_count: int = 0
    top_auto_tags: list[str] = []
    license_id: str | None = None
    star_count: int = 0
    is_fork: bool = False
    hf_repo: str | None = None
    readme: str | None = None
    published_at: datetime | None = None
    created_at: datetime | None = None
    updated_at: datetime | None = None

search matches a dataset’s name and what its images show (their content tags). A list row carries the dataset’s first few classes; dataset returns all of them and its card.

iter_datasets

Every public dataset that matches, fetched page by page as you iterate.

Source: Explore.iter_datasets

Arg Type Default Notes
search str | None None Match a dataset’s name or what its images show (their tags).
class_name str | None None Only datasets that have this class.
sort DatasetSort 'recent' "recent" (default), "popular", "trending" or "alphabetical".
page_size int 50 Rows fetched per request (up to 100).
max_total int | None None Stop after this many datasets. None walks them all.
for ds in client.explore.iter_datasets(
    class_name="person",
    max_total=200,
):
    print(ds.ref, ds.classes[0].name if ds.classes else "-")
pictograph explore datasets --class person -n 200
curl -s "https://api.pictograph.io/api/v1/developer/public/datasets?class=person&offset=100&limit=100" \
  -H "X-API-Key: $PICTOGRAPH_API_KEY"

Returns OffsetPager[PublicDataset]

PublicDataset · 19 fields
class PublicDataset(BaseModel):
    """A dataset in the public catalog, as Explore lists it."""
    id: str
    name: str
    slug: str | None = None
    description: str | None = None
    organization: PublicOrganization | None = None
    image_count: int = 0
    annotation_count: int = 0
    annotation_types: list[str] = []
    classes: list[DatasetClass] = []
    class_count: int = 0
    top_auto_tags: list[str] = []
    license_id: str | None = None
    star_count: int = 0
    is_fork: bool = False
    hf_repo: str | None = None
    readme: str | None = None
    published_at: datetime | None = None
    created_at: datetime | None = None
    updated_at: datetime | None = None

The CLI pages through the API itself up to -n; over REST, advance offset until pagination.has_more is false.

dataset

One public dataset: its card (readme), license, every class and its counts.

Source: Explore.dataset

Arg Type Default Notes
ref str required "<organization>/<dataset>" - the organization’s slug and the dataset’s slug or display name. Or pass the bare name and organization=.
organization str | None None The owning organization’s slug, when ref is a bare name.
ds = client.explore.dataset(
    ref="pictograph-research/coco-5k",
)
print(ds.license_id, ds.image_count, [c.name for c in ds.classes][:5])
print(ds.readme)
pictograph explore dataset pictograph-research/coco-5k
curl -s "https://api.pictograph.io/api/v1/developer/public/datasets/pictograph-research/coco-5k" \
  -H "X-API-Key: $PICTOGRAPH_API_KEY"

Returns PublicDataset

PublicDataset · 19 fields
class PublicDataset(BaseModel):
    """A dataset in the public catalog, as Explore lists it."""
    id: str
    name: str
    slug: str | None = None
    description: str | None = None
    organization: PublicOrganization | None = None
    image_count: int = 0
    annotation_count: int = 0
    annotation_types: list[str] = []
    classes: list[DatasetClass] = []
    class_count: int = 0
    top_auto_tags: list[str] = []
    license_id: str | None = None
    star_count: int = 0
    is_fork: bool = False
    hf_repo: str | None = None
    readme: str | None = None
    published_at: datetime | None = None
    created_at: datetime | None = None
    updated_at: datetime | None = None

A dataset that is not public reads as a 404, exactly like one that does not exist.

models

One page of public, ready models, filtered by name or task.

Source: Explore.models

Arg Type Default Notes
search str | None None Match a model’s name.
model_type PublicModelType | None None Only models of this task ("object_detection", "instance_segmentation", …).
sort ModelSort 'recent' "recent" (default), "popular" or "alphabetical".
limit int 50 Up to 100 per page; iter_models pages for you.
offset int 0 Rows to skip.
for model in client.explore.models(
    model_type="instance_segmentation",
    sort="popular",
):
    print(model.ref, model.architecture, len(model.classes))
pictograph explore models --task instance_segmentation --sort popular
curl -s "https://api.pictograph.io/api/v1/developer/public/models?model_type=instance_segmentation&sort=popular" \
  -H "X-API-Key: $PICTOGRAPH_API_KEY"

Returns list[PublicModel]

PublicModel · 18 fields
class PublicModel(BaseModel):
    """A ready model in the public catalog, as Explore lists it."""
    id: str
    name: str
    slug: str | None = None
    description: str | None = None
    organization: PublicOrganization | None = None
    model_type: str
    architecture: str | None = None
    precision: str | None = None
    class_mapping: dict[str, Any] | None = None
    metrics: dict[str, Any] = {}
    training_config: dict[str, Any] | None = None
    license_id: str | None = None
    star_count: int = 0
    weights_size_bytes: int | None = None
    is_fork: bool = False
    hf_repo: str | None = None
    created_at: datetime | None = None
    updated_at: datetime | None = None

metrics holds the model’s evaluation scores. Copy one into your organization with client.models.fork(*model.ref.split("/")), or pictograph models fork <ref>.

iter_models

Every public, ready model that matches, fetched page by page as you iterate.

Source: Explore.iter_models

Arg Type Default Notes
search str | None None Match a model’s name.
model_type PublicModelType | None None Only models of this task ("object_detection", "instance_segmentation", …).
sort ModelSort 'recent' "recent" (default), "popular" or "alphabetical".
page_size int 50 Rows fetched per request (up to 100).
max_total int | None None Stop after this many models. None walks them all.
for model in client.explore.iter_models(
    search="sceneparse",
    max_total=50,
):
    print(model.ref, model.architecture, model.metrics)
pictograph explore models --search sceneparse -n 50
curl -s "https://api.pictograph.io/api/v1/developer/public/models?search=sceneparse&offset=0&limit=50" \
  -H "X-API-Key: $PICTOGRAPH_API_KEY"

Returns OffsetPager[PublicModel]

PublicModel · 18 fields
class PublicModel(BaseModel):
    """A ready model in the public catalog, as Explore lists it."""
    id: str
    name: str
    slug: str | None = None
    description: str | None = None
    organization: PublicOrganization | None = None
    model_type: str
    architecture: str | None = None
    precision: str | None = None
    class_mapping: dict[str, Any] | None = None
    metrics: dict[str, Any] = {}
    training_config: dict[str, Any] | None = None
    license_id: str | None = None
    star_count: int = 0
    weights_size_bytes: int | None = None
    is_fork: bool = False
    hf_repo: str | None = None
    created_at: datetime | None = None
    updated_at: datetime | None = None

Start from a public dataset

Find one, read its card and license, then import it. The copy is private to your organization, keeps the source’s classes, license and attribution, and stays yours if the source is later unpublished.

for ds in client.explore.datasets(search="food"):
    print(ds.ref, ds.image_count, ds.license_id)

job = client.datasets.import_public(
    ref="pictograph-research/foodseg103",
    name="food-start",
)
print(job.status, job.dataset_name)   # completed food-start
pictograph explore datasets --search food
pictograph datasets import-public pictograph-research/foodseg103 --name food-start

See import_public for the import’s options and its errors.

Common errors

Status Exception Cause
404 NotFoundError No such public dataset or model (a private one reads the same)
422 ValidationError An unknown sort or model_type value, or limit above 100
- ValueError ref names no organization - write it as org/dataset
Copied to clipboard