Transactions
Terminal endpoint of the write flow. Once the transaction returned by any POST /contract/... has been signed off-chain, it is sent to the blockchain using this endpoint.
sendSignedTransaction
POST /api/v1/transactions/send
Receives the signed transaction and propagates it to the network. Returns the tx_hash and, if available, the receipt.
Body
{
"signedRawTransaction": "0x01f9034c8281310e820fa0834c4b40..."
}
| Field | Type | Required | Description |
|---|---|---|---|
signedRawTransaction | string | yes | Hex-encoded signed transaction (includes prefix 0x01 for EIP-2930, 0x02 for EIP-1559, etc.). This is the output of wallet.signTransaction(tx) in ethers.js, signed.raw_transaction.hex() in eth_account, or the equivalent command used to sign the raw transaction returned by the API. |
Responses
200 OK — Transaction mined
{
"tx_hash": "0xb508e46adfc36822e48dde1d9f1f5d2122a1ce6852cf5e0afe6c978da04648c5",
"receipt": {
"_type": "TransactionReceipt",
"blockHash": "0x52afb6108087cdca826289da40cc7339a4e190922f8480afd924c0ddd9d31109",
"blockNumber": 3907283,
"contractAddress": null,
"cumulativeGasUsed": "221678",
"from": "0xAe0E493C67f75381b0954644836A3C16c79D0dFD",
"to": "0x00000000000000000000000000000000000015Be",
"gasUsed": "221678",
"hash": "0xb508e46adfc36822e48dde1d9f1f5d2122a1ce6852cf5e0afe6c978da04648c5",
"index": 0,
"logs": [
{
"_type": "log",
"address": "0x00000000000000000000000000000000000015Be",
"topics": ["0x78c431540f7778eb787241a03d7401cd2c95ddb232c918f172f86e4c804d5439"],
"blockNumber": 3907283
}
],
"status": 1
}
}
206 Partial Content — Transaction sent, receipt not available
{
"tx_hash": "0xb508e46adfc36822e48dde1d9f1f5d2122a1ce6852cf5e0afe6c978da04648c5",
"receipt": null
}
The tx_hash is already valid. You can query the status later with an explorer or by retrying the DID resolution.
400 Bad Request
Common causes:
- The signature is incorrect (private key differs from the
fromEOA). - The
nonceis obsolete (another transaction was sent in the meantime). - The EOA does not have funds to cover the gas.
500 Internal Server Error
Generic API or blockchain network error.
Receipt status
status | Meaning |
|---|---|
1 | Transaction executed successfully. The change was reflected on-chain. |
0 | Transaction executed but the contract reverted. The change was NOT applied. Review the authorization of from and the arguments. |
Log Interpretation
Log topics identify the emitted event. Some relevant ones:
topics[0] | Event |
|---|---|
0x78c431540f7778eb787241a03d7401cd2c95ddb232c918f172f86e4c804d5439 | VerificationMethodAdded |
0xd43d365fd1f319ea103c6daa06d0ee46f5b3f535985f3313a9b5b6da774da67c | VerificationRelationshipAdded |
The full list of events is documented in the DID registry repository (isbe-identity-did-lib).
Example
curl -X POST "https://did-registry.portal.redisbe.com/api/v1/transactions/send" \
-H "Content-Type: application/json" \
-d '{"signedRawTransaction": "0x01f9034c8281310e820fa0834c4b40..."}'
206If you receive a 206, wait ~5 seconds and query the DID with GET /api/v1/identifiers/{identifier}. If the change is already reflected, the transaction was mined successfully.