Publish a completed LoRA artifact to a customer Hugging Face repository.
curl --request POST \
--url http://localhost:3001/v1/training/runs/{run_id}/exports \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"request_id": "<string>",
"artifact_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"repo": "<string>",
"destination": "huggingface",
"private": true,
"credential_id": "<string>",
"revision": "<string>",
"mode": "lora"
}
'import requests
url = "http://localhost:3001/v1/training/runs/{run_id}/exports"
payload = {
"request_id": "<string>",
"artifact_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"repo": "<string>",
"destination": "huggingface",
"private": True,
"credential_id": "<string>",
"revision": "<string>",
"mode": "lora"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
request_id: '<string>',
artifact_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
repo: '<string>',
destination: 'huggingface',
private: true,
credential_id: '<string>',
revision: '<string>',
mode: 'lora'
})
};
fetch('http://localhost:3001/v1/training/runs/{run_id}/exports', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"export": {
"id": "<string>",
"run_id": "<string>",
"artifact_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "<string>",
"result_artifact_id": "<string>",
"repo": "<string>",
"revision": "<string>",
"error_code": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
},
"artifact": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"session_id": "<string>",
"run_id": "<string>",
"checkpoint_id": "<string>",
"kind": "<string>",
"checksum": "<string>",
"size_bytes": 123,
"export_mode": "<string>",
"status": "available",
"created_at": "2023-11-07T05:31:56Z"
},
"mode": "lora"
}{
"export": {
"id": "<string>",
"run_id": "<string>",
"artifact_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "<string>",
"result_artifact_id": "<string>",
"repo": "<string>",
"revision": "<string>",
"error_code": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
},
"mode": "lora"
}{
"error": {
"code": "<string>",
"message": "<string>"
},
"request_id": "<string>",
"funding_source": "platform"
}unified-training
Publish a completed LoRA artifact to a customer Hugging Face repository.
Only LoRA adapters are eligible for Hub export. Whitney accepts a customer credential reference, never a Hugging Face token. Full weights are available only through signed Volume download in v1.
POST
/
v1
/
training
/
runs
/
{run_id}
/
exports
Publish a completed LoRA artifact to a customer Hugging Face repository.
curl --request POST \
--url http://localhost:3001/v1/training/runs/{run_id}/exports \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"request_id": "<string>",
"artifact_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"repo": "<string>",
"destination": "huggingface",
"private": true,
"credential_id": "<string>",
"revision": "<string>",
"mode": "lora"
}
'import requests
url = "http://localhost:3001/v1/training/runs/{run_id}/exports"
payload = {
"request_id": "<string>",
"artifact_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"repo": "<string>",
"destination": "huggingface",
"private": True,
"credential_id": "<string>",
"revision": "<string>",
"mode": "lora"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
request_id: '<string>',
artifact_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
repo: '<string>',
destination: 'huggingface',
private: true,
credential_id: '<string>',
revision: '<string>',
mode: 'lora'
})
};
fetch('http://localhost:3001/v1/training/runs/{run_id}/exports', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"export": {
"id": "<string>",
"run_id": "<string>",
"artifact_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "<string>",
"result_artifact_id": "<string>",
"repo": "<string>",
"revision": "<string>",
"error_code": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
},
"artifact": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"session_id": "<string>",
"run_id": "<string>",
"checkpoint_id": "<string>",
"kind": "<string>",
"checksum": "<string>",
"size_bytes": 123,
"export_mode": "<string>",
"status": "available",
"created_at": "2023-11-07T05:31:56Z"
},
"mode": "lora"
}{
"export": {
"id": "<string>",
"run_id": "<string>",
"artifact_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "<string>",
"result_artifact_id": "<string>",
"repo": "<string>",
"revision": "<string>",
"error_code": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
},
"mode": "lora"
}{
"error": {
"code": "<string>",
"message": "<string>"
},
"request_id": "<string>",
"funding_source": "platform"
}Authorizations
Whitney-issued API key. No organization-selection header is accepted.
Path Parameters
Pattern:
^wtr_[0-9a-f]{32}$Body
application/json
Required string length:
1 - 200Maximum string length:
200Pattern:
^[A-Za-z0-9][A-Za-z0-9._-]*/[A-Za-z0-9][A-Za-z0-9._-]*$Required string length:
1 - 200Required string length:
1 - 80