---
title: "Analyze project configuration before deploy"
method: POST
path: "/platform/deployments/custom/prepare"
tags: ["Platform"]
---

# Analyze project configuration before deploy

`POST /platform/deployments/custom/prepare`

## Request

- Base URL: `https://api.imprezahost.com/v1`
- URL: `https://api.imprezahost.com/v1/platform/deployments/custom/prepare`
- Auth: API key in header `X-API-Key` and API key in header `X-API-Secret`

Read scope. Pure analysis of supplied UTF-8 text, up to 32768 bytes per
file. Send package_json, requirements_txt with start_command, composer_json with php_document_root, and/or dockerfile, never credentials or .env.
Returns advisory framework/command hints and explicit final-stage TCP ports.
Does not fetch Git, execute code, create resources or generate a Dockerfile.
analysis_id fingerprints metadata; it is not a saved or executable plan.
php_composer_recipe reports not_assessed without composer_json, blocked for unsupported configuration, and needs_verification otherwise. PHP options carry php_document_root and default port 8080; the lockfile, public directory, dependency distributions and runtime remain unverified.
python_pip_recipe reports not_assessed without requirements, blocked for unsupported flat requirements or a missing command, and needs_verification otherwise. Python options carry start_command and default port 8000; source, dependency resolution and runtime remain unverified.
node_npm_recipe contains strategy=node_npm, status (not_assessed, blocked,
or needs_verification), blockers and unverified check names. Workspace
declarations, an incompatible packageManager and missing start scripts
block the recipe suggestion. No detected blocker does not prove build
readiness; lockfile, Node engines, runtime and build requirements remain
unverified. Findings carry the same guidance for portal and MCP users.
deployment_options contains parameter subsets for the custom-deploy call,
each with requires_review=true and port_basis (dockerfile_expose,
recipe_default or unconfirmed). Node uses its recipe default port 3000;
Dockerfile options omit target_port when no unique port is declared.
These are incomplete suggestions, not executable plans: source and server
selection, credentials and remaining requirements must be reviewed.

## Request body

- object
  - `package_json` string
  - `composer_json` string
  - `php_document_root` string
  - `pyproject_toml` string: uv metadata; source also requires uv.lock.
  - `requirements_txt` string
  - `start_command` string
  - `dockerfile` string
  - `dockerfile_path` string

## Response `200`

Analysis with status needs_review, framework, commands, findings, declared ports and optional suggested_target_port

## Other responses

- `400`: Missing or invalid configuration
- `401`: Authentication required

---

[API](https://skmtc.dev/imprezahost/apis/impreza-host-public-api.md) · [All operations](https://skmtc.dev/imprezahost/apis/impreza-host-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/imprezahost/apis/impreza-host-public-api/revisions/db86511f604f?raw)
