Create upload URL
POST/v1/data/{namespace}/requests/upload-url
Request a pre-signed upload URL for large JSONL batches into a namespace. After receiving upload_url, upload your JSONL file using PUT {upload_url} with header Content-Type: application/json; put each JSON object on a new line.
Returns
Create upload URL
curl https://api.safetykit.com/v1/data/$NAMESPACE/requests/upload-url \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer $SAFETYKIT_API_KEY" \
-d '{
"schema": {
"title": {
"display_hint": {
"name": "Profile name",
"order": 1,
"type": "title"
}
},
"description": {
"display_hint": {
"order": 10,
"type": "description"
}
},
"profile_image": {
"content_type": "image_url",
"display_hint": {
"order": 15,
"type": "primary_image_url"
}
},
"cover_photo": {
"content_type": "image_url"
},
"website": {
"content_type": "website_url"
},
"promo_video": {
"content_type": "video_url",
"display_hint": {
"type": "video_url"
}
},
"shop_id": {
"belongs_to": "shops"
},
"internal_notes": {
"content_type": "metadata"
}
}
}'{
"expires_at": "2026-01-15T12:30:00.000Z",
"objectKey": "TEAM_ID/data-api-request-input/products/request_01K....jsonl",
"requestId": "req_01h2m7qdmdjckc30e1mnq6xqfd",
"status": "pending_upload",
"upload_url": "https://s3.amazonaws.com/..."
}Returns Examples
{
"expires_at": "2026-01-15T12:30:00.000Z",
"objectKey": "TEAM_ID/data-api-request-input/products/request_01K....jsonl",
"requestId": "req_01h2m7qdmdjckc30e1mnq6xqfd",
"status": "pending_upload",
"upload_url": "https://s3.amazonaws.com/..."
}