Link Search Menu Expand Document

Proxies API

Manage proxies used to route image rendering traffic through your own provider. For setup and rendering examples, see the HTTP proxies guide. Check plans and feature availability if your plan does not include proxies.

Operations

Read operations share 100 requests/minute; write operations share 20 requests/minute, per organization across REST and MCP. Authentication, rate limits, and plan eligibility apply. See the interactive API reference for schemas.

Create a new proxy

POST /v1/proxies
Permission required
proxies:create_update
MCP tool
create_proxy

List proxies

GET /v1/proxies
Permission required
proxies:read
MCP tool
list_proxies

Retrieve a proxy

GET /v1/proxies/{id}
Permission required
proxies:read
MCP tool
get_proxy

Update a proxy

POST /v1/proxies/{id}
Permission required
proxies:create_update
MCP tool
update_proxy

Delete a proxy

DELETE /v1/proxies/{id}
Permission required
proxies:delete
MCP tool
delete_proxy

Create a proxy

curl 'https://hcti.io/v1/proxies' \
  --user "$HCTI_API_ID:$HCTI_API_KEY" \
  --header 'Content-Type: application/json' \
  --data '{
    "name": "Screenshot proxy",
    "url": "https://proxy.example.com",
    "port": 8443,
    "disabled": false,
    "authentication": {
      "username": "your-proxy-username",
      "password": "your-proxy-password"
    },
    "bypass_hosts": ["fonts.googleapis.com", "fonts.gstatic.com"]
  }'

Replace the example connection with your provider’s details. A successful request returns 200 OK with the proxy configuration, including its username but never its password.

Request field Description
name Required. 3–500 characters after trimming leading/trailing whitespace.
url Required. Absolute HTTP or HTTPS proxy URL, up to 512 characters. Supply port and credentials separately; no path other than /, query, or fragment.
port Optional, 1–65535. Omitted/null uses 80 for HTTP or 443 for HTTPS.
disabled Optional, defaults to false. The response uses enabled.
authentication Optional object. Supply username and either password or, on update, retain_password: true. Omitted/null removes authentication on update.
bypass_hosts Up to 100 entries. Hostnames, IPs, or absolute URLs; URLs are reduced to hosts, lowercased, and deduplicated. Omitted/null/[] clears the list.

Authentication fields

These fields belong inside authentication:

Field Description
username Required when authentication is supplied. Up to 512 characters; an empty string is valid.
password Required when creating an authenticated proxy or replacing its password. Up to 484 UTF-8 bytes. An empty string sets an empty password.
retain_password Set true on update to keep the existing password. Requires existing authentication, exactly the same username, and an omitted/null password. Omitted, null, or false requires a supplied password.

Username and password whitespace is preserved exactly. Do not combine retain_password: true with a supplied password, including an empty string; that returns 400.

Response fields

Create, get, and update responses return the following fields. Each entry in a list response has the same shape:

Field Description
id Proxy identifier used in management requests and as proxy_id when creating images.
name Display name of the proxy.
url Proxy URL.
port Configured proxy port.
bypass_hosts Hosts that bypass the proxy.
username Configured username, or null when authentication is not configured. An empty string is a valid username and still indicates authentication.
enabled Whether the proxy is enabled.
created_at UTC timestamp when the proxy was created.
updated_at UTC timestamp when the proxy was last updated.

Passwords and the request-only retain_password flag are never returned. The response has a top-level username; it does not have an authentication object.

List and retrieve proxies

curl 'https://hcti.io/v1/proxies?count=10' \
  --user "$HCTI_API_ID:$HCTI_API_KEY"

curl "https://hcti.io/v1/proxies/$PROXY_ID" \
  --user "$HCTI_API_ID:$HCTI_API_KEY"

Lists include disabled proxies and exclude deleted proxies, newest first. Set count from 1 to 100 (default 10) and follow pagination.next_page_start using page_start. See pagination.

Update a proxy

Use POST /v1/proxies/{id} with the same complete request shape as creation. This replaces the proxy configuration. Resend the port, bypass hosts, authentication, and disabled state you want to retain.

For example, to update an authenticated proxy without resending its password, use its existing username and set retain_password: true:

curl "https://hcti.io/v1/proxies/$PROXY_ID" \
  --user "$HCTI_API_ID:$HCTI_API_KEY" \
  --header 'Content-Type: application/json' \
  --data '{
    "name": "Screenshot proxy",
    "url": "https://proxy.example.com",
    "port": 8443,
    "disabled": false,
    "authentication": {
      "username": "your-proxy-username",
      "retain_password": true
    },
    "bypass_hosts": ["fonts.googleapis.com", "fonts.gstatic.com"]
  }'
  • Keep the password: Supply the exact existing username with retain_password: true and omit password or set it to null.
  • Replace the password or username: Supply both username and password; omit retain_password or set it to false. Retention cannot be used when changing the username.
  • Remove authentication: Omit authentication or set it to null.

These rules also apply when disabling a proxy. Omitting just the password does not retain it automatically.

A GET response is not a complete update body. If its username is null, use authentication: null. Otherwise, put the username inside authentication and choose whether to retain or replace the password. Set disabled to the opposite of the response’s enabled value, and send the request fields listed above.

Delete a proxy

curl --request DELETE "https://hcti.io/v1/proxies/$PROXY_ID" \
  --user "$HCTI_API_ID:$HCTI_API_KEY"

Success returns 204 No Content. The proxy can no longer be used for rendering. Repeating deletion of the same proxy succeeds. To temporarily stop new use, update the complete configuration with disabled: true instead.

Use the proxy

Pass the returned id as proxy_id when creating an image. That image operation needs images:create; editing proxy configuration requires the separate management permission above.

MCP

Create tools accept the request object under content; update tools accept id and content. Get/delete take id; list takes count and page_start. For example, these are arguments for create_proxy for a proxy that needs no authentication:

{
  "content": {
    "name": "Screenshot proxy",
    "url": "https://proxy.example.com",
    "port": 8443,
    "disabled": false
  }
}

Approve the appropriate MCP permissions first. The tools reference covers result handling. Avoid putting proxy credentials into chat; use the dashboard or your application’s secret handling when configuring authenticated proxies.


Need help?

Talk to a human. Please email us support@htmlcsstoimage.com with any questions and we’ll gladly help you get started.


Back to top

Built with extensive integration tests and serious care for developer happiness.
© 2018-2026 Code Happy, LLC.

Page last modified: Sep 14 2026 at 09:29 PM.

Edit this page on GitHub.