Adaption Upload API
Pre-signed direct-to-S3 upload lifecycle for file-sourced datasets.
Pre-signed direct-to-S3 upload lifecycle for file-sourced datasets.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/adaption-upload-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Adaption Adaptive Data Datasets Upload API
version: 0.4.0
x-adaption-generated: '2026-07-17'
x-adaption-method: derived
x-adaption-source: Derived faithfully from the official first-party Python SDK `adaption` v0.4.0 (PyPI; generated with Stainless from Adaption's OpenAPI spec) — api.md endpoint map + src/adaption/types/* request/response models and src/adaption/_client.py (base URL + auth). Adaption does not publish the source OpenAPI at a public URL; this is a faithful reconstruction of the documented surface, not a fabrication.
description: The Adaptive Data API lets you ingest, adapt, evaluate, and export model-ready training datasets. Upload a dataset (direct file, HuggingFace, or Kaggle), configure column roles and augmentation recipes, run the adaptation pipeline, read the quality evaluation, download the adapted dataset, and publish it back to HuggingFace or Kaggle.
contact:
name: Adaption Labs
email: info@adaptionlabs.ai
url: https://docs.adaptionlabs.ai/
termsOfService: https://adaptionlabs.ai/terms-of-service
servers:
- url: https://api.prod.adaptionlabs.ai
description: Production
security:
- bearerAuth: []
tags:
- name: Upload
description: Pre-signed direct-to-S3 upload lifecycle for file-sourced datasets.
paths:
/api/v1/datasets/upload/initiate:
post:
operationId: initiateUpload
tags:
- Upload
summary: Initiate a pre-signed file upload
description: Returns a pre-signed S3 URL to which the file is uploaded directly via HTTP PUT.
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- file_format
- name
properties:
file_format:
type: string
enum:
- csv
- json
- jsonl
- parquet
description: Format of the file being uploaded
name:
type: string
description: Human-readable name for the dataset
responses:
'200':
description: Pre-signed upload URL
content:
application/json:
schema:
type: object
required:
- upload_url
properties:
upload_url:
type: string
description: Pre-signed S3 URL — upload the file directly to this URL via HTTP PUT
'401':
$ref: '#/components/responses/Unauthorized'
/api/v1/datasets/upload/complete:
post:
operationId: completeUpload
tags:
- Upload
summary: Complete an upload and create the dataset
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- file_format
- file_size_bytes
- name
- s3_key
properties:
file_format:
type: string
enum:
- csv
- json
- jsonl
- parquet
description: Format of the uploaded file
file_size_bytes:
type: number
description: Size of the uploaded file in bytes
name:
type: string
description: Human-readable name for the dataset
s3_key:
type: string
description: S3 object key returned in the pre-signed URL response from /upload/initiate
responses:
'200':
description: Dataset created
content:
application/json:
schema:
type: object
required:
- dataset_id
properties:
dataset_id:
type: string
description: ID of the newly created dataset
'400':
$ref: '#/components/responses/BadRequest'
/api/v1/datasets/{dataset_id}/upload/complete:
post:
operationId: completeUploadById
tags:
- Upload
summary: Complete an upload for an existing dataset
parameters:
- $ref: '#/components/parameters/DatasetId'
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- file_size_bytes
properties:
file_size_bytes:
type: number
description: Size of the uploaded file in bytes (for verification)
sha256:
type: string
description: SHA-256 hex digest of the uploaded file (for integrity verification)
responses:
'200':
description: Dataset upload completed
content:
application/json:
schema:
type: object
required:
- dataset_id
- status
properties:
dataset_id:
type: string
status:
type: string
description: Current status of the dataset after completing upload
'404':
$ref: '#/components/responses/NotFound'
components:
schemas:
ErrorEnvelope:
type: object
description: Structured error payload. `code` is a stable error code (e.g. E0100) when the failure was structured.
properties:
code:
type:
- string
- 'null'
description: Stable error code when the failure was structured (e.g. E0100)
level:
type:
- string
- 'null'
enum:
- error
- warning
- null
description: Severity when known
message:
type:
- string
- 'null'
description: Error message
responses:
NotFound:
description: Resource not found.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
BadRequest:
description: Invalid request. Body carries a structured error with a stable code (e.g. E0100).
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
Unauthorized:
description: Missing or invalid API key.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
parameters:
DatasetId:
name: dataset_id
in: path
required: true
description: Unique dataset identifier
schema:
type: string
securitySchemes:
bearerAuth:
type: http
scheme: bearer
description: 'Send your Adaption API key as a Bearer token: `Authorization: Bearer <ADAPTION_API_KEY>`. Keys are created in the app (Settings, API keys) and are prefixed `pt_live_`.'