# Boost Transaction

#### Overview

* **Functionality**: Boost and broadcast transactions
* **API Key authentication**: Access to all endpoints requires the `x-api-key` header provided by Saturn
* **Address parameter**: All requests must have the `Content-Type` header of `application/json` and provide the `address` in the body of the wallet that is requesting the broadcast.&#x20;

**Endpoints**

## Boost an array of transaction ids. User must own some of the outputs of those transactions

> Boost an array of transaction ids. User must own some of the outputs of those transactions.\
> The response will contain a PSBT that can be signed by the user.\
> You can then broadcast the PSBT using the \`/broadcast\` endpoint.

```json
{"openapi":"3.1.0","info":{"title":"@saturnbtcio/api","version":"0.0.1"},"tags":[{"name":"Transaction"}],"servers":[{"url":"https://api-dev.saturnbtc.io","description":"Development Server"},{"url":"https://api.saturnbtc.io","description":"Production Server"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"apiKey","name":"x-api-key","in":"header"}},"schemas":{"IApiSpeedUpTransactionRequest":{"type":"object","properties":{"runeAddress":{"type":"string","title":"The rune address of the user. It must be a taproot address. (P2TR)","description":"The rune address of the user. It must be a taproot address. (P2TR).\nIf no bitcoin address is provided, the rune address will be used for bitcoin too."},"paymentAddress":{"type":"string","title":"The bitcoin address of the user","description":"The bitcoin address of the user."},"runePublicKey":{"type":"string","pattern":"^[0-9a-fA-F]+$","minLength":64,"maxLength":66,"title":"The rune public key of the user","description":"The rune public key of the user."},"paymentPublicKey":{"type":"string","pattern":"^[0-9a-fA-F]+$","minLength":64,"maxLength":66,"title":"The payment public key of the user","description":"The payment public key of the user."},"transactionIds":{"type":"array","items":{"type":"string"},"title":"The transaction ids to boost","description":"The transaction ids to boost."}},"required":["runeAddress","runePublicKey","transactionIds"]},"BoostTransactionResponse":{"type":"object","properties":{"psbt":{"type":"string","title":"The PSBT of the boosted transaction","description":"The PSBT of the boosted transaction."},"fee":{"type":"string","title":"The fee of the boosted transaction","description":"The fee of the boosted transaction."},"newFeeRate":{"type":"number","title":"The new fee rate of the boosted transaction","description":"The new fee rate of the boosted transaction."},"feeRate":{"type":"number","title":"The fee rate of the boosted transaction","description":"The fee rate of the boosted transaction."},"utxosToSign":{"type":"array","items":{"$ref":"#/components/schemas/InputToSign"},"title":"The inputs to sign for the boosted transaction","description":"The inputs to sign for the boosted transaction."}},"required":["psbt","fee","newFeeRate","feeRate","utxosToSign"]},"InputToSign":{"type":"object","properties":{"address":{"type":"string"},"signingIndexes":{"type":"array","items":{"type":"number"}},"sigHash":{"type":"number"},"utxo":{"type":"string"}},"required":["address","signingIndexes","utxo"]},"TransactionSpeedUpError":{"type":"object","properties":{"type":{"oneOf":[{"const":"HighFee"},{"const":"TxnAlreadyConfirmed"},{"const":"NotEnoughFunds"},{"const":"NoOutputsForUser"},{"const":"FailedToFinalizeInputs"},{"const":"TxnNotFound"}]},"message":{"type":"string"},"args":{}},"required":["type","message"]}}},"paths":{"/v0/transaction/boost":{"post":{"summary":"Boost an array of transaction ids. User must own some of the outputs of those transactions","description":"Boost an array of transaction ids. User must own some of the outputs of those transactions.\nThe response will contain a PSBT that can be signed by the user.\nYou can then broadcast the PSBT using the `/broadcast` endpoint.","tags":["Transaction"],"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IApiSpeedUpTransactionRequest"}}},"required":true},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BoostTransactionResponse"}}}},"400":{"description":"Transaction speedup error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransactionSpeedUpError"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"string"}}}},"403":{"description":"User not found","content":{"application/json":{"schema":{"type":"string"}}}}}}}}}
```

## Broadcast a signed transaction

> Broadcast a signed transaction.

```json
{"openapi":"3.1.0","info":{"title":"@saturnbtcio/api","version":"0.0.1"},"tags":[{"name":"Transaction"}],"servers":[{"url":"https://api-dev.saturnbtc.io","description":"Development Server"},{"url":"https://api.saturnbtc.io","description":"Production Server"}],"security":[{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"apiKey","name":"x-api-key","in":"header"}},"schemas":{"IApiBroadcastPsbtRequest":{"type":"object","properties":{"runeAddress":{"type":"string","title":"The rune address of the user. It must be a taproot address. (P2TR)","description":"The rune address of the user. It must be a taproot address. (P2TR).\nIf no bitcoin address is provided, the rune address will be used for bitcoin too."},"paymentAddress":{"type":"string","title":"The bitcoin address of the user","description":"The bitcoin address of the user."},"signedPsbt":{"type":"string","title":"The signed PSBT of the transaction","description":"The signed PSBT of the transaction."},"txType":{"oneOf":[{"const":"trade"},{"const":"prepare_wallet"},{"const":"extract"},{"const":"purchase"},{"const":"vsrCreation"},{"const":"deposit"},{"const":"withdraw"},{"const":"mint"},{"const":"etch"},{"const":"initialize_pool"},{"const":"increase_liquidity"},{"const":"decrease_liquidity"},{"const":"open_position"},{"const":"add_pool_shards"},{"const":"swap"}],"title":"The type of the transaction","description":"The type of the transaction."}},"required":["runeAddress","signedPsbt","txType"]},"TransactionSpeedUpError":{"type":"object","properties":{"type":{"oneOf":[{"const":"HighFee"},{"const":"TxnAlreadyConfirmed"},{"const":"NotEnoughFunds"},{"const":"NoOutputsForUser"},{"const":"FailedToFinalizeInputs"},{"const":"TxnNotFound"}]},"message":{"type":"string"},"args":{}},"required":["type","message"]}}},"paths":{"/v0/transaction/broadcast":{"post":{"summary":"Broadcast a signed transaction","description":"Broadcast a signed transaction.","tags":["Transaction"],"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IApiBroadcastPsbtRequest"}}},"required":true},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"type":"string"}}}},"400":{"description":"Transaction speedup error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransactionSpeedUpError"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"type":"string"}}}},"403":{"description":"User not found","content":{"application/json":{"schema":{"type":"string"}}}}}}}}}
```
