Skip to main content
POST
Invoke Forward Proxy
Forwards your request to the destination in the yuno-proxy-destination-url header, replacing {{vaulted_token.<TOKEN>.<field>}} expressions inside Yuno’s secure environment with the data stored under the vaulted token: the card (PAN, expiration, holder name), its network token (DPAN and its expiration), and its network transaction ID (NTID). For destinations that require HMAC-signed requests, send yuno-proxy-auth + yuno-proxy-auth-secret-key and the proxy signs the resolved body for you — see Signed destinations. See the Forward Proxy guide for a step-by-step integration.
BetaThe PCI Proxy is in beta and is enabled per organization. In production, requests return 403 PRODUCT_NOT_ENABLED until your organization is activated — contact your Key Account Manager (KAM). The sandbox is open for testing.
Server-side onlyProxy requests detokenize card data and must only be made from your backend. Never expose your private-secret-key in client-side code.
All of GET, POST, PUT, PATCH, and DELETE are supported: the destination receives the same method you used. Put the complete destination URL, including its path and any query string, in the yuno-proxy-destination-url header; a query string on the /pci-proxy/forward request itself is rejected. The destination host must be on your destination allowlist. If you are a PCI-certified merchant and need the raw card data itself rather than a pass-through call, use Retrieve Enrolled Payment Method by ID PCI Data instead.

Authorizations

public-api-key
string
header
default:<Your public-api-key>
required
private-secret-key
string
header
default:<Your private-secret-key>
required

Headers

yuno-proxy-destination-url
string
required

The complete destination URL, including its path and any query string (for example https://api.example-processor.com/charges/ch_123/capture?expand=true). Must be a public HTTPS hostname on port 443, and the host must be registered on your destination allowlist; IP addresses and internal networks are rejected. It must not contain {{vaulted_token...}} expressions (card data must never appear in a URL).

Example:

"https://api.example-processor.com/charges"

yuno-proxy-timeout
integer

Destination timeout in seconds. Default 30, maximum 120.

Required range: 1 <= x <= 120
Example:

30

yuno-account-id
string

Optional account scope. Narrows which allowlisted destinations are permitted for this request; it does not affect token resolution (vaulted tokens are always scoped to your organization). Like all yuno-* headers it is removed before forwarding and never reaches the destination.

Example:

"acc_123"

yuno-proxy-auth
enum<string>

Signing scheme for destinations that require HMAC request signing over the body. The proxy computes the signature over the resolved body (after expression substitution) and injects the destination's auth headers; your signing secret is used in memory and discarded — nothing is stored. Supported: DLOCAL_HMAC (the proxy generates X-Date and computes Authorization: V2-HMAC-SHA256, Signature: <hex> over X-Login + X-Date + resolved body; you send X-Login, X-Trans-Key, and X-Version as normal destination headers). An unknown value — or a DLOCAL_HMAC request missing the X-Login or X-Trans-Key headers — is rejected with 400 INVALID_REQUEST before the destination is contacted.

Available options:
DLOCAL_HMAC
Example:

"DLOCAL_HMAC"

yuno-proxy-auth-secret-key
string

Your signing secret for this request (required when yuno-proxy-auth is present). Like every yuno-* header it is stripped before forwarding and excluded from logs.

Body

The body the destination API expects, with vaulted token expressions where card data belongs. The proxy is content-transparent: it forwards your body and Content-Type unchanged and resolves {{vaulted_token.<TOKEN>.<field>}} expressions anywhere in the raw body, so any content type is supported (JSON, form-encoded, XML). The JSON object below is illustrative. Supported fields: number, expiration_month, expiration_year, holder_name; when the card has a network token, network_token_number (DPAN), network_token_expiration_month, network_token_expiration_year; and network_transaction_id (NTID: the scheme's reference for the card's original transaction, for merchant-initiated transactions). The security code is not stored and cannot be injected; cryptograms are per-transaction and are not resolved — include the value directly in the body if your destination requires one. At most 20 distinct tokens per request; maximum body size 1 MB. Expressions are also resolved in header values. All non-expression content is forwarded untouched.

The body is of type object.

Response

Response from the destination, passed through unchanged (the actual status code is whatever the destination returned; check yuno-proxy-destination-status).

The destination's response body, unchanged.