Public registry snapshot: 2026-10-03. Enable JavaScript or follow Public model JSON for current registry data.
PRIVATE CPU PIPELINE
Private audio enrichment
Four fixed relative audio/text scores and a normalized private CLAP embedding for your own clip.
Verify live qualification before uploadingOne owned clip → WAV validation → pinned CLAP on CPU → private relative scores and embedding.
Verify the live pipeline before uploading. The browser form checks this when JavaScript is enabled.
Use the API quickstart below after checking live qualification. Browser upload requires JavaScript and sign-in.
Prepare a compatible WAV
Use a short audio clip you own or have permission to process. Already have a supported WAV? Use it directly.
With FFmpeg installed, replace the input path below. This converts the first 10 seconds to mono, 16 kHz, 16-bit PCM locally and refuses to overwrite an existing file.
ffmpeg -n -i "./my-recording.mp3" -t 10 -vn -ac 1 -ar 16000 \
-c:a pcm_s16le "./short-clip.wav"The source clip must contain at least 2 seconds; conversion does not extend it.
Listen to short-clip.wav before uploading. Conversion sends nothing to ModelUse and does not grant development units.
Run this pipeline through the API
Bash, curl, jq and Python 3; an existing workspace API key, an operator-issued noncash development grant and a supported private WAV are required. Set MODELUSE_TOKEN and MODELUSE_WAV locally. Never put them in a public URL or log.
This example uses the same pipeline, recipe, task reference and service as the form. It saves only private run state and the result on your own machine. Reuse its directory and key to recover the same request; do not repeat an uncertain upload.
set -euo pipefail
: "${MODELUSE_TOKEN:?Set your existing workspace API key}"
CORE="${MODELUSE_CORE:-https://core.modeluse.com}"
WAV="${MODELUSE_WAV:-./short-clip.wav}"
RUN_DIR="${MODELUSE_RUN_DIR:-./modeluse-run}"
RECIPE_ID='clap-audio-enrichment-cpu-v1:laion--larger-clap-general:ada0c23a36c4e8582805bb38fec3905903f18b41'
umask 077
mkdir -p "$RUN_DIR"
PIPELINE_ID='private-audio-enrichment-v1'
# Resolve the exact enabled live pipeline before sending private audio.
curl --fail --silent --show-error --max-time 20 "$CORE/v1/pipelines/$PIPELINE_ID" > "$RUN_DIR/pipeline.json"
curl --fail --silent --show-error --max-time 20 "$CORE/v1/pipelines" > "$RUN_DIR/pipelines.json"
curl --fail --silent --show-error --max-time 20 "$CORE/v1/models" > "$RUN_DIR/models.json"
jq -e --arg recipe "$RECIPE_ID" --arg pipeline "$PIPELINE_ID" \
--slurpfile list "$RUN_DIR/pipelines.json" --slurpfile models "$RUN_DIR/models.json" '
. as $p | ($list[0].items | map(select(.id==$pipeline)) | first)==$p and
($models[0].items | any(.id=="laion--larger-clap-general" and
(.versions | any(.revision=="ada0c23a36c4e8582805bb38fec3905903f18b41" and
(.recipes | any(.id==$recipe and .adapter=="clap-audio-enrichment-cpu-v1" and
.available==true and .runnable==true and .meter=="noncash-dev-seconds-v1" and
.limits=={device:"cpu",format:"pcm_wav",min_seconds:2,max_seconds:10})))))) and
.id==$pipeline and .recipe_id==$recipe and .capability=="audio_enrichment" and
.availability.available==true and .availability.preview==true and .availability.status=="qualified_preview" and
.input_contract.content_type=="audio/wav" and .input_contract.format=="pcm_wav" and
.input_contract.sample_width_bits==16 and .input_contract.channels==[1,2] and
.input_contract.sample_rate_hz=={min:8000,max:48000} and
.input_contract.min_seconds==2 and .input_contract.max_seconds==10 and
.input_contract.max_bytes==6291456 and .input_contract.max_batch_size==1 and
.admission_contract.endpoint=="POST /v1/jobs" and
.admission_contract.meter=="noncash-dev-seconds-v1" and .admission_contract.payments_enabled==false and
.admission_contract.external_budget_usd==0 and .result_contract.schema=="modeluse-audio-enrichment-v1" and
.result_contract.quality_benchmark==false and .execution_contract.device=="cpu" and
.qualification.model_revision=="ada0c23a36c4e8582805bb38fec3905903f18b41" and
.qualification.license=="apache-2.0" and
.qualification.weight_sha256=="314eb00cce6ad68d25237b8446b659ccdb136ed4672c1bca470f142f72455026"
and .admission_contract.required_body==["pipeline_id","recipe_id","input_id"] and
.admission_contract.quote=="GET /v1/inputs/{id}/quote?recipe_id=<exact recipe>" and
.result_contract.taxonomy_id=="acoustic-content-four-v1" and .result_contract.labels==["a speaking voice","a singing voice","instrumental music","background music"] and
.result_contract.embedding_dimensions==512 and .result_contract.confidence==null and .result_contract.review_required==true and
.execution_contract.shared_with=="whisper-transcription-v1" and .execution_contract.activity_slots==1 and .execution_contract.inference_threads==1 and .execution_contract.network_downloads==false and .execution_contract.max_attempts==3 and .execution_contract.attempt_wall_seconds==180 and .execution_contract.attempt_cpu_seconds==120 and .execution_contract.attempt_address_space_bytes==4294967296 and .execution_contract.turnaround_sla==null and .input_contract.max_retained_inputs==32
' "$RUN_DIR/pipeline.json" >/dev/null
curl --fail --silent --show-error --max-time 20 -H "Authorization: Bearer $MODELUSE_TOKEN" \
"$CORE/v1/credits" > "$RUN_DIR/credits.json"
jq -e '.meter_version=="noncash-dev-seconds-v1" and .payments_enabled==false' "$RUN_DIR/credits.json" >/dev/null
# Upload once. Stop after an uncertain upload; do not silently repeat it.
if [ ! -f "$RUN_DIR/input.json" ]; then
jq -e ' .available>0 ' "$RUN_DIR/credits.json" >/dev/null || { echo 'No development audio units available. An existing operator-issued grant is required; sign-in and funding grant no units.' >&2; exit 1; }
[ ! -e "$RUN_DIR/upload.started" ] || { echo 'Inspect the uncertain upload before retrying.' >&2; exit 1; }
: > "$RUN_DIR/upload.started"
curl --fail --silent --show-error --max-time 30 -X POST "$CORE/v1/inputs" \
-H "Authorization: Bearer $MODELUSE_TOKEN" -H 'Content-Type: audio/wav' \
--data-binary "@$WAV" > "$RUN_DIR/input.tmp"
mv "$RUN_DIR/input.tmp" "$RUN_DIR/input.json"
fi
INPUT_ID=$(jq -er '.id' "$RUN_DIR/input.json")
curl --fail --silent --show-error --max-time 30 -H "Authorization: Bearer $MODELUSE_TOKEN" \
--get --data-urlencode "recipe_id=$RECIPE_ID" "$CORE/v1/inputs/$INPUT_ID/quote" > "$RUN_DIR/quote.json"
jq -e --arg recipe "$RECIPE_ID" --arg input "$INPUT_ID" --arg pipeline "$PIPELINE_ID" \
'.recipe_id==$recipe and .input_id==$input and .meter_version=="noncash-dev-seconds-v1" and .payments_enabled==false and
(.duration_seconds|type)=="number" and .duration_seconds>=2 and .duration_seconds<=10 and
(.units|type)=="number" and .units==(.duration_seconds|ceil) and .pipeline_id==$pipeline and (.input_sha256|test("^[a-f0-9]{64}quot;))' \
"$RUN_DIR/quote.json" >/dev/null
if [ ! -f "$RUN_DIR/request.json" ]; then
jq -e --slurpfile credits "$RUN_DIR/credits.json" \
'.units <= $credits[0].available' "$RUN_DIR/quote.json" >/dev/null || { echo 'This quote exceeds the available development audio units. No job was submitted.' >&2; exit 1; }
fi
cat "$RUN_DIR/quote.json"
# Keep this exact body and key for retries. Use a new directory for a deliberate new run.
if [ ! -f "$RUN_DIR/request.json" ]; then
jq -nc --arg recipe "$RECIPE_ID" --arg input "$INPUT_ID" \
--arg reference '' --arg service 'interactive' --arg pipeline "$PIPELINE_ID" \
'{pipeline_id:$pipeline,recipe_id:$recipe,input_id:$input,caller_reference:$reference,service:$service}' > "$RUN_DIR/request.json"
fi
# Never turn an older model-only retry into a pipeline request (or the reverse).
jq -e --arg recipe "$RECIPE_ID" --arg input "$INPUT_ID" --arg pipeline "$PIPELINE_ID" \
'.recipe_id==$recipe and .input_id==$input and (.pipeline_id // "")==$pipeline' "$RUN_DIR/request.json" >/dev/null
[ -s "$RUN_DIR/request-key" ] || python3 -c 'import uuid; print(uuid.uuid4())' > "$RUN_DIR/request-key"
REQUEST_KEY=$(cat "$RUN_DIR/request-key")
curl --fail --silent --show-error --max-time 30 -X POST "$CORE/v1/jobs" \
-H "Authorization: Bearer $MODELUSE_TOKEN" -H 'Content-Type: application/json' \
-H "Idempotency-Key: $REQUEST_KEY" --data-binary "@$RUN_DIR/request.json" > "$RUN_DIR/job.json"
JOB_ID=$(jq -er '.id' "$RUN_DIR/job.json")
jq -e --arg pipeline "$PIPELINE_ID" ' .pipeline_id==$pipeline and .policy.pipeline_id==$pipeline ' "$RUN_DIR/job.json" >/dev/null
# Bounded readback. A timeout leaves the durable job running: rerun to recover.
for poll in $(seq 1 150); do
curl --fail --silent --show-error --max-time 30 -H "Authorization: Bearer $MODELUSE_TOKEN" \
"$CORE/v1/jobs/$JOB_ID" > "$RUN_DIR/job.json"
STATUS=$(jq -er '.status' "$RUN_DIR/job.json")
case "$STATUS" in
completed) break ;;
failed|cancelled) echo "Job is $STATUS; inspect its private receipt." >&2; exit 1 ;;
*) sleep 2 ;;
esac
done
[ "$STATUS" = completed ] || { echo "Job remains $STATUS; recover the same directory or cancel the job explicitly." >&2; exit 1; }
jq -e --arg job "$JOB_ID" --arg recipe "$RECIPE_ID" --arg pipeline "$PIPELINE_ID" --arg input "$INPUT_ID" \
'.id==$job and .capability=="audio_enrichment" and .recipe_id==$recipe and .pipeline_id==$pipeline and .policy.pipeline_id==$pipeline and .input_id==$input' "$RUN_DIR/job.json" >/dev/null
ARTIFACT_ID=$(jq -er '.artifact_id' "$RUN_DIR/job.json")
curl --fail --silent --show-error --max-time 30 -H "Authorization: Bearer $MODELUSE_TOKEN" \
"$CORE/v1/artifacts/$ARTIFACT_ID" > "$RUN_DIR/result.tmp"
jq -e --arg job "$JOB_ID" --arg recipe "$RECIPE_ID" --arg pipeline "$PIPELINE_ID" --slurpfile quote "$RUN_DIR/quote.json" '
.schema=="modeluse-audio-enrichment-v1" and .job_id==$job and .recipe_id==$recipe and .pipeline_id==$pipeline and
.input_sha256==$quote[0].input_sha256 and .input_properties.duration_seconds==$quote[0].duration_seconds and
.model=={repo:"laion/larger_clap_general",revision:"ada0c23a36c4e8582805bb38fec3905903f18b41",weight_sha256:"314eb00cce6ad68d25237b8446b659ccdb136ed4672c1bca470f142f72455026"} and
.preprocessing=={"mono":"arithmetic_mean_channels","sample_rate_hz":48000,"resample":"librosa.resample:soxr_hq","normalization":"none","silence_trimming":false,"padding":"repeatpad","crop":"none","max_samples":480000} and .taxonomy_id=="acoustic-content-four-v1" and
.interpretation=={confidence:null,review_required:true,quality_benchmark:false} and
(.labels|length)==4 and ([.labels[].label]|sort)==(["a speaking voice","a singing voice","instrumental music","background music"]|sort) and
all(.labels[]; (.relative_score|type)=="number" and .relative_score>=0 and .relative_score<=1) and
(([.labels[].relative_score]|add)-1|fabs)<0.00001 and
(.labels|map(.relative_score))==(.labels|map(.relative_score)|sort|reverse) and
.audio_embedding.dimensions==512 and .audio_embedding.normalization=="l2" and (.audio_embedding.values|length)==512 and
all(.audio_embedding.values[];type=="number" and .>=-1 and .<=1) and
(([.audio_embedding.values[]|.*.]|add|sqrt)-1|fabs)<0.00001 and (.telemetry|type)=="object"
' "$RUN_DIR/result.tmp" >/dev/null
mv "$RUN_DIR/result.tmp" "$RUN_DIR/result.json"
printf '%s\n' "Private JSON saved: $RUN_DIR/result.json"To cancel accepted work, use its saved job ID with POST /v1/jobs/{job_id}/cancel and the same existing credential. Leaving this page or stopping the script does not cancel a job.
Use the same contract in your integration
Use your existing workspace session or bearer key and existing noncash development credits. Sign-in grants no units. One started audio second is one unit; quotes reserve nothing. Payments and paid service are unavailable in this preview.
Privacy, retention and recovery
Batch size is one; 16-bit PCM WAV, mono/stereo, 8–48 kHz, 2–10 seconds, up to 6 MiB. Inputs and results stay private and are not used for training. Core retains at most 32 inputs; operator cleanup applies, with no automatic deletion service.
Existing job read, cancel and private download endpoints apply. Recovery retries the original body and key. CLAP compares four fixed acoustic-content labels; relative scores are not calibrated confidence, probabilities or quality measurements. Review required. The 512-dimensional embedding stays in the private download.
Exact recipe and execution limits
clap-audio-enrichment-cpu-v1:laion--larger-clap-general:ada0c23a36c4e8582805bb38fec3905903f18b41
One CPU activity slot and inference thread; up to three attempts. Each attempt has a 180-second wall budget, 120-second CPU budget and 4 GiB address-space ceiling. CPU observations are measured receipts, not a service promise.
Inspect CLAP source and licence