# Qualia API 1.0.0

Public API for the Qualia robotics data and VLA platform.

**Base URL:** `https://junction-api.qualiastudios.dev`

All endpoints require authentication via the `X-API-Key` header. Create an API key in **Settings** in the [Qualia dashboard](https://junction.qualiastudios.dev).

**OpenAPI document:** [https://junction-docs.qualiastudios.dev/api/reference/openapi.json](https://junction-docs.qualiastudios.dev/api/reference/openapi.json)

## Operations

### Credits

- [`GET /v1/credits`](https://junction-docs.qualiastudios.dev/api/reference/operations/get_credit_balance_v1_credits_get.md): Get Credit Balance

### Datasets

- [`GET /v1/datasets/list`](https://junction-docs.qualiastudios.dev/api/reference/operations/list_user_datasets_v1_datasets_list_get.md): List User Datasets
- [`GET /v1/datasets/detail`](https://junction-docs.qualiastudios.dev/api/reference/operations/get_dataset_detail_v1_datasets_detail_get.md): QDS catalog detail for one dataset
- [`GET /v1/datasets/ingest-report`](https://junction-docs.qualiastudios.dev/api/reference/operations/get_dataset_ingest_report_v1_datasets_ingest_report_get.md): Read one dataset's bounded structured ingest report
- [`POST /v1/datasets/upload/begin`](https://junction-docs.qualiastudios.dev/api/reference/operations/upload_begin_v1_datasets_upload_begin_post.md): Begin a dataset upload
- [`GET /v1/datasets/uploads`](https://junction-docs.qualiastudios.dev/api/reference/operations/list_upload_operations_v1_datasets_uploads_get.md): In-flight uploads for the caller's account
- [`POST /v1/datasets/uploads/{repo_id}/dismiss`](https://junction-docs.qualiastudios.dev/api/reference/operations/dismiss_upload_v1_datasets_uploads__repo_id__dismiss_post.md): Acknowledge a repo's failed or finished upload so the feed stops reporting it
- [`POST /v1/datasets/uploads/{repo_id}/cancel`](https://junction-docs.qualiastudios.dev/api/reference/operations/cancel_upload_v1_datasets_uploads__repo_id__cancel_post.md): Cancel a repo's upload in progress
- [`POST /v1/datasets/upload/heartbeat`](https://junction-docs.qualiastudios.dev/api/reference/operations/upload_heartbeat_v1_datasets_upload_heartbeat_post.md): Advisory in-flight upload heartbeat for the pending band
- [`POST /v1/datasets/upload/resolve`](https://junction-docs.qualiastudios.dev/api/reference/operations/upload_resolve_v1_datasets_upload_resolve_post.md): Resolve the immutable repository identity for a Git filter
- [`POST /v1/datasets/upload/chunks-exist`](https://junction-docs.qualiastudios.dev/api/reference/operations/upload_chunks_exist_v1_datasets_upload_chunks_exist_post.md): Dedup probe for chunks
- [`POST /v1/datasets/upload/prepare-object`](https://junction-docs.qualiastudios.dev/api/reference/operations/upload_prepare_v1_datasets_upload_prepare_object_post.md) (deprecated): Presigned R2 PUT for one xorb
- [`POST /v1/datasets/upload/prepare-batch`](https://junction-docs.qualiastudios.dev/api/reference/operations/upload_prepare_batch_v1_datasets_upload_prepare_batch_post.md): Presigned R2 PUTs for N xorbs
- [`POST /v1/datasets/upload/finalize-batch`](https://junction-docs.qualiastudios.dev/api/reference/operations/upload_finalize_batch_v1_datasets_upload_finalize_batch_post.md): Verify and publish staged R2 uploads
- [`POST /v1/datasets/upload/publication`](https://junction-docs.qualiastudios.dev/api/reference/operations/upload_begin_publication_v1_datasets_upload_publication_post.md): Dispatch one durable Modal upload publication
- [`POST /v1/datasets/upload/publication/status`](https://junction-docs.qualiastudios.dev/api/reference/operations/upload_get_publication_v1_datasets_upload_publication_status_post.md): Poll one durable Modal upload publication
- [`POST /v1/datasets/upload/register-content-manifest`](https://junction-docs.qualiastudios.dev/api/reference/operations/upload_register_content_manifest_v1_datasets_upload_register_content_manifest_post.md): Register one file's ManifestID from its terms
- [`POST /v1/datasets/upload/lookup`](https://junction-docs.qualiastudios.dev/api/reference/operations/upload_lookup_v1_datasets_upload_lookup_post.md): File-level content-hash dedup probe
- [`GET /v1/datasets/canonical`](https://junction-docs.qualiastudios.dev/api/reference/operations/get_canonical_datasets_v1_datasets_canonical_get.md): Canonical robot interfaces for the account's datasets
- [`GET /v1/datasets/canonical/{dataset_id}`](https://junction-docs.qualiastudios.dev/api/reference/operations/get_canonical_dataset_v1_datasets_canonical__dataset_id__get.md): Get one exact canonical source dataset
- [`DELETE /v1/datasets/canonical/{dataset_id}`](https://junction-docs.qualiastudios.dev/api/reference/operations/delete_source_v1_datasets_canonical__dataset_id__delete.md): Retire a source
- [`GET /v1/datasets/defs/{def_id}`](https://junction-docs.qualiastudios.dev/api/reference/operations/get_dataset_def_v1_datasets_defs__def_id__get.md): Get one saved dataset def
- [`DELETE /v1/datasets/defs/{def_id}`](https://junction-docs.qualiastudios.dev/api/reference/operations/delete_dataset_def_v1_datasets_defs__def_id__delete.md): Retire a dataset
- [`POST /v1/datasets/explore`](https://junction-docs.qualiastudios.dev/api/reference/operations/explore_lake_v1_datasets_explore_post.md): Explore the episode lake: one page + totals + facet counts
- [`POST /v1/datasets/curation/analyses`](https://junction-docs.qualiastudios.dev/api/reference/operations/start_dataset_curation_analysis_v1_datasets_curation_analyses_post.md): Start a durable bad-data analysis over immutable dataset versions
- [`GET /v1/datasets/curation/analyses/{analysis_id}`](https://junction-docs.qualiastudios.dev/api/reference/operations/get_dataset_curation_analysis_v1_datasets_curation_analyses__analysis_id__get.md): Get durable bad-data analysis progress and sealed evidence
- [`POST /v1/datasets/curation/suggestions`](https://junction-docs.qualiastudios.dev/api/reference/operations/list_dataset_curation_suggestions_v1_datasets_curation_suggestions_post.md): List a sealed page of explainable bad-data recommendations
- [`POST /v1/datasets/curation/publications`](https://junction-docs.qualiastudios.dev/api/reference/operations/start_dataset_curation_publication_v1_datasets_curation_publications_post.md): Start a durable curation publication without waiting
- [`GET /v1/datasets/curation/publications/{idempotency_key}`](https://junction-docs.qualiastudios.dev/api/reference/operations/get_dataset_curation_publication_v1_datasets_curation_publications__idempotency_key__get.md): Poll one exact durable curation publication
- [`POST /v1/datasets/episode-unsplit`](https://junction-docs.qualiastudios.dev/api/reference/operations/unsplit_episode_v1_datasets_episode_unsplit_post.md): Delete an episode's children, undoing a split
- [`POST /v1/datasets/episode-markers`](https://junction-docs.qualiastudios.dev/api/reference/operations/episode_markers_v1_datasets_episode_markers_post.md): The recorder markers inside one episode, timed from its first frame
- [`POST /v1/datasets/episode-revisions`](https://junction-docs.qualiastudios.dev/api/reference/operations/list_episode_revisions_v1_datasets_episode_revisions_post.md): List an episode's revision chain (newest first)
- [`POST /v1/datasets/episode-revision`](https://junction-docs.qualiastudios.dev/api/reference/operations/create_episode_revision_v1_datasets_episode_revision_post.md): Commit one warm/lightweight episode revision
- [`GET /v1/datasets/import-hf`](https://junction-docs.qualiastudios.dev/api/reference/operations/list_huggingface_imports_v1_datasets_import_hf_get.md): List active and recent server-side Hugging Face imports
- [`POST /v1/datasets/import-hf`](https://junction-docs.qualiastudios.dev/api/reference/operations/import_huggingface_dataset_v1_datasets_import_hf_post.md): Import an exact Hugging Face dataset commit server-side
- [`GET /v1/datasets/import-hf/{import_id}`](https://junction-docs.qualiastudios.dev/api/reference/operations/get_huggingface_import_v1_datasets_import_hf__import_id__get.md): Poll one server-side Hugging Face import
- [`POST /v1/datasets/import-hf/{import_id}/cancel`](https://junction-docs.qualiastudios.dev/api/reference/operations/cancel_huggingface_import_v1_datasets_import_hf__import_id__cancel_post.md): Cancel one server-side Hugging Face import
- [`GET /v1/datasets/defs`](https://junction-docs.qualiastudios.dev/api/reference/operations/list_dataset_defs_v1_datasets_defs_get.md): List saved dataset defs
- [`POST /v1/datasets/defs`](https://junction-docs.qualiastudios.dev/api/reference/operations/create_dataset_def_v1_datasets_defs_post.md): Save a dataset def — a persisted query over the episode lake
- [`GET /v1/datasets/defs/by-source/{source_dataset_id}`](https://junction-docs.qualiastudios.dev/api/reference/operations/list_dataset_defs_by_source_v1_datasets_defs_by_source__source_dataset_id__get.md): List saved dataset defs that consume one source
- [`GET /v1/datasets/versions`](https://junction-docs.qualiastudios.dev/api/reference/operations/list_dataset_versions_v1_datasets_versions_get.md): List a def's pinned versions
- [`POST /v1/datasets/versions`](https://junction-docs.qualiastudios.dev/api/reference/operations/pin_dataset_version_v1_datasets_versions_post.md): Pin a dataset version — freeze the def's query result
- [`GET /v1/datasets/versions/{version_id}/sources`](https://junction-docs.qualiastudios.dev/api/reference/operations/list_dataset_version_sources_v1_datasets_versions__version_id__sources_get.md): List immutable source publication anchors
- [`GET /v1/datasets/versions/{version_id}`](https://junction-docs.qualiastudios.dev/api/reference/operations/get_dataset_version_v1_datasets_versions__version_id__get.md): Get one immutable dataset version
- [`GET /v1/datasets/versions/{version_id}/health`](https://junction-docs.qualiastudios.dev/api/reference/operations/get_dataset_version_health_v1_datasets_versions__version_id__health_get.md): Read or compute an immutable dataset-health report
- [`GET /v1/datasets/versions/{version_id}/training-features`](https://junction-docs.qualiastudios.dev/api/reference/operations/get_dataset_training_features_v1_datasets_versions__version_id__training_features_get.md): Get adapter-pinned camera features for an immutable dataset version
- [`POST /v1/datasets/download/begin`](https://junction-docs.qualiastudios.dev/api/reference/operations/download_begin_v1_datasets_download_begin_post.md): List a dataset's files
- [`POST /v1/datasets/download/presign-exact-batch`](https://junction-docs.qualiastudios.dev/api/reference/operations/download_presign_exact_batch_v1_datasets_download_presign_exact_batch_post.md): Direct-storage plan for one immutable snapshot page
- [`POST /v1/datasets/download/presign-by-hash`](https://junction-docs.qualiastudios.dev/api/reference/operations/download_presign_by_hash_v1_datasets_download_presign_by_hash_post.md): Presigned R2 GET plan by content hash (one round-trip)
- [`POST /v1/datasets/download/presign`](https://junction-docs.qualiastudios.dev/api/reference/operations/download_presign_v1_datasets_download_presign_post.md) (deprecated): Presigned R2 GET for a file
- [`POST /v1/datasets/download/presign-batch`](https://junction-docs.qualiastudios.dev/api/reference/operations/download_presign_batch_v1_datasets_download_presign_batch_post.md): Shared-Xorb R2 GET plan for a bounded file page

### Events

- [`GET /v1/events`](https://junction-docs.qualiastudios.dev/api/reference/operations/events_v1_events_get.md): One job's live log, telemetry and capacity-wait lines (SSE)
- [`GET /v1/accounts/{account_id}/events:export`](https://junction-docs.qualiastudios.dev/api/reference/operations/export_events_v1_accounts__account_id__events_export_get.md): Download an organization's events record as JSON lines

### Members

- [`GET /v1/members`](https://junction-docs.qualiastudios.dev/api/reference/operations/list_members_v1_members_get.md): List Members
- [`GET /v1/members/{user_id}`](https://junction-docs.qualiastudios.dev/api/reference/operations/get_member_v1_members__user_id__get.md): Get Member
- [`PUT /v1/members/{user_id}`](https://junction-docs.qualiastudios.dev/api/reference/operations/set_member_role_v1_members__user_id__put.md): Set Member Role
- [`DELETE /v1/members/{user_id}`](https://junction-docs.qualiastudios.dev/api/reference/operations/remove_member_v1_members__user_id__delete.md): Remove Member
- [`GET /v1/invitations`](https://junction-docs.qualiastudios.dev/api/reference/operations/list_invitations_v1_invitations_get.md): List Invitations
- [`POST /v1/invitations`](https://junction-docs.qualiastudios.dev/api/reference/operations/send_invitation_v1_invitations_post.md): Send Invitation
- [`DELETE /v1/invitations/{invitation_id}`](https://junction-docs.qualiastudios.dev/api/reference/operations/withdraw_invitation_v1_invitations__invitation_id__delete.md): Withdraw Invitation

### Integrations

- [`GET /v1/integrations`](https://junction-docs.qualiastudios.dev/api/reference/operations/list_integrations_v1_integrations_get.md): List the organization's integration keys
- [`POST /v1/integrations`](https://junction-docs.qualiastudios.dev/api/reference/operations/add_integration_v1_integrations_post.md): Add an integration key
- [`DELETE /v1/integrations/{integration_id}`](https://junction-docs.qualiastudios.dev/api/reference/operations/remove_integration_v1_integrations__integration_id__delete.md): Remove an integration key
- [`PATCH /v1/integrations/{integration_id}/default`](https://junction-docs.qualiastudios.dev/api/reference/operations/set_default_integration_v1_integrations__integration_id__default_patch.md): Make a Hugging Face token the default

### Pipelines

- [`GET /v1/pipelines/templates`](https://junction-docs.qualiastudios.dev/api/reference/operations/list_pipeline_templates_v1_pipelines_templates_get.md): List Launchable Pipeline Templates
- [`GET /v1/field-types`](https://junction-docs.qualiastudios.dev/api/reference/operations/list_field_types_v1_field_types_get.md): List Field Types
- [`POST /v1/pipelines/resolve`](https://junction-docs.qualiastudios.dev/api/reference/operations/resolve_field_v1_pipelines_resolve_post.md): Resolve Dynamic Field Defaults
- [`POST /v1/runs`](https://junction-docs.qualiastudios.dev/api/reference/operations/submit_run_v1_runs_post.md): Launch Pipeline Run
- [`POST /v1/runs/estimate`](https://junction-docs.qualiastudios.dev/api/reference/operations/estimate_run_v1_runs_estimate_post.md): Estimate Pipeline Run
- [`GET /v1/runs/{job_id}/maps/{op_run_id}/items`](https://junction-docs.qualiastudios.dev/api/reference/operations/list_map_items_v1_runs__job_id__maps__op_run_id__items_get.md): List Map Items
- [`GET /v1/pipelines/catalog`](https://junction-docs.qualiastudios.dev/api/reference/operations/list_catalog_v1_pipelines_catalog_get.md): List Pipeline Template Catalogue
- [`POST /v1/pipelines/templates:validate`](https://junction-docs.qualiastudios.dev/api/reference/operations/validate_template_v1_pipelines_templates_validate_post.md): Validate Pipeline Template
- [`POST /v1/pipelines/templates:apply`](https://junction-docs.qualiastudios.dev/api/reference/operations/apply_template_v1_pipelines_templates_apply_post.md): Apply Pipeline Template
- [`GET /v1/pipelines/templates/{pipeline_template_id}/versions`](https://junction-docs.qualiastudios.dev/api/reference/operations/list_versions_v1_pipelines_templates__pipeline_template_id__versions_get.md): List Pipeline Template Versions
- [`GET /v1/pipelines/templates/{pipeline_template_id}/versions/{version}`](https://junction-docs.qualiastudios.dev/api/reference/operations/get_version_v1_pipelines_templates__pipeline_template_id__versions__version__get.md): Get Pipeline Template Version
- [`POST /v1/pipelines/templates/{pipeline_template_id}:retire`](https://junction-docs.qualiastudios.dev/api/reference/operations/retire_template_v1_pipelines_templates__pipeline_template_id__retire_post.md): Retire Pipeline Template

### Auth

- [`GET /v1/whoami`](https://junction-docs.qualiastudios.dev/api/reference/operations/whoami_v1_whoami_get.md): Who Am I

### Partner exports

- [`GET /v1/accounts/{account}/datasets/{dataset}/versions/{version}/partner-exports:preview`](https://junction-docs.qualiastudios.dev/api/reference/operations/preview_partner_export_v1_accounts__account__datasets__dataset__versions__version__partner_exports_preview_get.md): Preview a partner export: key, contract, counts and readiness
- [`GET /v1/accounts/{account}/datasets/{dataset}/versions/{version}/partner-exports`](https://junction-docs.qualiastudios.dev/api/reference/operations/list_partner_exports_v1_accounts__account__datasets__dataset__versions__version__partner_exports_get.md): List a version's partner exports, newest first
- [`POST /v1/accounts/{account}/datasets/{dataset}/versions/{version}/partner-exports`](https://junction-docs.qualiastudios.dev/api/reference/operations/start_partner_export_v1_accounts__account__datasets__dataset__versions__version__partner_exports_post.md): Send a dataset version to a partner with your own key
- [`GET /v1/accounts/{account}/datasets/{dataset}/versions/{version}/partner-exports/{export_id}`](https://junction-docs.qualiastudios.dev/api/reference/operations/get_partner_export_v1_accounts__account__datasets__dataset__versions__version__partner_exports__export_id__get.md): Get one partner export
- [`GET /v1/accounts/{account}/datasets/{dataset}/versions/{version}/partner-exports/{export_id}/episodes`](https://junction-docs.qualiastudios.dev/api/reference/operations/list_partner_export_episodes_v1_accounts__account__datasets__dataset__versions__version__partner_exports__export_id__episodes_get.md): Page a partner export's per-episode results
- [`POST /v1/accounts/{account}/datasets/{dataset}/versions/{version}/partner-exports/{export_id}:resync`](https://junction-docs.qualiastudios.dev/api/reference/operations/resync_partner_export_v1_accounts__account__datasets__dataset__versions__version__partner_exports__export_id__resync_post.md): Re-send changed labels of a Pi export's finalized episodes
- [`POST /v1/accounts/{account}/datasets/{dataset}/versions/{version}/partner-exports/{export_id}:refresh`](https://junction-docs.qualiastudios.dev/api/reference/operations/refresh_partner_export_v1_accounts__account__datasets__dataset__versions__version__partner_exports__export_id__refresh_post.md): Read a Dream Labs export's processing status again
