Modulify

Create a deploy hook

create_deploy_hook

Creates a deploy hook, a secret URL that publishes the site whenever something calls it with a plain GET.

POST /v1/create_deploy_hookScopeconfig:writeMakes changes

The hook is created turned on, and a call to it needs no header and no body. A site holds at most 10 hooks and the call is refused once that is reached.

The URL is not returned. Read it with get_deploy_hook_url, which needs the separate credentials:reveal scope, or copy it from the hook's row in the Deploy hooks tab.

Only one build runs per site at a time, so a call made while a build is running is answered as already building and starts nothing. Each hook accepts at most 10 calls a minute. See Deploy hooks.

Request

Call it with a POST to https://api.modulify.ai/v1/create_deploy_hook, sending the inputs below as a JSON object. The token needs the config:write scope.

It makes changes, so send an Idempotency-Key header whenever you might retry it. A retry with the same key gets the first answer back instead of running again.

curl -X POST https://api.modulify.ai/v1/create_deploy_hook \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"projectId":"PROJECT_ID","name":"NAME"}'

Over MCP, the same method is the create_deploy_hook tool.

Inputs

Input Type Required Description
projectId string Yes The site id.
name string Yes A label that says what will call the hook, for example GitHub Actions. It cannot be empty, and it is cut to 64 characters.

Response

Every call answers with the JSON envelope of success, message, data, code and version. data holds the result described above, and on a method that returns a total, count carries it. The response headers carry the call's X-Request-Id and what is left of your per-minute budget in X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset. Errors explains every status code a call can answer with.