{ "info": { "name": "Bifrost V1 API - Complete", "description": "Complete Postman collection for all Bifrost /v1 endpoints with valid payloads", "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" }, "event": [ { "listen": "prerequest", "script": { "type": "text/javascript", "exec": [ "var requestName = pm.info.requestName;", "var retryKey = 'retry_' + requestName;", "var ciVal = pm.environment.get('CI');", "var maxRetries = (String(ciVal).toLowerCase() === 'true' || ciVal === '1' || ciVal === 1) ? 10 : 0;", "if (!pm.collectionVariables.has(retryKey)) {", " pm.collectionVariables.set(retryKey, 0);", "}", "pm.collectionVariables.set('current_request_name', requestName);", "pm.collectionVariables.set('max_retries', maxRetries);" ] } }, { "listen": "test", "script": { "type": "text/javascript", "exec": [ "var code = pm.response.code;", "var reqName = (pm.info && pm.info.requestName) ? pm.info.requestName : '';", "var operation = null;", "if (/get container file content|container.*file.*content/i.test(reqName)) { operation = 'container_file_content'; }", "else if (/delete container file/i.test(reqName)) { operation = 'container_file_delete'; }", "else if (/retrieve container file/i.test(reqName)) { operation = 'container_file_retrieve'; }", "else if (/list container files/i.test(reqName)) { operation = 'container_file_list'; }", "else if (/create container file.*reference|container file.*reference/i.test(reqName)) { operation = 'container_file_create_reference'; }", "else if (/create container file.*upload|container file.*upload|create container file/i.test(reqName)) { operation = 'container_file_create'; }", "else if (/delete container/i.test(reqName)) { operation = 'container_delete'; }", "else if (/retrieve container/i.test(reqName)) { operation = 'container_retrieve'; }", "else if (/list containers/i.test(reqName)) { operation = 'container_list'; }", "else if (/create container/i.test(reqName)) { operation = 'container_create'; }", "else if (/upload file.*for container reference|upload file.*container/i.test(reqName)) { operation = 'file_upload'; }", "else if (/^upload file$/i.test(reqName)) { operation = 'file_batch_input'; }", "else if (/list files/i.test(reqName)) { operation = 'file_list'; }", "else if (/get file content|file content/i.test(reqName)) { operation = 'file_content'; }", "else if (/retrieve file/i.test(reqName)) { operation = 'file_retrieve'; }", "else if (/delete file/i.test(reqName)) { operation = 'file_delete'; }", "else if (/create batch \\(inline|create batch.*inline/i.test(reqName)) { operation = 'batch_create'; }", "else if (/create batch \\(file-based|create batch.*file/i.test(reqName)) { operation = 'batch_create_file'; }", "else if (/cancel batch/i.test(reqName)) { operation = 'batch_cancel'; }", "else if (/list batches/i.test(reqName)) { operation = 'batch_list'; }", "else if (/retrieve batch/i.test(reqName)) { operation = 'batch_retrieve'; }", "else if (/get batch results|batch results/i.test(reqName)) { operation = 'batch_results'; }", "else if (/embedding/i.test(reqName)) { operation = 'embedding'; }", "else if (/speech|tts|text.to.speech|audio.*(out|generate)/i.test(reqName)) { operation = 'speech'; }", "else if (/transcription|whisper|stt|speech.to.text|audio.*(in|transcri)/i.test(reqName)) { operation = 'transcription'; }", "else if (/list.*models|models.*list/i.test(reqName)) { operation = 'list_models'; }", "else if (/generate.*image|generate image/i.test(reqName)) { operation = 'image_generation'; }", "else if (/image.*variation|create image variation|variation/i.test(reqName)) { operation = 'image_variation'; }", "else if (/edit.*image|image.*edit|edit image/i.test(reqName)) { operation = 'image_edit'; }", "else if (/create chat completion with tools|chat completion.*with tools/i.test(reqName)) { operation = 'chat_completions_with_tools'; }", "else if (/chat completion|create chat completion/i.test(reqName)) { operation = 'chat_completions'; }", "else if (/text completion|create text completion/i.test(reqName)) { operation = 'text_completion'; }", "else if (/create response with tools|response with tools/i.test(reqName)) { operation = 'responses_with_tools'; }", "else if (/create response/i.test(reqName)) { operation = 'responses'; }", "else if (/count.*token|token.*count/i.test(reqName)) { operation = 'count_tokens'; }", "else if (/video remix|remix.*video/i.test(reqName)) { operation = 'video_remix'; }", "else if (/video list|list.*video/i.test(reqName)) { operation = 'video_list'; }", "else if (/video download|download.*video/i.test(reqName)) { operation = 'video_download'; }", "else if (/video delete|delete.*video/i.test(reqName)) { operation = 'video_delete'; }", "else if (/video retrieve|retrieve.*video/i.test(reqName)) { operation = 'video_retrieve'; }", "else if (/video generation|generate.*video|create.*video/i.test(reqName)) { operation = 'video_generation'; }", "else if (/rerank/i.test(reqName)) { operation = 'rerank'; }", "var provider = ((pm.environment && pm.environment.get('provider')) || pm.collectionVariables.get('provider') || '').toLowerCase();", "var capsStr = (pm.globals && pm.globals.get('provider_capabilities')) || (pm.collectionVariables && pm.collectionVariables.get('provider_capabilities')) || '{}';", "var isInProviderUnsupported = false;", "try {", " var caps = JSON.parse(capsStr);", " var providerCaps = caps.providers && caps.providers[provider];", " if (operation && providerCaps && providerCaps[operation] === false) { isInProviderUnsupported = true; }", "} catch (e) {}", "var isDocumentedUnsupported = isInProviderUnsupported;", "var requestNameRetry = pm.collectionVariables.get('current_request_name');", "var retryKey = 'retry_' + requestNameRetry;", "var currentRetry = parseInt(pm.collectionVariables.get(retryKey) || '0', 10);", "var maxRetries = parseInt(pm.collectionVariables.get('max_retries') || '0', 10);", "var failedTests = code < 200 || code > 299;", "var respText = pm.response.text() || '';", "var isBatchResultsExpectedError = (operation === 'batch_results' && failedTests && code !== 401 && code !== 403 && (code === 404 || (code >= 400 && code < 500 && /not found|does not exist|could not find|could not parse|validation error|failed to satisfy constraint|invalid/i.test(respText))));", "var isBatchCancelExpected409 = (operation === 'batch_cancel' && code === 409);", "var hasFailures = failedTests && !isDocumentedUnsupported && !isBatchResultsExpectedError && !isBatchCancelExpected409;", "if (hasFailures && maxRetries > 0 && currentRetry < maxRetries) {", " pm.collectionVariables.set(retryKey, String(currentRetry + 1));", " var delayMs = Math.min(1000 * Math.pow(2, currentRetry), 30000);", " var end = Date.now() + delayMs;", " while (Date.now() < end) {}", " console.log('[RETRY] Request \"' + requestNameRetry + '\" failed (attempt ' + (currentRetry + 1) + '/' + maxRetries + '). Retrying after ' + delayMs + 'ms...');", " if (typeof postman !== 'undefined' && postman.setNextRequest) { postman.setNextRequest(requestNameRetry); }", "} else {", " pm.collectionVariables.set(retryKey, '0');", " if (hasFailures && currentRetry >= maxRetries && maxRetries > 0) {", " console.log('[RETRY] Request \"' + requestNameRetry + '\" failed after ' + maxRetries + ' retries. Moving on.');", " }", " if (isBatchResultsExpectedError) {", " pm.test('BatchResults: expected 404/validation for fake batch ID', function() { pm.expect(true).to.be.true; });", " } else if (isBatchCancelExpected409) {", " pm.test('BatchCancel: 409 Conflict (batch already completed) is acceptable', function() { pm.expect(true).to.be.true; });", " } else if (code >= 200 && code <= 299) {", " pm.test('Status is 2xx', function() { pm.expect(code >= 200 && code <= 299).to.be.true; });", " } else {", " pm.test('Or documented unsupported (allowed request types)', function() {", " pm.expect(isDocumentedUnsupported, 'Non-2xx response must be a documented unsupported error for this request type (operation must be in provider_capabilities.json for this provider)').to.be.true;", " });", " }", "}" ] } } ], "variable": [ { "key": "base_url", "value": "http://localhost:8080", "type": "string" }, { "key": "provider", "value": "openai", "type": "string" }, { "key": "model", "value": "gpt-4", "type": "string" }, { "key": "chat_model", "value": "gpt-4", "type": "string" }, { "key": "text_completion_model", "value": "gpt-4", "type": "string" }, { "key": "responses_model", "value": "gpt-4", "type": "string" }, { "key": "embedding_model", "value": "text-embedding-3-small", "type": "string" }, { "key": "speech_model", "value": "tts-1", "type": "string" }, { "key": "transcription_model", "value": "whisper-1", "type": "string" }, { "key": "image_model", "value": "dall-e-3", "type": "string" }, { "key": "image_edit_model", "value": "", "type": "string" }, { "key": "image_variation_model", "value": "dall-e-2", "type": "string" }, { "key": "image_edit_type", "value": "", "type": "string" }, { "key": "batch_file", "value": "fixtures/sample.jsonl", "type": "string" }, { "key": "batch_id", "value": "batch_123", "type": "string" }, { "key": "file_id", "value": "file_123", "type": "string" }, { "key": "file_id_encoded", "value": "file_123", "type": "string" }, { "key": "container_id", "value": "container_123", "type": "string" }, { "key": "container_file_id", "value": "container_file_123", "type": "string" }, { "key": "file_id_ref", "value": "file_123", "type": "string" }, { "key": "voice", "value": "alloy", "type": "string" }, { "key": "speech_input", "value": "Generate a speech for this text", "type": "string" }, { "key": "completions_prompt", "value": "1, 2, 3, 4, ", "type": "string" } ], "item": [ { "name": "Models", "item": [ { "name": "List Models", "event": [ { "listen": "prerequest", "script": { "exec": [ "var provider = ((pm.environment && pm.environment.get('provider')) || pm.variables.get('provider') || pm.collectionVariables.get('provider') || '').toLowerCase();", "if (provider === 'perplexity') { postman.setNextRequest('Create Chat Completion'); }" ], "type": "text/javascript" } } ], "request": { "method": "GET", "header": [], "url": { "raw": "{{base_url}}/v1/models?provider={{provider}}", "host": ["{{base_url}}"], "path": ["v1", "models"], "query": [{"key": "provider", "value": "{{provider}}"}] } } } ] }, { "name": "Chat Completions", "item": [ { "name": "Create Chat Completion", "request": { "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": { "mode": "raw", "raw": "{\n \"model\": \"{{provider}}/{{chat_model}}\",\n \"messages\": [\n {\n \"role\": \"user\",\n \"content\": \"Hello, how are you?\"\n }\n ],\n \"temperature\": 0.7,\n \"max_completion_tokens\": 1000,\n \"stream\": false\n}" }, "url": { "raw": "{{base_url}}/v1/chat/completions", "host": ["{{base_url}}"], "path": ["v1", "chat", "completions"] } } }, { "name": "Create Chat Completion with Tools", "event": [ { "listen": "prerequest", "script": { "exec": [ "var provider = ((pm.environment && pm.environment.get('provider')) || pm.variables.get('provider') || pm.collectionVariables.get('provider') || '').toLowerCase();", "var capsStr = (pm.globals && pm.globals.get('provider_capabilities')) || (pm.collectionVariables && pm.collectionVariables.get('provider_capabilities')) || '{}';", "try {", " var caps = JSON.parse(capsStr);", " var providerCaps = caps.providers && caps.providers[provider];", " var skip = providerCaps && providerCaps.chat_completions_with_tools === false;", " if (skip) {", " if (pm.execution && typeof pm.execution.setNextRequest === 'function') { pm.execution.setNextRequest('Create Text Completion'); }", " else if (typeof postman !== 'undefined' && postman.setNextRequest) { postman.setNextRequest('Create Text Completion'); }", " if (pm.execution && typeof pm.execution.skipRequest === 'function') { pm.execution.skipRequest(); }", " }", "} catch (e) {}" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": { "mode": "raw", "raw": "{\n \"model\": \"{{provider}}/{{chat_model}}\",\n \"messages\": [\n {\n \"role\": \"user\",\n \"content\": \"What's the weather like in india? Use the get_weather tool.\"\n }\n ],\n \"tools\": [\n {\n \"type\": \"function\",\n \"function\": {\n \"name\": \"get_weather\",\n \"description\": \"Get the current weather for a location\",\n \"parameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"location\": {\n \"type\": \"string\",\n \"description\": \"City name\"\n }\n },\n \"required\": [\"location\"]\n }\n }\n }\n ],\n \"temperature\": 0.7\n}" }, "url": { "raw": "{{base_url}}/v1/chat/completions", "host": ["{{base_url}}"], "path": ["v1", "chat", "completions"] } } } ] }, { "name": "Text Completions", "item": [ { "name": "Create Text Completion", "event": [ { "listen": "prerequest", "script": { "exec": [ "var provider = ((pm.environment && pm.environment.get('provider')) || pm.variables.get('provider') || pm.collectionVariables.get('provider') || '').toLowerCase();", "if (provider === 'openai' || provider === 'azure') {", " postman.setNextRequest('Create Response');", "}" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": { "mode": "raw", "raw": "{\n \"model\": \"{{provider}}/{{text_completion_model}}\",\n \"prompt\": \"{{completions_prompt}}\",\n \"max_tokens\": 3\n}" }, "url": { "raw": "{{base_url}}/v1/completions", "host": ["{{base_url}}"], "path": ["v1", "completions"] } } } ] }, { "name": "Responses", "item": [ { "name": "Create Response", "request": { "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": { "mode": "raw", "raw": "{\n \"model\": \"{{provider}}/{{responses_model}}\",\n \"input\": \"Hey, this is bifrost. can you greet me using the greet tool?\",\n \"temperature\": 1.0,\n \"max_output_tokens\": 500\n}" }, "url": { "raw": "{{base_url}}/v1/responses", "host": ["{{base_url}}"], "path": ["v1", "responses"] } } }, { "name": "Create Response with Tools", "request": { "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": { "mode": "raw", "raw": "{\n \"model\": \"{{provider}}/{{responses_model}}\",\n \"input\": \"What is 2 + 2? Use the add tool.\",\n \"tools\": [\n {\n \"type\": \"function\",\n \"name\": \"add\",\n \"description\": \"Add two numbers and return the sum\",\n \"parameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"a\": {\"type\": \"number\", \"description\": \"First number\"},\n \"b\": {\"type\": \"number\", \"description\": \"Second number\"}\n },\n \"required\": [\"a\", \"b\"]\n }\n }\n ],\n \"temperature\": 0.5\n}" }, "url": { "raw": "{{base_url}}/v1/responses", "host": ["{{base_url}}"], "path": ["v1", "responses"] } } } ] }, { "name": "Embeddings", "item": [ { "name": "Create Embedding", "request": { "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": { "mode": "raw", "raw": "{\n \"model\": \"{{provider}}/{{embedding_model}}\",\n \"input\": \"Hello world\",\n \"encoding_format\": \"float\"\n}" }, "url": { "raw": "{{base_url}}/v1/embeddings", "host": ["{{base_url}}"], "path": ["v1", "embeddings"] } } }, { "name": "Create Embedding (Multiple Inputs)", "request": { "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": { "mode": "raw", "raw": "{\n \"model\": \"{{provider}}/{{embedding_model}}\",\n \"input\": [\n \"Hello world\",\n \"Goodbye world\",\n \"Machine learning is fascinating\"\n ],\n \"encoding_format\": \"float\"}" }, "url": { "raw": "{{base_url}}/v1/embeddings", "host": ["{{base_url}}"], "path": ["v1", "embeddings"] } } } ] }, { "name": "Audio", "item": [ { "name": "Create Speech", "request": { "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": { "mode": "raw", "raw": "{\n \"model\": \"{{provider}}/{{speech_model}}\",\n \"input\": \"{{speech_input}}\",\n \"voice\": \"{{voice}}\"}" }, "url": { "raw": "{{base_url}}/v1/audio/speech", "host": ["{{base_url}}"], "path": ["v1", "audio", "speech"] } } }, { "name": "Create Transcription", "request": { "method": "POST", "header": [], "body": { "mode": "formdata", "formdata": [ { "key": "model", "value": "{{provider}}/{{transcription_model}}", "type": "text" }, { "key": "file", "type": "file", "src": "fixtures/sample.mp3" }, { "key": "response_format", "value": "json", "type": "text" }, { "key": "language", "value": "en", "type": "text" } ] }, "url": { "raw": "{{base_url}}/v1/audio/transcriptions", "host": ["{{base_url}}"], "path": ["v1", "audio", "transcriptions"] } } } ] }, { "name": "Images", "item": [ { "name": "Generate Image", "request": { "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": { "mode": "raw", "raw": "{\n \"model\": \"{{provider}}/{{image_model}}\",\n \"prompt\": \"A serene mountain landscape at sunset\"}" }, "url": { "raw": "{{base_url}}/v1/images/generations", "host": ["{{base_url}}"], "path": ["v1", "images", "generations"] } } }, { "name": "Edit Image", "event": [ { "listen": "prerequest", "script": { "exec": [ "var editModel = (pm.environment && pm.environment.get('image_edit_model')) || pm.collectionVariables.get('image_edit_model') || (pm.environment && pm.environment.get('image_model')) || pm.collectionVariables.get('image_model') || 'dall-e-2';", "pm.collectionVariables.set('image_model_for_edit', editModel);", "var provider = ((pm.environment && pm.environment.get('provider')) || pm.collectionVariables.get('provider') || pm.variables.get('provider') || '').toLowerCase();", "pm.collectionVariables.set('image_edit_type', (provider === 'bedrock') ? 'background_removal' : '');", "var variationModel = (pm.environment && pm.environment.get('image_variation_model')) || pm.collectionVariables.get('image_variation_model') || (pm.environment && pm.environment.get('image_edit_model')) || pm.collectionVariables.get('image_edit_model') || (pm.environment && pm.environment.get('image_model')) || pm.collectionVariables.get('image_model') || 'dall-e-2';", "pm.collectionVariables.set('image_model_for_variation', variationModel);", "pm.collectionVariables.set('image_variation_model', variationModel);" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [], "body": { "mode": "formdata", "formdata": [ { "key": "model", "value": "{{provider}}/{{image_model_for_edit}}", "type": "text" }, { "key": "image[]", "type": "file", "src": "fixtures/sample.png" }, { "key": "prompt", "value": "Add a sunset to this image", "type": "text" }, { "key": "type", "value": "{{image_edit_type}}", "type": "text", "disabled": false } ] }, "url": { "raw": "{{base_url}}/v1/images/edits", "host": ["{{base_url}}"], "path": ["v1", "images", "edits"] } } }, { "name": "Create Image Variation", "request": { "method": "POST", "header": [], "body": { "mode": "formdata", "formdata": [ { "key": "model", "value": "{{provider}}/{{image_variation_model}}", "type": "text" }, { "key": "image", "type": "file", "src": "fixtures/sample.png" }, { "key": "n", "value": "1", "type": "text" }, { "key": "size", "value": "1024x1024", "type": "text" } ] }, "url": { "raw": "{{base_url}}/v1/images/variations", "host": ["{{base_url}}"], "path": ["v1", "images", "variations"] } } } ] }, { "name": "Count Tokens", "item": [ { "name": "Count Tokens", "request": { "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": { "mode": "raw", "raw": "{\n \"model\": \"{{provider}}/{{responses_model}}\",\n \"input\": [\n {\n \"role\": \"user\",\n \"content\": \"How many tokens is this message?\"\n }\n ]\n}" }, "url": { "raw": "{{base_url}}/v1/responses/input_tokens", "host": ["{{base_url}}"], "path": ["v1", "responses", "input_tokens"] } } } ] }, { "name": "Files", "item": [ { "name": "Upload File", "event": [ { "listen": "prerequest", "script": { "exec": [ "var provider = ((pm.environment && pm.environment.get('provider')) || pm.collectionVariables.get('provider') || pm.variables.get('provider') || '').toLowerCase();", "var batchFile = (provider === 'gemini') ? 'fixtures/sample-gemini.jsonl' : 'fixtures/sample.jsonl';", "pm.collectionVariables.set('batch_file', batchFile);", "var s3Bucket = (pm.environment && pm.environment.get('s3_bucket')) || pm.collectionVariables.get('s3_bucket') || '';", "pm.collectionVariables.set('bedrock_s3_bucket', (provider === 'bedrock' && s3Bucket) ? s3Bucket : '');", "if (provider === 'replicate') {", " pm.collectionVariables.set('replicate_owner', (pm.environment && pm.environment.get('replicate_owner')) || pm.collectionVariables.get('replicate_owner') || '');", " pm.collectionVariables.set('replicate_expiry', (pm.environment && pm.environment.get('replicate_expiry')) || '1830297599');", "} else {", " pm.collectionVariables.set('replicate_owner', '');", " pm.collectionVariables.set('replicate_expiry', '');", "}" ], "type": "text/javascript" } }, { "listen": "test", "script": { "exec": [ "var code = pm.response.code;", "if (code >= 200 && code <= 299) {", " try {", " var j = pm.response.json();", " var id = (j && (j.id || j.file_id)) || (j && j.data && (j.data.id || j.data.file_id));", " if (id) {", " id = String(id).replace(/^files\\//, '');", " pm.collectionVariables.set('file_id', id);", " if (pm.environment) { pm.environment.set('file_id', id); }", " pm.collectionVariables.set('file_deleted', 'false');", " if (pm.environment) { pm.environment.set('file_deleted', 'false'); }", " }", " } catch (e) {}", "}" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [], "body": { "mode": "formdata", "formdata": [ { "key": "file", "type": "file", "src": "{{batch_file}}" }, { "key": "purpose", "value": "batch", "type": "text" }, { "key": "provider", "value": "{{provider}}", "type": "text" }, { "key": "s3_bucket", "value": "{{bedrock_s3_bucket}}", "type": "text", "disabled": false }, { "key": "owner", "value": "{{replicate_owner}}", "type": "text", "disabled": false }, { "key": "expiry", "value": "{{replicate_expiry}}", "type": "text", "disabled": false } ] }, "url": { "raw": "{{base_url}}/v1/files", "host": ["{{base_url}}"], "path": ["v1", "files"] } } }, { "name": "List Files", "request": { "method": "GET", "header": [], "url": { "raw": "{{base_url}}/v1/files?x-model-provider={{provider}}", "host": ["{{base_url}}"], "path": ["v1", "files"], "query": [{"key": "x-model-provider", "value": "{{provider}}"}] } } }, { "name": "Retrieve File", "event": [ { "listen": "prerequest", "script": { "exec": [ "var provider = ((pm.environment && pm.environment.get('provider')) || pm.variables.get('provider') || pm.collectionVariables.get('provider') || '').toLowerCase();", "var fileId = pm.collectionVariables.get('file_id') || pm.variables.get('file_id') || (pm.environment && pm.environment.get('file_id')) || '';", "if (provider === 'bedrock' && (!fileId || fileId === 'file_123' || !/^s3:\\/\\//.test(fileId))) { if (pm.execution && typeof pm.execution.setNextRequest === 'function') { pm.execution.setNextRequest('Get File Content'); } else if (typeof postman !== 'undefined' && postman.setNextRequest) { postman.setNextRequest('Get File Content'); } if (pm.execution && typeof pm.execution.skipRequest === 'function') { pm.execution.skipRequest(); } }", "var fileIdEnc = (provider === 'bedrock' && fileId && /^s3:\\/\\//.test(fileId)) ? encodeURIComponent(fileId) : fileId;", "pm.collectionVariables.set('file_id_encoded', fileIdEnc);" ], "type": "text/javascript" } } ], "request": { "method": "GET", "header": [], "url": { "raw": "{{base_url}}/v1/files/{{file_id_encoded}}?provider={{provider}}", "host": ["{{base_url}}"], "path": ["v1", "files", "{{file_id_encoded}}"], "query": [{"key": "provider", "value": "{{provider}}"}] } } }, { "name": "Get File Content", "event": [ { "listen": "prerequest", "script": { "exec": [ "var provider = ((pm.environment && pm.environment.get('provider')) || pm.variables.get('provider') || pm.collectionVariables.get('provider') || '').toLowerCase();", "var fileId = pm.collectionVariables.get('file_id') || pm.variables.get('file_id') || (pm.environment && pm.environment.get('file_id')) || '';", "if (provider === 'bedrock' && (!fileId || fileId === 'file_123' || !/^s3:\\/\\//.test(fileId))) { if (pm.execution && typeof pm.execution.setNextRequest === 'function') { pm.execution.setNextRequest('Upload File (for container reference)'); } else if (typeof postman !== 'undefined' && postman.setNextRequest) { postman.setNextRequest('Upload File (for container reference)'); } if (pm.execution && typeof pm.execution.skipRequest === 'function') { pm.execution.skipRequest(); } }", "var fileIdEnc = (provider === 'bedrock' && fileId && /^s3:\\/\\//.test(fileId)) ? encodeURIComponent(fileId) : fileId;", "pm.collectionVariables.set('file_id_encoded', fileIdEnc);" ], "type": "text/javascript" } } ], "request": { "method": "GET", "header": [], "url": { "raw": "{{base_url}}/v1/files/{{file_id_encoded}}/content?provider={{provider}}", "host": ["{{base_url}}"], "path": ["v1", "files", "{{file_id_encoded}}", "content"], "query": [{"key": "provider", "value": "{{provider}}"}] } } }, { "name": "Upload File (for container reference)", "event": [ { "listen": "prerequest", "script": { "exec": [ "var provider = ((pm.environment && pm.environment.get('provider')) || pm.collectionVariables.get('provider') || pm.variables.get('provider') || '').toLowerCase();", "if (provider === 'replicate') {", " pm.collectionVariables.set('replicate_owner', (pm.environment && pm.environment.get('replicate_owner')) || pm.collectionVariables.get('replicate_owner') || '');", " pm.collectionVariables.set('replicate_expiry', (pm.environment && pm.environment.get('replicate_expiry')) || '1830297599');", "} else {", " pm.collectionVariables.set('replicate_owner', '');", " pm.collectionVariables.set('replicate_expiry', '');", "}" ], "type": "text/javascript" } }, { "listen": "test", "script": { "exec": [ "var code = pm.response.code;", "if (code >= 200 && code <= 299) {", " try {", " var j = pm.response.json();", " var id = (j && (j.id || j.file_id)) || (j && j.data && (j.data.id || j.data.file_id));", " if (id) {", " id = String(id).replace(/^files\\//, '');", " pm.collectionVariables.set('file_id_ref', id);", " if (pm.environment) { pm.environment.set('file_id_ref', id); }", " }", " } catch (e) {}", "}" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [], "body": { "mode": "formdata", "formdata": [ { "key": "file", "type": "file", "src": "fixtures/sample.txt" }, { "key": "purpose", "value": "assistants", "type": "text" }, { "key": "provider", "value": "{{provider}}", "type": "text" }, { "key": "owner", "value": "{{replicate_owner}}", "type": "text", "disabled": false }, { "key": "expiry", "value": "{{replicate_expiry}}", "type": "text", "disabled": false } ] }, "url": { "raw": "{{base_url}}/v1/files", "host": ["{{base_url}}"], "path": ["v1", "files"] } } } ] }, { "name": "Batches", "item": [ { "name": "Create Batch (Inline Requests)", "event": [ { "listen": "prerequest", "script": { "exec": [ "var provider = ((pm.environment && pm.environment.get('provider')) || pm.variables.get('provider') || pm.collectionVariables.get('provider') || '').toLowerCase();", "if (provider === 'bedrock') {", " var outputS3Uri = (pm.environment && pm.environment.get('output_s3_uri')) || pm.collectionVariables.get('output_s3_uri') || '';", " var roleArn = (pm.environment && pm.environment.get('role_arn')) || pm.collectionVariables.get('role_arn') || '';", " var body = JSON.parse(pm.request.body.raw);", " if (outputS3Uri) body.output_s3_uri = outputS3Uri;", " if (roleArn) body.role_arn = roleArn;", " pm.request.body.raw = JSON.stringify(body);", "}" ], "type": "text/javascript" } }, { "listen": "test", "script": { "exec": [ "var code = pm.response.code;", "if (code >= 200 && code <= 299) {", " var j = pm.response.json();", " if (j && j.id) { var bid = String(j.id).replace(/^batches\\//, ''); pm.collectionVariables.set('batch_id', bid); if (pm.environment) { pm.environment.set('batch_id', bid); } }", "}" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": { "mode": "raw", "raw": "{\n \"model\": \"{{provider}}/{{chat_model}}\",\n \"endpoint\": \"/v1/chat/completions\",\n \"completion_window\": \"24h\",\n \"requests\": [\n {\n \"custom_id\": \"test-request-1\",\n \"body\": {\n \"model\": \"{{chat_model}}\",\n \"messages\": [{\"role\": \"user\", \"content\": \"Say hello\"}]\n }\n }\n ],\n \"metadata\": {\"batch_type\": \"testing\"}\n}" }, "url": { "raw": "{{base_url}}/v1/batches", "host": ["{{base_url}}"], "path": ["v1", "batches"] } } }, { "name": "List Batches", "request": { "method": "GET", "header": [], "url": { "raw": "{{base_url}}/v1/batches?provider={{provider}}&limit=10", "host": ["{{base_url}}"], "path": ["v1", "batches"], "query": [ {"key": "provider", "value": "{{provider}}"}, {"key": "limit", "value": "10"} ] } } }, { "name": "Retrieve Batch", "event": [ { "listen": "prerequest", "script": { "exec": [ "var provider = ((pm.environment && pm.environment.get('provider')) || pm.variables.get('provider') || pm.collectionVariables.get('provider') || '').toLowerCase();", "var batchId = pm.collectionVariables.get('batch_id') || pm.variables.get('batch_id') || (pm.environment && pm.environment.get('batch_id')) || '';", "if (provider === 'bedrock' && (!batchId || batchId === 'batch_123' || !/^arn:aws:bedrock:/.test(batchId))) { if (pm.execution && typeof pm.execution.setNextRequest === 'function') { pm.execution.setNextRequest('Get Batch Results'); } else if (typeof postman !== 'undefined' && postman.setNextRequest) { postman.setNextRequest('Get Batch Results'); } if (pm.execution && typeof pm.execution.skipRequest === 'function') { pm.execution.skipRequest(); } }" ], "type": "text/javascript" } } ], "request": { "method": "GET", "header": [], "url": { "raw": "{{base_url}}/v1/batches/{{batch_id}}?provider={{provider}}", "host": ["{{base_url}}"], "path": ["v1", "batches", "{{batch_id}}"], "query": [{"key": "provider", "value": "{{provider}}"}] } } }, { "name": "Cancel Batch", "event": [ { "listen": "prerequest", "script": { "exec": [ "var provider = ((pm.environment && pm.environment.get('provider')) || pm.variables.get('provider') || pm.collectionVariables.get('provider') || '').toLowerCase();", "var batchId = pm.collectionVariables.get('batch_id') || pm.variables.get('batch_id') || (pm.environment && pm.environment.get('batch_id')) || '';", "if (provider === 'bedrock' && (!batchId || batchId === 'batch_123' || !/^arn:aws:bedrock:/.test(batchId))) { if (pm.execution && typeof pm.execution.setNextRequest === 'function') { pm.execution.setNextRequest('Get Batch Results'); } else if (typeof postman !== 'undefined' && postman.setNextRequest) { postman.setNextRequest('Get Batch Results'); } if (pm.execution && typeof pm.execution.skipRequest === 'function') { pm.execution.skipRequest(); } }" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [], "url": { "raw": "{{base_url}}/v1/batches/{{batch_id}}/cancel?provider={{provider}}", "host": ["{{base_url}}"], "path": ["v1", "batches", "{{batch_id}}", "cancel"], "query": [{"key": "provider", "value": "{{provider}}"}] } } }, { "name": "Get Batch Results", "event": [ { "listen": "prerequest", "script": { "exec": [ "var provider = ((pm.environment && pm.environment.get('provider')) || pm.variables.get('provider') || pm.collectionVariables.get('provider') || '').toLowerCase();", "var fakeBatchId = 'batch_test-batch-id';", "if (provider === 'anthropic') { fakeBatchId = 'msgbatch_test-batch-id'; }", "else if (provider === 'openai' || provider === 'azure') { fakeBatchId = 'batch_test-batch-id'; }", "else if (provider === 'bedrock') { fakeBatchId = 'arn:aws:bedrock:us-east-1:791152688819:model-invocation-job/aaaaaaaaaaaa'; }", "else if (provider === 'gemini') { fakeBatchId = 'aaaaaaaaaaaa'; }", "pm.collectionVariables.set('batch_id', fakeBatchId);", "if (pm.environment) { pm.environment.set('batch_id', fakeBatchId); }" ], "type": "text/javascript" } } ], "request": { "method": "GET", "header": [], "url": { "raw": "{{base_url}}/v1/batches/{{batch_id}}/results?provider={{provider}}", "host": ["{{base_url}}"], "path": ["v1", "batches", "{{batch_id}}", "results"], "query": [{"key": "provider", "value": "{{provider}}"}] } } }, { "name": "Create Batch (File-based)", "event": [ { "listen": "prerequest", "script": { "exec": [ "var provider = ((pm.environment && pm.environment.get('provider')) || pm.variables.get('provider') || pm.collectionVariables.get('provider') || '').toLowerCase();", "var fileId = pm.collectionVariables.get('file_id') || pm.variables.get('file_id') || (pm.environment && pm.environment.get('file_id')) || '';", "if (provider === 'bedrock' && (!fileId || fileId === 'file_123' || !/^s3:\\/\\//.test(fileId))) { if (pm.execution && typeof pm.execution.setNextRequest === 'function') { pm.execution.setNextRequest('Delete File'); } else if (typeof postman !== 'undefined' && postman.setNextRequest) { postman.setNextRequest('Delete File'); } if (pm.execution && typeof pm.execution.skipRequest === 'function') { pm.execution.skipRequest(); } }", "if (provider === 'bedrock') {", " var outputS3Uri = (pm.environment && pm.environment.get('output_s3_uri')) || pm.collectionVariables.get('output_s3_uri') || '';", " var roleArn = (pm.environment && pm.environment.get('role_arn')) || pm.collectionVariables.get('role_arn') || '';", " var body = JSON.parse(pm.request.body.raw);", " if (outputS3Uri) body.output_s3_uri = outputS3Uri;", " if (roleArn) body.role_arn = roleArn;", " pm.request.body.raw = JSON.stringify(body);", "}" ], "type": "text/javascript" } }, { "listen": "test", "script": { "exec": [ "var code = pm.response.code;", "if (code >= 200 && code <= 299) {", " var j = pm.response.json();", " if (j && j.id) { var bid = String(j.id).replace(/^batches\\//, ''); pm.collectionVariables.set('batch_id', bid); if (pm.environment) { pm.environment.set('batch_id', bid); } }", "}" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": { "mode": "raw", "raw": "{\n \"model\": \"{{provider}}/{{chat_model}}\",\n \"input_file_id\": \"{{file_id}}\",\n \"endpoint\": \"/v1/chat/completions\",\n \"completion_window\": \"24h\",\n \"metadata\": {\"batch_type\": \"production\"}\n}" }, "url": { "raw": "{{base_url}}/v1/batches", "host": ["{{base_url}}"], "path": ["v1", "batches"] } } }, { "name": "Delete File", "event": [ { "listen": "prerequest", "script": { "exec": [ "// Only delete file_id (main file). file_id_ref is used by Create Container File (Reference) and must remain.", "var provider = ((pm.environment && pm.environment.get('provider')) || pm.variables.get('provider') || pm.collectionVariables.get('provider') || '').toLowerCase();", "var fid = pm.collectionVariables.get('file_id');", "if (pm.environment) { var e = pm.environment.get('file_id'); if (e) fid = e; }", "if (fid === 'file_123' || !fid) { if (pm.execution && typeof pm.execution.skipRequest === 'function') { pm.execution.skipRequest(); } else if (typeof postman !== 'undefined' && postman.setNextRequest) { postman.setNextRequest('Create Container'); } }", "var fileIdEnc = (provider === 'bedrock' && fid && /^s3:\\/\\//.test(fid)) ? encodeURIComponent(fid) : fid;", "pm.collectionVariables.set('file_id_encoded', fileIdEnc);" ], "type": "text/javascript" } } ], "request": { "method": "DELETE", "header": [], "url": { "raw": "{{base_url}}/v1/files/{{file_id_encoded}}?provider={{provider}}", "host": ["{{base_url}}"], "path": ["v1", "files", "{{file_id_encoded}}"], "query": [{"key": "provider", "value": "{{provider}}"}] } } } ] }, { "name": "Containers", "item": [ { "name": "Create Container", "event": [ { "listen": "test", "script": { "exec": [ "var code = pm.response.code;", "if (code >= 200 && code <= 299) {", " var j = pm.response.json();", " if (j && j.id) { pm.collectionVariables.set('container_id', j.id); if (pm.environment) { pm.environment.set('container_id', j.id); } }", "}" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": { "mode": "raw", "raw": "{\n \"provider\": \"{{provider}}\",\n \"name\": \"bifrost-test-container\"\n}" }, "url": { "raw": "{{base_url}}/v1/containers", "host": ["{{base_url}}"], "path": ["v1", "containers"] } } }, { "name": "List Containers", "request": { "method": "GET", "header": [], "url": { "raw": "{{base_url}}/v1/containers?provider={{provider}}", "host": ["{{base_url}}"], "path": ["v1", "containers"], "query": [{"key": "provider", "value": "{{provider}}"}] } } }, { "name": "Retrieve Container", "request": { "method": "GET", "header": [], "url": { "raw": "{{base_url}}/v1/containers/{{container_id}}?provider={{provider}}", "host": ["{{base_url}}"], "path": ["v1", "containers", "{{container_id}}"], "query": [{"key": "provider", "value": "{{provider}}"}] } } }, { "name": "Create Container File (Upload)", "event": [ { "listen": "test", "script": { "exec": [ "var code = pm.response.code;", "if (code >= 200 && code <= 299) {", " var j = pm.response.json();", " if (j && j.id) { pm.collectionVariables.set('container_file_id', j.id); if (pm.environment) { pm.environment.set('container_file_id', j.id); } }", "}" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [], "body": { "mode": "formdata", "formdata": [ { "key": "file", "type": "file", "src": "fixtures/sample.txt" }, { "key": "file_path", "value": "/test-file.txt", "type": "text" } ] }, "url": { "raw": "{{base_url}}/v1/containers/{{container_id}}/files?provider={{provider}}", "host": ["{{base_url}}"], "path": ["v1", "containers", "{{container_id}}", "files"], "query": [{"key": "provider", "value": "{{provider}}"}] } } }, { "name": "Create Container File (Reference)", "request": { "method": "POST", "header": [ { "key": "Content-Type", "value": "application/json" } ], "body": { "mode": "raw", "raw": "{\n \"file_id\": \"{{file_id_ref}}\",\n \"file_path\": \"/data/file.txt\"\n}" }, "url": { "raw": "{{base_url}}/v1/containers/{{container_id}}/files?provider={{provider}}", "host": ["{{base_url}}"], "path": ["v1", "containers", "{{container_id}}", "files"], "query": [{"key": "provider", "value": "{{provider}}"}] } } }, { "name": "List Container Files", "request": { "method": "GET", "header": [], "url": { "raw": "{{base_url}}/v1/containers/{{container_id}}/files?provider={{provider}}", "host": ["{{base_url}}"], "path": ["v1", "containers", "{{container_id}}", "files"], "query": [{"key": "provider", "value": "{{provider}}"}] } } }, { "name": "Retrieve Container File", "request": { "method": "GET", "header": [], "url": { "raw": "{{base_url}}/v1/containers/{{container_id}}/files/{{container_file_id}}?provider={{provider}}", "host": ["{{base_url}}"], "path": ["v1", "containers", "{{container_id}}", "files", "{{container_file_id}}"], "query": [{"key": "provider", "value": "{{provider}}"}] } } }, { "name": "Get Container File Content", "request": { "method": "GET", "header": [], "url": { "raw": "{{base_url}}/v1/containers/{{container_id}}/files/{{container_file_id}}/content?provider={{provider}}", "host": ["{{base_url}}"], "path": ["v1", "containers", "{{container_id}}", "files", "{{container_file_id}}", "content"], "query": [{"key": "provider", "value": "{{provider}}"}] } } }, { "name": "Delete Container File", "request": { "method": "DELETE", "header": [], "url": { "raw": "{{base_url}}/v1/containers/{{container_id}}/files/{{container_file_id}}?provider={{provider}}", "host": ["{{base_url}}"], "path": ["v1", "containers", "{{container_id}}", "files", "{{container_file_id}}"], "query": [{"key": "provider", "value": "{{provider}}"}] } } }, { "name": "Delete Container", "request": { "method": "DELETE", "header": [], "url": { "raw": "{{base_url}}/v1/containers/{{container_id}}?provider={{provider}}", "host": ["{{base_url}}"], "path": ["v1", "containers", "{{container_id}}"], "query": [{"key": "provider", "value": "{{provider}}"}] } } } ] } ] }