{"openapi":"3.1.0","info":{"title":"Middleware API","version":"1.0.0","description":"Every API published through the gateway, behind one host and one access token. Send the token as `Authorization: Bearer <token>` or `X-API-Key: <token>`."},"servers":[{"url":"https://internal.audiclabs.com"}],"tags":[{"name":"noise-suppressor","description":"AudicLabs noise suppression. Removes background noise from speech recordings with the Audic models, one file at a time or in bulk."}],"paths":{"/v1/noise-suppressor/denoise":{"post":{"tags":["noise-suppressor"],"summary":"Remove noise","description":"Clean one audio file. Send it as multipart/form-data in the file field (WAV, FLAC, OGG, MP3, M4A, WebM or Opus, any sample rate, up to 100 MB). Returns the cleaned audio with processing stats in the X-NS-Stats header, or JSON with base64 audio when response=json.","operationId":"noise-suppressor_denoise","security":[{"bearerAuth":[]},{"apiKeyAuth":[]}],"responses":{"200":{"description":"Upstream response"},"401":{"description":"Missing or invalid access token"},"403":{"description":"Token lacks the required scope"},"429":{"description":"Rate limit exceeded"}},"x-credit-cost":1.0,"x-required-scope":"noise-suppressor:denoise","requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary","description":"The audio to clean."},"model":{"type":"string","example":"audic-2","description":"Model id from GET /models. audic-1 is fastest, audic-4 is the best 16 kHz quality, audic-2-hd keeps full-band 48 kHz audio. Defaults to audic-2.","enum":["audic-1","audic-2","audic-3","audic-4","audic-2-hd"]},"attenuation_limit_db":{"type":"number","example":0,"description":"Maximum noise reduction in dB, 0 to 100. 0 removes as much noise as possible; lower non-zero values keep more of the room tone."},"output_format":{"type":"string","example":"wav","description":"Encoding of the returned audio.","enum":["wav","flac"]},"keep_input_sample_rate":{"type":"boolean","example":true,"description":"Return audio at the sample rate of the uploaded file (true) or the model's native rate (false)."},"response":{"type":"string","example":"audio","description":"audio returns the file itself; json returns {filename, stats, audio_base64}.","enum":["audio","json"]}},"required":["file"]}}}}}},"/v1/noise-suppressor/denoise/batch":{"post":{"tags":["noise-suppressor"],"summary":"Remove noise (bulk)","description":"Clean up to 25 files in one call with the same settings. Repeat the files field once per file. Returns denoised.zip with every cleaned file plus manifest.json (per-file status, output name, stats or error). A file that fails is listed in the manifest and does not stop the batch. The X-NS-Batch header summarises files, succeeded, failed and processing time.","operationId":"noise-suppressor_denoise-batch","security":[{"bearerAuth":[]},{"apiKeyAuth":[]}],"responses":{"200":{"description":"Upstream response"},"401":{"description":"Missing or invalid access token"},"403":{"description":"Token lacks the required scope"},"429":{"description":"Rate limit exceeded"}},"x-credit-cost":1.0,"x-required-scope":"noise-suppressor:denoise-batch","requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"files":{"type":"array","items":{"type":"string","format":"binary"},"description":"The audio files to clean, up to 25. Repeat the field for each file."},"model":{"type":"string","example":"audic-2","description":"Model id from GET /models. audic-1 is fastest, audic-4 is the best 16 kHz quality, audic-2-hd keeps full-band 48 kHz audio. Defaults to audic-2.","enum":["audic-1","audic-2","audic-3","audic-4","audic-2-hd"]},"attenuation_limit_db":{"type":"number","example":0,"description":"Maximum noise reduction in dB, 0 to 100. 0 removes as much noise as possible; lower non-zero values keep more of the room tone."},"output_format":{"type":"string","example":"wav","description":"Encoding of the returned audio.","enum":["wav","flac"]},"keep_input_sample_rate":{"type":"boolean","example":true,"description":"Return audio at the sample rate of the uploaded file (true) or the model's native rate (false)."},"response":{"type":"string","example":"zip","description":"zip returns denoised.zip; json returns the manifest with audio_base64 per file.","enum":["zip","json"]}},"required":["files"]}}}}}},"/v1/noise-suppressor/health":{"get":{"tags":["noise-suppressor"],"summary":"Health","description":"Service status, version and installed models. Free; use it for monitoring.","operationId":"noise-suppressor_health","security":[{"bearerAuth":[]},{"apiKeyAuth":[]}],"responses":{"200":{"description":"Upstream response"},"401":{"description":"Missing or invalid access token"},"403":{"description":"Token lacks the required scope"},"429":{"description":"Rate limit exceeded"}},"x-credit-cost":0.0,"x-required-scope":"noise-suppressor:health"}},"/v1/noise-suppressor/models":{"get":{"tags":["noise-suppressor"],"summary":"List models","description":"Every Audic model with its label, sample rate, description and whether it is installed. Use an id as the model field of /denoise and /denoise/batch.","operationId":"noise-suppressor_models","security":[{"bearerAuth":[]},{"apiKeyAuth":[]}],"responses":{"200":{"description":"Upstream response"},"401":{"description":"Missing or invalid access token"},"403":{"description":"Token lacks the required scope"},"429":{"description":"Rate limit exceeded"}},"x-credit-cost":0.0,"x-required-scope":"noise-suppressor:models"}},"/v1/noise-suppressor/sample":{"get":{"tags":["noise-suppressor"],"summary":"Sample clip","description":"Download a short noisy 16 kHz speech clip (WAV) to try the API with.","operationId":"noise-suppressor_sample","security":[{"bearerAuth":[]},{"apiKeyAuth":[]}],"responses":{"200":{"description":"Upstream response"},"401":{"description":"Missing or invalid access token"},"403":{"description":"Token lacks the required scope"},"429":{"description":"Rate limit exceeded"}},"x-credit-cost":0.0,"x-required-scope":"noise-suppressor:sample"}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer"},"apiKeyAuth":{"type":"apiKey","in":"header","name":"X-API-Key"}}},"security":[{"bearerAuth":[]}]}