RFS
The RFS channel provides API access using the Request for Stream mechanism. Request for Stream allows you to get firm quotes from liquidity providers against your quote request for a symbol, tenor, amount, and direction for a given price type. You receive responses against your quote request and can choose to either accept the quote, withdraw the quote request, or you can allow the quote request to expire.
Submit quote request
Send a quote request to receive firm quotes from liquidity providers for the specified symbol, tenor, amount, and direction for a given price type.
Submit quote request example
{ "rfsSubscriptions": [
{ "clOrderId": "view1MultiLP5",
"symbol": "EUR/USD",
"amount": 1000000.0,
"dealtCurrency": "EUR",
"expiry": 15,
"nearValueDate": "1W",
"farDealtAmount": 1000000.0,
"farValueDate": "2W",
"side": "BUY",
"priceType": "Swap",
"customerAccount": "pfOrg",
"customerOrg": "pfOrg",
"providers": ["NX", "MX", "SVG", "SD2", "GBRS", "WXNA"]
}]
}
Request body
{ "rfsSubscriptions": ["quote request"] }
Attribute | Description |
---|---|
clOrderId | string: (required) RFS ID reference assigned by you. |
symbol | string: (required) Base and term currency separated by a slash "/" (for example EUR/USD ). |
amount | double: (required)
|
side | string: (required) BUY or SELL from the requester's perspective and always for the base currency. |
dealtCurrency | string: (required) Dealt currency. |
expiry | integer (required) Request expiry time in seconds. The expiration also depends on the server expiry configuration. Typical expiration time is 120 seconds. |
nearValueDate | string: (required) format yyyy-mm-dd
|
priceType | string: (required) Spot , Outright , NDF , Swap , FwdFwd , NDFSwap |
priceViewType | integer: Non-aggregated or aggregated prices:
|
depth | integer: Number of tiers requested. |
channel | string: Workflow, app, and UI component that originated the request. |
customerAccount | string: (required) ID of the legal entity for which quote request is being executed. |
customerOrg | string: (required) ID of the organization for which quote request is being executed. |
farDealtAmount | string: (required) Far leg dealt amount. Conditional: Required for Swap, FwdFwd NDF Swap. |
farValueDate | string: (required) format yyyy-mm-dd Conditional: Required for Swap, FwdFwd, NDF Swap.
|
fixingDate | string: (required) format yyyy-mm-dd Conditional: Required NDF fixing date if nearValueDate not specified. |
farFixingDate | string: (required) format yyyy-mm-dd Conditional: Required NDF swap far leg fixing date if farValueDate not specified. |
providers | List of string: List of provider IDs to receive the request. If not specified, the server sends the request to all eligible providers. |
Submit quote request response example: Ack
{ "rfsSubscriptionAck": [
{ "request":
{ "symbol": "EUR/USD",
"amount": 1000000.0,
"dealtCurrency": "EUR",
"providers": ["NX", "MX", "SVG", "SD2", "GBRS", "WXNA"],
"expiry": 15,
"side": "BUY",
"priceType": "Swap",
"customerOrg": "pfOrg",
"customerAccount": "pfOrg",
"channel": "DNET/RFS/BB",
"farDealtAmount": 1000000.0,
"nearValueDate": "1W",
"farValueDate": "2W",
"clOrderId": "view1MultiLP5",
"priceViewType": 0,
"blockTrade": false,
"intentToClear": false,
"depth": 1,
"mtf": false,
"enableCustomerSpreads": false,
"isManualRequest": false
},
"status": "received"
}]
}
Response body (Ack)
The first message you receive acknowledges your request.
Compare the values to your request to make sure that it was parsed as expected.
Attribute | Description |
---|---|
requestId | string: Request ID. |
Submit quote request response example: Success
{ "rfsSubscriptionResponses": [
{
"refData": {
"instrument": "EUR/USD",
"spotPrecision": 5,
"spotPointsPrecision": 3,
"forwardPointsPrecision": 2,
"pipsFactor": 10000.0,
"instrumentType": "CURRENCY",
"nonDeliverable": false,
"spotValueDate": "2022-09-29",
"inverseSpotPrecision": 5,
"inverseSpotPointsPrecision": 3,
"inverseForwardPointsPrecision": 2,
"inversePipsFactor": 10000.0,
"SEFSupported": false,
"clearingExempt": false,
"nonSpotSettlementType": false
},
"requestId": "G4796976d51837e75e99f291e",
"transactionId": "FXI9308979221",
"expiryTimeInSeconds": 120,
"rfsMessage": {
"eventTime": "2022/09/27 10:20:00",
"eventName": "RFS Submitted",
"eventDetails": "RFS Submitted for EUR/USD with Dealt currency EUR. 2-Way 1,000,000.00. Value Date SPOT. RFS sent to NX,MX,SVG,SD2,GBRS,WXNA"
},
"clOrderId": "req12",
"status": "OK"
}]
}
Response body (Success)
The next message confirms your successful request submission. After your successful request, rate messages follows.
Attribute | Description |
---|---|
requestId | string: Request ID. |
clOrderId | string: RFS ID reference assigned by you. |
transactionId | string: ID assigned by Integral your request. |
expiry | integer Request expiry time in seconds. The expiration also depends on the server expiry configuration. Typical expiration time is 120 seconds. |
eventTime | string: Time your request was received. |
eventName | string: Name of event on your request. |
eventDetails | string: Details of the event on your request. |
status | string: Status of your request. |
Returns
Rates example
{
"rfsRates": [
{
"requestId": "G4796976d51837e75e99f291e",
"priceType": "Spot",
"effectiveTime": 1664274000933,
"symbol": "EUR/USD",
"ttl": 120,
"dealtCurrency": "EUR",
"status": "A",
"nearValueDate": "2022-09-29",
"bids": [
{
"legType": 0,
"quoteId": "G-4796976cb-1837e75ec2a-WXNA-1168bb-pfOrg-WXNA-1664274000934",
"type": "BID",
"dealtAmount": 1000000.0,
"settledAmount": 1186260.0,
"provider": "WXNA",
"rate": 1.18626,
"spotRate": 1.18626,
"forwardPoint": 0.0,
"midRate": 0.0
}
],
"offers": [
{
"legType": 0,
"quoteId": "G-4796976cb-1837e75ec2a-WXNA-1168bb-pfOrg-WXNA-1664274000934",
"type": "OFFER",
"dealtAmount": 1000000.0,
"settledAmount": 1186560.0,
"provider": "WXNA",
"rate": 1.18656,
"spotRate": 1.18656,
"forwardPoint": 0.0,
"midRate": 0.0
}
],
"mids": []
}
]
}
Response attributes
Attribute | Description |
---|---|
requestId | string: Query quote request status using the ID assigned by Integral to the request. |
clOrderId | string: Originating RFS ID assigned by you. |
requestState | string: Quoted |
quotes | string: Quote object. |
Quote details | |
requestId | string: ID assigned to request by Integral. |
priceType | string: Spot , Outright , NDF , Swap , FwdFwd , NDFSwap |
effectiveTime | int: Time in seconds when the quote is active. |
symbol | string: Base and term currency separated by a slash "/" (for example EUR/USD ). |
ttl | int: Quote valid time (time to live) in seconds. |
dealtCurrency | string: Dealt currency. |
status | string: A : Active, I : Inactive |
nearSettleDate | string:
|
farSettleDate | string: Swap, FwdFwd: far leg value date. |
nearFixingDate | string: NDF: fixing date if nearSettleDate not specified. |
farFixingDate | string: NDF Swap: far leg fixing date. |
bids | Collection of bid rates. |
offers | Collection of offer rates. |
mids | Collection of mid rates. |
Rate details | |
legType | string: Indicates near or far leg: 0 =Near, 1 =Far |
quoteId | string: ID of the price in the quote. Use this ID for previous quoted orders. |
type | string: BID , OFFER , MID |
dealtAmount | double: Dealt amount. |
settledAmount | Settled amount. |
provider | string: ID of provider supplying the price. |
rate | double: All-in rate. |
spotRate | double: Spot rate. |
forwardPoint | double: Forward points. |
Accept quote
Accept a quote from a price stream.
You receive two responses to a successful quote accept request:
rfsTradeAck
rfsTradeResponses
Accept quote request example
{ "rfsTrades": [
{ "quoteId":"G-4796976cf-178eed930f1-SGR-18-XCN1083-SG-1618914914549",
"side":"BUY",
"symbol":"GBP/USD",
"dealtCurrency":"USD",
"clOrderId":"req89"
}]
}
Request body
Attribute | Description |
---|---|
quoteId | string: (required) Quote ID from one of the quotes received in response to a Query Request. |
side | string: (required) BUY or SELL from the requester's perspective and always for the base currency. For multi-leg requests this is the side of far leg. |
symbol | string: (required) Base and term currency separated by a slash "/" (for example EUR/USD ). |
dealtCurrency | string: (required) Dealt currency. |
clOrderId | string: (required) Originating RFS ID assigned by you. |
tradeChannel | string: string: Workflow, app, and UI component that originated the request. |
Accept quote response example: Ack
{ "rfsTradeAck": [
{ "request":
{ "quoteId":"G-4796976cf-17b34abe7a4-SGR-1e-pfOrg-SG-1628676286375",
"side":"BUY",
"symbol":"USD/JPY",
"dealtCurrency":"USD",
"clOrderId":"req27",
"tradeChannel":"API/WS/RFS"
},
"status":"received"
}]
}
The first message you receive acknowledges your request.
Compare the values to your request to make sure that it was parsed as expected.
Accept quote response example: Success
{ "rfsTradeResponses":[
{ "trades":[
{ "orderId":"FXI9191080919",
"tradeId":"FXI9191080919",
"tradeType":"Outright",
"tenor":"1W",
"tradeDate":"08/11/2021",
"valueDate":"08/20/2021",
"executionTime":"08/11/2021 10:04:58:811 GMT",
"maker":false,
"orderSide":"Buy",
"status":"Verified",
"instrument":"USD/JPY",
"dealtIns":"USD",
"dealtAmount":1000000.00,
"settledAmount":107822200,
"baseAmount":1000000.00,
"termAmount":107822200,
"spotRate":107.82200,
"rate":107.82220,
"forwardPoints":0.0002,
"customerAccount":"pfOrg",
"customerOrg":"pfOrg",
"trader":"user1",
"counterParty":"CptyA",
"cptyLongName":"CounterpartyA",
"cptyTradeId":"FXI9191080919",
"counterPartyAccount":"SG",
"counterPartyBLEI":"O2RNE8IBXP4R0TD8PU41",
"UPI":"USD_JPY_OUTRIGHT",
"UTI":"MCQRZU5ST1INP9191080919",
"SEF":false,
"externalRequestId":"BaseBuyQuote3",
"requestId":"G4796976d517b34abd3e36643",
"maskedLP":"SG",
"isnet":false,
"isMidMarket":false,
"mifidFields":
{
"isin":"EZ531RSV6V78"
},
"swapTrade":{
},
"benchMarkRate":0.0,
"cptyB":{
},
"outright":{
},
"nearLegISIN":"EZ531RSV6V78",
"pricingType":"RFS",
}
]
}
]
}
Response body (Success)
The second message your receive for a successful quote accept request includes the trade details.
Attribute | Description |
---|---|
orderId | string: ID of the originating order. |
tradeId | string: Integral trade ID. |
tradeType | string: Trade type:
|
tenor | string: SPOT |
tradeDate | string: Date the trade was initiated. |
valueDate | string: Value date. |
fixingDate | string: (NDF trades) Fixing date. |
fixingTenor | string: (NDF trades) Fixing tenor. |
executionTime | string: Date and time trade was done. |
maker | boolean:
|
orderSide | string: The side of the originating order from your perspective, either Buy or Sell. |
status | string: The status of the trade when the message was created:
|
rejectReason | string: The reason for trade rejection, if any. |
instrument | string: The dealt instrument pair (currency, metal, energy, index, crypto), seven-character ISO code (for example, AUD/USD ). |
dealtIns | string: The dealt instrument, three-character ISO code (for example, AUD ). |
dealtAmount | double: Amount of the dealt instrument. |
settledAmount | double: Amount of the settlement instrument. |
baseAmount | double: Amount of base instrument. |
termAmount | double: Amount of term instrument. |
spotRate | double: Spot rate of the trade or near leg of the trade. |
rate | double: All-in rate. |
orderType | string: Type of originating order. |
rateId | string: ID of the originating rate, if any. |
forwardPoints | string: Forward points for outright trades and near leg of swaps. |
swapPoints | string: Swap points, if any. |
customerAccount | string: Customer legal entity ID. |
customerOrg | string: Customer org ID. |
trader | string: Customer trader user who did the trade. |
counterParty | string: Counterparty ID. |
cptyLongName | string: Counterparty name. |
coverTradeIds | object: List of ID for trades that cover this trade, if any. |
cptyTradeId | string: Trade ID assigned by counterparty. |
counterPartyAccount | string: Counterparty legal entity ID. |
farTenor | string: Far-leg tenor for swaps. |
farFixingTenor | string: Far-leg fixing tenor for NDF swaps. |
farFixingDate | string: Far-leg fixing date for NDF swaps. |
farValueDate | string: Far-leg value date for swaps. |
farSide | string: Side of the far leg for swaps. |
farRate | string: Far-leg rate for swaps. |
farDealtAmount | string: Far-leg amount in the dealt instrument for swaps. |
farSettledAmount | string: Far-leg amount in the settlement instrument for swaps. |
farBaseAmount | string: Far-leg amount in the base instrument for swaps. |
farTermAmount | string: Far-leg amount in the term instrument for swaps. |
farForwardPoints | string: Far-leg forward points for swaps. |
counterPartyALEI | string: EI code for counterPartyA. |
counterPartyBLEI | string: LEI code for counterPartyB. |
UTI | string: Unique Transaction Identifier for the trade. |
externalRequestId | string: The ID of the originating request for price from a system external to Integral. |
requestId | string: The ID of the originating request for price from Integral systems. |
maskedLP | string: Masked liquidity provider org ID. |
exchange | string: Exchange ID. |
portfolioId | string: Batch trades and SSPs: Containing portfolio ID. |
isnet | boolean:
|
benchMarkRate | string: Reference benchmark rate. |
mifidBenchmarkRate | string: MiFID II: Reference benchmark rate. |
cptyB | object: The counterParty B on the trade. |
cptyB: cptyOrg | string: Counterparty B org ID. |
cptyB: cptyAccount | string: Counterparty B legal entity ID. |
cptyB: maskedLP | string: Counterparty B masked legal entity ID. |
outright | object: Forward pricing info for the trade. |
outright: forwardPoints | string: Forward points. |
outright: maturityDate | string: Maturity date. |
outright: spotRate | string: Spot rate. |
outright: fixingTenor | string: NDF fixing tenor, if any. |
outright: tenor | string: Requested tenor, if any. |
outright: fixingDate | string: NDF fixing date. |
farLegISIN | string: Far-leg International Securities Identification Number for multi-leg trades. |
nearLegISIN | string: Near-leg International Securities Identification Number for multi-leg trades. |
regulatory | string: null |
fees | string: Fees on the trade, if any. |
initialSettledAmount | string: null |
pricingType | string: null |
note | string: null |
midMarket | boolean: false |
uti | string: MCQRZU5ST1INP9060169093 |
isinlinkId | string: International Securities Identification Number link ID. |
Withdraw quote request
You receive three responses to a successful withdraw request:
rfsWithdrawAck
- Request status
rfsResponses
indicating success/fail - Inactive quote to clear out stale rates
rfsRates
Withdraw quote request example
{ "rfsWithdrawRequests":[{
"requestId": "G4796976d517b1786e1fa242"
}]
}
Request body
Attribute | Description |
---|---|
requestId | string: ID assigned by Integral to your request, returned in the rfsSubscriptionResponses subscription response. |
Withdraw quote response example: Ack
{ "rfsWithdrawAck": [{
"request": {
"requestId": "G4796976d517b1786e1fa242"
},
"status": "received"
}]
}
Attribute | Description |
---|---|
requestId | string: ID assigned by Integral to your request, returned in the rfsSubscriptionResponses subscription response. |
status | string: Your request status. |
Withdraw quote response example: Success
{ "rfsResponses": [{
"rfsMessage": {
"eventTime": "2021/08/05 18:15:35",
"eventName": "RFS Withdrawn",
"eventDetails": "RFS Request Withdrawn for EUR/USD with Dealt currency EUR. Sell 1,000,000.00/1,000,000.00. Value Date 1W 2W."
},
"requestId": "G4796976d517b1786e1fa242",
"status": "OK"
}]
}
Attribute | Description |
---|---|
requestId | string: Request ID. |
eventTime | string: Time your request was received. |
eventName | string: Name of event on your request. |
eventDetails | string: Details of the event on your request. |
status | string: Status of your request. |
Withdraw quote response example: inactive quote
{ "rfsRates": [{
"requestId":"G4796976d517b1786e1fa242",
"priceType":"Swap",
"effectiveTime":0,
"symbol":"EUR/USD",
"ttl":-1,
"dealtCurrency":"EUR",
"status":"I",
"nearSettleDate":"08/16/2021",
"farSettleDate":"08/23/2021",
"bids":[],
"offers":[],
"mids":[]
}]
}
Attribute | Description |
---|---|
requestId | string: ID assigned to request by Integral. |
priceType | string: Spot , Outright , NDF , Swap , FwdFwd , NDFSwap |
effectiveTime | int: Time in seconds when the quote is active. |
symbol | string: Base and term currency separated by a slash "/" (for example EUR/USD ). |
ttl | int: Quote valid time (time to live) in seconds. |
dealtCurrency | string: Dealt currency. |
status | string: A : Active, I : Inactive |
nearSettleDate | string:
|
farSettleDate | string: Swap, FwdFwd: far leg value date. |
bids | Collection of bid rates. |
offers | Collection of offer rates. |
mids | Collection of mid rates. |
Withdraw quote response example: fail, invalid ID
{ "rfsResponses":[{
"requestId":"G234",
"rfsEvent":"WITHDRAW_REQUEST_REJECTED",
"errorCode":"NO_SUBSCRIPTION_REQUEST_FOUND",
"clOrderId":"G234"
}]
}
Attribute | Description |
---|---|
requestId | string: Request ID. |
rfsEvent | string: WITHDRAW_REQUEST_REJECTED |
errorCode | string: NO_SUBSCRIPTION_REQUEST_FOUND |
clOrderId | string: RFS ID reference assigned by you. |
Withdraw quote response example: fail, trade done
{ "rfsResponses":[{
"status":"ERROR",
"errorCode":"INTERNAL_SERVER_ERROR"
}]
}
Attribute | Description |
---|---|
status | string: ERROR |
errorCode | string: INTERNAL_SERVER_ERROR |