> For the complete documentation index, see [llms.txt](https://developers.ethos.network/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developers.ethos.network/api-documentation/api-v2/wallets.md).

# Wallets

## Exchange Privy session for Ethos JWTs

> Verifies the Privy bearer token and sets Ethos access/refresh JWTs via HttpOnly cookies.

```json
{"openapi":"3.1.0","info":{"title":"Ethos API","version":"v2"},"tags":[{"name":"wallets"}],"servers":[{"url":"https://api.ethos.network/api/v2"}],"security":[{"Authorization":[]}],"components":{"securitySchemes":{"Authorization":{"type":"http","scheme":"bearer"}},"schemas":{"error.UNAUTHORIZED":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Authorization not provided error (401)","description":"The error information"},"error.FORBIDDEN":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Insufficient access error (403)","description":"The error information"},"error.INTERNAL_SERVER_ERROR":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Internal server error error (500)","description":"The error information"}}},"paths":{"/auth/exchange":{"post":{"operationId":"auth-exchange","summary":"Exchange Privy session for Ethos JWTs","description":"Verifies the Privy bearer token and sets Ethos access/refresh JWTs via HttpOnly cookies.","tags":["wallets"],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":true}},"required":["ok"],"additionalProperties":false}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}}}}
```

## Logout and clear Ethos JWT cookies

> Clears Ethos access/refresh cookies and revokes the current refresh token if present. If deviceIdentifier is provided, also removes the FCM push notification token for that device. Safe to call even if not authenticated.

```json
{"openapi":"3.1.0","info":{"title":"Ethos API","version":"v2"},"tags":[{"name":"wallets"}],"servers":[{"url":"https://api.ethos.network/api/v2"}],"paths":{"/auth/logout":{"post":{"operationId":"auth-logout","summary":"Logout and clear Ethos JWT cookies","description":"Clears Ethos access/refresh cookies and revokes the current refresh token if present. If deviceIdentifier is provided, also removes the FCM push notification token for that device. Safe to call even if not authenticated.","tags":["wallets"],"parameters":[],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"deviceIdentifier":{"type":"string"}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","const":true}},"required":["ok"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}}},"components":{"schemas":{"error.BAD_REQUEST":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Invalid input data error (400)","description":"The error information"},"error.INTERNAL_SERVER_ERROR":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Internal server error error (500)","description":"The error information"}}}}
```

## Verify authentication for Ethos Everywhere wallet

> Returns ok when authenticated. If the access token is expired, it will be refreshed using the refresh token.

```json
{"openapi":"3.1.0","info":{"title":"Ethos API","version":"v2"},"tags":[{"name":"wallets"}],"servers":[{"url":"https://api.ethos.network/api/v2"}],"security":[{"Authorization":[]}],"components":{"securitySchemes":{"Authorization":{"type":"http","scheme":"bearer"}},"schemas":{"error.UNAUTHORIZED":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Authorization not provided error (401)","description":"The error information"},"error.FORBIDDEN":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Insufficient access error (403)","description":"The error information"},"error.INTERNAL_SERVER_ERROR":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Internal server error error (500)","description":"The error information"}}},"paths":{"/wallets/privy/auth-check":{"get":{"operationId":"wallets-privy-authCheck","summary":"Verify authentication for Ethos Everywhere wallet","description":"Returns ok when authenticated. If the access token is expired, it will be refreshed using the refresh token.","tags":["wallets"],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"profileId":{"type":"number"}},"required":["ok","profileId"],"additionalProperties":false}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}}}}
```

## Check if wallet has enough funds for transactions

> Returns whether the Ethos Everywhere wallet has sufficient balance for transactions like reviews, votes, or replies. Also indicates if gas sponsorship is available.

```json
{"openapi":"3.1.0","info":{"title":"Ethos API","version":"v2"},"tags":[{"name":"wallets"}],"servers":[{"url":"https://api.ethos.network/api/v2"}],"security":[{"Authorization":[]}],"components":{"securitySchemes":{"Authorization":{"type":"http","scheme":"bearer"}},"schemas":{"error.UNAUTHORIZED":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Authorization not provided error (401)","description":"The error information"},"error.FORBIDDEN":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Insufficient access error (403)","description":"The error information"},"error.INTERNAL_SERVER_ERROR":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Internal server error error (500)","description":"The error information"}}},"paths":{"/wallets/privy/check-funds":{"get":{"operationId":"wallets-privy-checkFunds","summary":"Check if wallet has enough funds for transactions","description":"Returns whether the Ethos Everywhere wallet has sufficient balance for transactions like reviews, votes, or replies. Also indicates if gas sponsorship is available.","tags":["wallets"],"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"balance":{"type":"integer","format":"int64"},"sponsorshipEligible":{"type":"boolean"}},"required":["balance","sponsorshipEligible"],"additionalProperties":false}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}}}}
```

## Create a review via an Ethos Everywhere wallet

> Signs and submits a review transaction using the user's Ethos Everywhere wallet. > ⚠️ \*\*Warning:\*\* This is a beta endpoint. It is \*\*not guaranteed to be stable\*\* and may change or break without notice.

```json
{"openapi":"3.1.0","info":{"title":"Ethos API","version":"v2"},"tags":[{"name":"wallets"}],"servers":[{"url":"https://api.ethos.network/api/v2"}],"security":[{"Authorization":[]}],"components":{"securitySchemes":{"Authorization":{"type":"http","scheme":"bearer"}},"schemas":{"error.BAD_REQUEST":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Invalid input data error (400)","description":"The error information"},"error.UNAUTHORIZED":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Authorization not provided error (401)","description":"The error information"},"error.FORBIDDEN":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Insufficient access error (403)","description":"The error information"},"error.INTERNAL_SERVER_ERROR":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Internal server error error (500)","description":"The error information"}}},"paths":{"/wallets/privy/post/review":{"post":{"operationId":"wallets-privy-addReview","summary":"Create a review via an Ethos Everywhere wallet","description":"Signs and submits a review transaction using the user's Ethos Everywhere wallet. > ⚠️ **Warning:** This is a beta endpoint. It is **not guaranteed to be stable** and may change or break without notice.","tags":["wallets"],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"score":{"type":"string","enum":["negative","neutral","positive"]},"title":{"type":"string","minLength":1},"content":{"type":"string","minLength":1},"metadata":{"default":[],"anyOf":[{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1},"value":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}},"required":["key"]}},{"type":"object","propertyNames":{"type":"string","minLength":1},"additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}}]},"subject":{"anyOf":[{"type":"object","properties":{"address":{"type":"string","description":"Ethereum address (0x-prefixed, 20 bytes)"}},"required":["address"]},{"type":"object","properties":{"service":{"type":"string","minLength":1},"account":{"type":"string","minLength":1},"accountType":{"type":"string","enum":["username","id"]}},"required":["service","account"]},{"type":"object","properties":{"x":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","minLength":1}},"required":["id"]},{"type":"object","properties":{"username":{"type":"string","minLength":1}},"required":["username"]}]}},"required":["x"]}]},"waitForTxTimeoutSeconds":{"default":5,"description":"Timeout in seconds to wait for the transaction to be processed by Ethos. Defaults to 5 seconds. Set to 0 to skip waiting.","type":"number"}},"required":["score","title","subject"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"hash":{"type":"string","description":"0x-prefixed 32-byte transaction hash (keccak256)"},"review":{"type":"object","properties":{"id":{"type":"number"},"authorProfileId":{"type":"number"},"author":{"type":"string"},"subject":{"type":"string"},"score":{"type":"string","enum":["negative","neutral","positive"]},"comment":{"type":"string"},"metadata":{"type":"string"},"createdAt":{"type":"number"},"archived":{"type":"boolean"},"attestationDetails":{"type":"object","properties":{"account":{"type":"string"},"service":{"type":"string"}},"required":["account","service"],"additionalProperties":false}},"required":["id","authorProfileId","author","subject","score","comment","metadata","createdAt","archived"],"additionalProperties":false},"reviewSlug":{"type":"string"}},"required":["hash"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}}}}
```

## Create a review by address via an Ethos Everywhere wallet

> Signs and submits a review transaction for a subject address using the user's Ethos Everywhere wallet. > ⚠️ \*\*Warning:\*\* This is a beta endpoint. It is \*\*not guaranteed to be stable\*\* and may change or break without notice.

```json
{"openapi":"3.1.0","info":{"title":"Ethos API","version":"v2"},"tags":[{"name":"wallets"}],"servers":[{"url":"https://api.ethos.network/api/v2"}],"security":[{"Authorization":[]}],"components":{"securitySchemes":{"Authorization":{"type":"http","scheme":"bearer"}},"schemas":{"error.BAD_REQUEST":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Invalid input data error (400)","description":"The error information"},"error.UNAUTHORIZED":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Authorization not provided error (401)","description":"The error information"},"error.FORBIDDEN":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Insufficient access error (403)","description":"The error information"},"error.INTERNAL_SERVER_ERROR":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Internal server error error (500)","description":"The error information"}}},"paths":{"/wallets/privy/post/review/by-address":{"post":{"operationId":"wallets-privy-addReviewByAddress","summary":"Create a review by address via an Ethos Everywhere wallet","description":"Signs and submits a review transaction for a subject address using the user's Ethos Everywhere wallet. > ⚠️ **Warning:** This is a beta endpoint. It is **not guaranteed to be stable** and may change or break without notice.","tags":["wallets"],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"score":{"type":"string","enum":["negative","neutral","positive"]},"title":{"type":"string","minLength":1},"content":{"type":"string","minLength":1},"metadata":{"default":[],"anyOf":[{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1},"value":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}},"required":["key"]}},{"type":"object","propertyNames":{"type":"string","minLength":1},"additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}}]},"address":{"type":"string","description":"Ethereum address (0x-prefixed, 20 bytes)"},"waitForTxTimeoutSeconds":{"default":5,"description":"Timeout in seconds to wait for the transaction to be processed by Ethos. Defaults to 5 seconds. Set to 0 to skip waiting.","type":"number"}},"required":["score","title","address"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"hash":{"type":"string","description":"0x-prefixed 32-byte transaction hash (keccak256)"},"review":{"type":"object","properties":{"id":{"type":"number"},"authorProfileId":{"type":"number"},"author":{"type":"string"},"subject":{"type":"string"},"score":{"type":"string","enum":["negative","neutral","positive"]},"comment":{"type":"string"},"metadata":{"type":"string"},"createdAt":{"type":"number"},"archived":{"type":"boolean"},"attestationDetails":{"type":"object","properties":{"account":{"type":"string"},"service":{"type":"string"}},"required":["account","service"],"additionalProperties":false}},"required":["id","authorProfileId","author","subject","score","comment","metadata","createdAt","archived"],"additionalProperties":false},"reviewSlug":{"type":"string"}},"required":["hash"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}}}}
```

## Create a review for x.com account via an Ethos Everywhere wallet

> Signs and submits a review transaction for an x.com account (id or username) using the user's Ethos Everywhere wallet. > ⚠️ \*\*Warning:\*\* This is a beta endpoint. It is \*\*not guaranteed to be stable\*\* and may change or break without notice.

```json
{"openapi":"3.1.0","info":{"title":"Ethos API","version":"v2"},"tags":[{"name":"wallets"}],"servers":[{"url":"https://api.ethos.network/api/v2"}],"security":[{"Authorization":[]}],"components":{"securitySchemes":{"Authorization":{"type":"http","scheme":"bearer"}},"schemas":{"error.BAD_REQUEST":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Invalid input data error (400)","description":"The error information"},"error.UNAUTHORIZED":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Authorization not provided error (401)","description":"The error information"},"error.FORBIDDEN":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Insufficient access error (403)","description":"The error information"},"error.INTERNAL_SERVER_ERROR":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Internal server error error (500)","description":"The error information"}}},"paths":{"/wallets/privy/post/review/by-x":{"post":{"operationId":"wallets-privy-addReviewByX","summary":"Create a review for x.com account via an Ethos Everywhere wallet","description":"Signs and submits a review transaction for an x.com account (id or username) using the user's Ethos Everywhere wallet. > ⚠️ **Warning:** This is a beta endpoint. It is **not guaranteed to be stable** and may change or break without notice.","tags":["wallets"],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"score":{"type":"string","enum":["negative","neutral","positive"]},"title":{"type":"string","minLength":1},"content":{"type":"string","minLength":1},"metadata":{"default":[],"anyOf":[{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1},"value":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}},"required":["key"]}},{"type":"object","propertyNames":{"type":"string","minLength":1},"additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}}]},"x":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","minLength":1}},"required":["id"]},{"type":"object","properties":{"username":{"type":"string","minLength":1}},"required":["username"]}]},"waitForTxTimeoutSeconds":{"default":5,"description":"Timeout in seconds to wait for the transaction to be processed by Ethos. Defaults to 5 seconds. Set to 0 to skip waiting.","type":"number"}},"required":["score","title","x"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"hash":{"type":"string","description":"0x-prefixed 32-byte transaction hash (keccak256)"},"review":{"type":"object","properties":{"id":{"type":"number"},"authorProfileId":{"type":"number"},"author":{"type":"string"},"subject":{"type":"string"},"score":{"type":"string","enum":["negative","neutral","positive"]},"comment":{"type":"string"},"metadata":{"type":"string"},"createdAt":{"type":"number"},"archived":{"type":"boolean"},"attestationDetails":{"type":"object","properties":{"account":{"type":"string"},"service":{"type":"string"}},"required":["account","service"],"additionalProperties":false}},"required":["id","authorProfileId","author","subject","score","comment","metadata","createdAt","archived"],"additionalProperties":false},"reviewSlug":{"type":"string"}},"required":["hash"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}}}}
```

## Edit a review via an Ethos Everywhere wallet

> Signs and submits a review edit transaction using the user's Ethos Everywhere wallet. > ⚠️ \*\*Warning:\*\* This is a beta endpoint. It is \*\*not guaranteed to be stable\*\* and may change or break without notice.

```json
{"openapi":"3.1.0","info":{"title":"Ethos API","version":"v2"},"tags":[{"name":"wallets"}],"servers":[{"url":"https://api.ethos.network/api/v2"}],"security":[{"Authorization":[]}],"components":{"securitySchemes":{"Authorization":{"type":"http","scheme":"bearer"}},"schemas":{"error.BAD_REQUEST":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Invalid input data error (400)","description":"The error information"},"error.UNAUTHORIZED":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Authorization not provided error (401)","description":"The error information"},"error.FORBIDDEN":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Insufficient access error (403)","description":"The error information"},"error.INTERNAL_SERVER_ERROR":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Internal server error error (500)","description":"The error information"}}},"paths":{"/wallets/privy/edit/review":{"post":{"operationId":"wallets-privy-editReview","summary":"Edit a review via an Ethos Everywhere wallet","description":"Signs and submits a review edit transaction using the user's Ethos Everywhere wallet. > ⚠️ **Warning:** This is a beta endpoint. It is **not guaranteed to be stable** and may change or break without notice.","tags":["wallets"],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer","minimum":0,"maximum":2147483647},"title":{"type":"string","minLength":1},"content":{"type":"string","minLength":1},"metadata":{"default":[],"anyOf":[{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1},"value":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}},"required":["key"]}},{"type":"object","propertyNames":{"type":"string","minLength":1},"additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}}]},"waitForTxTimeoutSeconds":{"default":5,"description":"Timeout in seconds to wait for the transaction to be processed by Ethos. Defaults to 5 seconds. Set to 0 to skip waiting.","type":"number"}},"required":["id","title"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"hash":{"type":"string","description":"0x-prefixed 32-byte transaction hash (keccak256)"},"review":{"type":"object","properties":{"id":{"type":"number"},"authorProfileId":{"type":"number"},"author":{"type":"string"},"subject":{"type":"string"},"score":{"type":"string","enum":["negative","neutral","positive"]},"comment":{"type":"string"},"metadata":{"type":"string"},"createdAt":{"type":"number"},"archived":{"type":"boolean"},"attestationDetails":{"type":"object","properties":{"account":{"type":"string"},"service":{"type":"string"}},"required":["account","service"],"additionalProperties":false}},"required":["id","authorProfileId","author","subject","score","comment","metadata","createdAt","archived"],"additionalProperties":false},"reviewSlug":{"type":"string"}},"required":["hash"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}}}}
```

## Vote on an activity via Ethos Everywhere wallet

> Submits an upvote or downvote on a review, vouch, attestation, slash, broker post, project, reputation market, or reply using the user's Ethos Everywhere wallet. > ⚠️ \*\*Warning:\*\* This is a beta endpoint. It is \*\*not guaranteed to be stable\*\* and may change or break without notice.

```json
{"openapi":"3.1.0","info":{"title":"Ethos API","version":"v2"},"tags":[{"name":"wallets"}],"servers":[{"url":"https://api.ethos.network/api/v2"}],"security":[{"Authorization":[]}],"components":{"securitySchemes":{"Authorization":{"type":"http","scheme":"bearer"}},"schemas":{"error.BAD_REQUEST":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Invalid input data error (400)","description":"The error information"},"error.UNAUTHORIZED":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Authorization not provided error (401)","description":"The error information"},"error.FORBIDDEN":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Insufficient access error (403)","description":"The error information"},"error.INTERNAL_SERVER_ERROR":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Internal server error error (500)","description":"The error information"}}},"paths":{"/wallets/activity/{activityType}/{id}/vote":{"post":{"operationId":"wallets-privy-vote","summary":"Vote on an activity via Ethos Everywhere wallet","description":"Submits an upvote or downvote on a review, vouch, attestation, slash, broker post, project, reputation market, or reply using the user's Ethos Everywhere wallet. > ⚠️ **Warning:** This is a beta endpoint. It is **not guaranteed to be stable** and may change or break without notice.","tags":["wallets"],"parameters":[{"in":"path","name":"activityType","schema":{"type":"string","enum":["attestation","broker-post","closed-slash","human-verification","invitation-accepted","market","market-v2-trade","market-vote","open-slash","project","reply","review","review-archived","slash","unvouch","unvouch-v2","vouch","vouch-v2","vouch-v2-decrease","vouch-v2-increase","vote","xp-tip"]},"required":true},{"in":"path","name":"id","schema":{"type":"integer","minimum":0,"maximum":2147483647},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"isUpvote":{"type":"boolean"},"isArchive":{"type":"boolean"},"waitForTxTimeoutSeconds":{"default":5,"description":"Timeout in seconds to wait for the transaction to be processed by Ethos. Defaults to 5 seconds. Set to 0 to skip waiting.","type":"number"}},"required":["isUpvote"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"hash":{"type":"string","description":"0x-prefixed 32-byte transaction hash (keccak256)"},"vote":{"type":"object"}},"required":["hash"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}}}}
```

## Reply to an activity via Ethos Everywhere wallet

> Posts a reply to a review, vouch, attestation, slash, broker post, project, reputation market, or existing reply (use activityType='reply') using the user's Ethos Everywhere wallet. > ⚠️ \*\*Warning:\*\* This is a beta endpoint. It is \*\*not guaranteed to be stable\*\* and may change or break without notice.

```json
{"openapi":"3.1.0","info":{"title":"Ethos API","version":"v2"},"tags":[{"name":"wallets"}],"servers":[{"url":"https://api.ethos.network/api/v2"}],"security":[{"Authorization":[]}],"components":{"securitySchemes":{"Authorization":{"type":"http","scheme":"bearer"}},"schemas":{"error.BAD_REQUEST":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Invalid input data error (400)","description":"The error information"},"error.UNAUTHORIZED":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Authorization not provided error (401)","description":"The error information"},"error.FORBIDDEN":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Insufficient access error (403)","description":"The error information"},"error.INTERNAL_SERVER_ERROR":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Internal server error error (500)","description":"The error information"}}},"paths":{"/wallets/activity/{activityType}/{id}/reply":{"post":{"operationId":"wallets-privy-reply","summary":"Reply to an activity via Ethos Everywhere wallet","description":"Posts a reply to a review, vouch, attestation, slash, broker post, project, reputation market, or existing reply (use activityType='reply') using the user's Ethos Everywhere wallet. > ⚠️ **Warning:** This is a beta endpoint. It is **not guaranteed to be stable** and may change or break without notice.","tags":["wallets"],"parameters":[{"in":"path","name":"activityType","schema":{"type":"string","enum":["attestation","broker-post","closed-slash","human-verification","invitation-accepted","market","market-v2-trade","market-vote","open-slash","project","reply","review","review-archived","slash","unvouch","unvouch-v2","vouch","vouch-v2","vouch-v2-decrease","vouch-v2-increase","vote","xp-tip"]},"required":true},{"in":"path","name":"id","schema":{"type":"integer","minimum":0,"maximum":2147483647},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"content":{"type":"string","minLength":1},"metadata":{"default":[],"anyOf":[{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1},"value":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}},"required":["key"]}},{"type":"object","propertyNames":{"type":"string","minLength":1},"additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}}]},"waitForTxTimeoutSeconds":{"default":5,"description":"Timeout in seconds to wait for the transaction to be processed by Ethos. Defaults to 5 seconds. Set to 0 to skip waiting.","type":"number"}},"required":["content"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"hash":{"type":"string","description":"0x-prefixed 32-byte transaction hash (keccak256)"},"reply":{"type":"object"}},"required":["hash"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}}}}
```

## Archive a review via Ethos Everywhere wallet

> Archives a review using the user's Ethos Everywhere wallet. > ⚠️ \*\*Warning:\*\* This is a beta endpoint. It is \*\*not guaranteed to be stable\*\* and may change or break without notice.

```json
{"openapi":"3.1.0","info":{"title":"Ethos API","version":"v2"},"tags":[{"name":"wallets"}],"servers":[{"url":"https://api.ethos.network/api/v2"}],"security":[{"Authorization":[]}],"components":{"securitySchemes":{"Authorization":{"type":"http","scheme":"bearer"}},"schemas":{"error.BAD_REQUEST":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Invalid input data error (400)","description":"The error information"},"error.UNAUTHORIZED":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Authorization not provided error (401)","description":"The error information"},"error.FORBIDDEN":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Insufficient access error (403)","description":"The error information"},"error.INTERNAL_SERVER_ERROR":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Internal server error error (500)","description":"The error information"}}},"paths":{"/wallets/activity/review/{id}/archive":{"post":{"operationId":"wallets-privy-archiveReview","summary":"Archive a review via Ethos Everywhere wallet","description":"Archives a review using the user's Ethos Everywhere wallet. > ⚠️ **Warning:** This is a beta endpoint. It is **not guaranteed to be stable** and may change or break without notice.","tags":["wallets"],"parameters":[{"in":"path","name":"id","schema":{"type":"integer","minimum":0,"maximum":2147483647},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"waitForTxTimeoutSeconds":{"default":5,"description":"Timeout in seconds to wait for the transaction to be processed by Ethos. Defaults to 5 seconds. Set to 0 to skip waiting.","type":"number"}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"hash":{"type":"string","description":"0x-prefixed 32-byte transaction hash (keccak256)"},"review":{"type":"object"}},"required":["hash"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}}}}
```

## Invite an address via Ethos Everywhere wallet

> Invites an address to Ethos using the user's Ethos Everywhere wallet. > ⚠️ \*\*Warning:\*\* This is a beta endpoint. It is \*\*not guaranteed to be stable\*\* and may change or break without notice.

```json
{"openapi":"3.1.0","info":{"title":"Ethos API","version":"v2"},"tags":[{"name":"wallets"}],"servers":[{"url":"https://api.ethos.network/api/v2"}],"security":[{"Authorization":[]}],"components":{"securitySchemes":{"Authorization":{"type":"http","scheme":"bearer"}},"schemas":{"error.BAD_REQUEST":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Invalid input data error (400)","description":"The error information"},"error.UNAUTHORIZED":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Authorization not provided error (401)","description":"The error information"},"error.FORBIDDEN":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Insufficient access error (403)","description":"The error information"},"error.INTERNAL_SERVER_ERROR":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Internal server error error (500)","description":"The error information"}}},"paths":{"/wallets/privy/invite/address":{"post":{"operationId":"wallets-privy-inviteAddress","summary":"Invite an address via Ethos Everywhere wallet","description":"Invites an address to Ethos using the user's Ethos Everywhere wallet. > ⚠️ **Warning:** This is a beta endpoint. It is **not guaranteed to be stable** and may change or break without notice.","tags":["wallets"],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"invitee":{"type":"string","description":"Ethereum address (0x-prefixed, 20 bytes)"},"waitForTxTimeoutSeconds":{"default":5,"description":"Timeout in seconds to wait for the transaction to be processed by Ethos. Defaults to 5 seconds. Set to 0 to skip waiting.","type":"number"}},"required":["invitee"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"hash":{"type":"string","description":"0x-prefixed 32-byte transaction hash (keccak256)"},"processed":{"type":"boolean","description":"Whether the invitation transaction has been received & processed by Ethos."}},"required":["hash","processed"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}}}}
```

## Cancel an invite via Ethos Everywhere wallet

> Cancels an invitation (uninvites a user) using the user's Ethos Everywhere wallet. > ⚠️ \*\*Warning:\*\* This is a beta endpoint. It is \*\*not guaranteed to be stable\*\* and may change or break without notice.

```json
{"openapi":"3.1.0","info":{"title":"Ethos API","version":"v2"},"tags":[{"name":"wallets"}],"servers":[{"url":"https://api.ethos.network/api/v2"}],"security":[{"Authorization":[]}],"components":{"securitySchemes":{"Authorization":{"type":"http","scheme":"bearer"}},"schemas":{"error.BAD_REQUEST":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Invalid input data error (400)","description":"The error information"},"error.UNAUTHORIZED":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Authorization not provided error (401)","description":"The error information"},"error.FORBIDDEN":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Insufficient access error (403)","description":"The error information"},"error.INTERNAL_SERVER_ERROR":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Internal server error error (500)","description":"The error information"}}},"paths":{"/wallets/privy/invite/cancel":{"post":{"operationId":"wallets-privy-cancelInvite","summary":"Cancel an invite via Ethos Everywhere wallet","description":"Cancels an invitation (uninvites a user) using the user's Ethos Everywhere wallet. > ⚠️ **Warning:** This is a beta endpoint. It is **not guaranteed to be stable** and may change or break without notice.","tags":["wallets"],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"invitee":{"type":"string","description":"Ethereum address (0x-prefixed, 20 bytes)"},"waitForUninviteTimeoutSeconds":{"default":5,"description":"Timeout in seconds to wait for the uninvite transaction to be processed by Ethos. Defaults to 5 seconds. Set to 0 to skip waiting.","type":"number"}},"required":["invitee"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"hash":{"type":"string","description":"0x-prefixed 32-byte transaction hash (keccak256)"},"processed":{"type":"boolean","description":"Whether the uninvite transaction has been received & processed by Ethos."}},"required":["hash","processed"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}}}}
```

## Archive a bond via Ethos Everywhere wallet

> Archives a bond using the user's Ethos Everywhere wallet. > ⚠️ \*\*Warning:\*\* This is a beta endpoint. It is \*\*not guaranteed to be stable\*\* and may change or break without notice.

```json
{"openapi":"3.1.0","info":{"title":"Ethos API","version":"v2"},"tags":[{"name":"wallets"}],"servers":[{"url":"https://api.ethos.network/api/v2"}],"security":[{"Authorization":[]}],"components":{"securitySchemes":{"Authorization":{"type":"http","scheme":"bearer"}},"schemas":{"error.BAD_REQUEST":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Invalid input data error (400)","description":"The error information"},"error.UNAUTHORIZED":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Authorization not provided error (401)","description":"The error information"},"error.FORBIDDEN":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Insufficient access error (403)","description":"The error information"},"error.INTERNAL_SERVER_ERROR":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Internal server error error (500)","description":"The error information"}}},"paths":{"/wallets/activity/bond/{bondId}/archive":{"post":{"operationId":"wallets-privy-archiveBond","summary":"Archive a bond via Ethos Everywhere wallet","description":"Archives a bond using the user's Ethos Everywhere wallet. > ⚠️ **Warning:** This is a beta endpoint. It is **not guaranteed to be stable** and may change or break without notice.","tags":["wallets"],"parameters":[{"in":"path","name":"bondId","schema":{"type":"integer","minimum":0,"maximum":2147483647},"required":true}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"archiveReason":{"type":"string","minLength":1},"waitForTxTimeoutSeconds":{"default":5,"description":"Timeout in seconds to wait for the transaction to be processed by Ethos. Defaults to 5 seconds. Set to 0 to skip waiting.","type":"number"}},"required":["archiveReason"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"hash":{"type":"string","description":"0x-prefixed 32-byte transaction hash (keccak256)"}},"required":["hash"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}}}}
```

## Create a bond via Ethos Everywhere wallet

> Creates a bond using the user's Ethos Everywhere wallet. The signature must be obtained from the signatures.createHumanityBond endpoint first. > ⚠️ \*\*Warning:\*\* This is a beta endpoint. It is \*\*not guaranteed to be stable\*\* and may change or break without notice.

```json
{"openapi":"3.1.0","info":{"title":"Ethos API","version":"v2"},"tags":[{"name":"wallets"}],"servers":[{"url":"https://api.ethos.network/api/v2"}],"security":[{"Authorization":[]}],"components":{"securitySchemes":{"Authorization":{"type":"http","scheme":"bearer"}},"schemas":{"error.BAD_REQUEST":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Invalid input data error (400)","description":"The error information"},"error.UNAUTHORIZED":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Authorization not provided error (401)","description":"The error information"},"error.FORBIDDEN":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Insufficient access error (403)","description":"The error information"},"error.INTERNAL_SERVER_ERROR":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Internal server error error (500)","description":"The error information"}}},"paths":{"/wallets/privy/bonds":{"post":{"operationId":"wallets-privy-createBond","summary":"Create a bond via Ethos Everywhere wallet","description":"Creates a bond using the user's Ethos Everywhere wallet. The signature must be obtained from the signatures.createHumanityBond endpoint first. > ⚠️ **Warning:** This is a beta endpoint. It is **not guaranteed to be stable** and may change or break without notice.","tags":["wallets"],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"statement":{"type":"string","minLength":1},"bondType":{"type":"string","minLength":1},"expiration":{"type":"string","minLength":1},"amount":{"type":"string","minLength":1},"amountType":{"type":"string","minLength":1},"metadata":{"default":"","type":"string"},"randValue":{"type":"integer","minimum":0,"maximum":9007199254740991},"signature":{"type":"string","description":"65-byte ECDSA signature (0x-prefixed hex, 132 chars)"},"waitForTxTimeoutSeconds":{"default":5,"description":"Timeout in seconds to wait for the transaction to be processed by Ethos. Defaults to 5 seconds. Set to 0 to skip waiting.","type":"number"}},"required":["statement","bondType","expiration","amount","amountType","randValue","signature"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"hash":{"type":"string","description":"0x-prefixed 32-byte transaction hash (keccak256)"},"processed":{"type":"boolean","description":"Whether the bond transaction has been received & processed by Ethos."}},"required":["hash","processed"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}}}}
```

## Vouch for a user via Ethos Everywhere wallet

> Submits a vouch transaction using the user’s Ethos Everywhere wallet. The user’s EEW wallet must hold sufficient ETH to cover both the stake amount and gas.

```json
{"openapi":"3.1.0","info":{"title":"Ethos API","version":"v2"},"tags":[{"name":"wallets"}],"servers":[{"url":"https://api.ethos.network/api/v2"}],"security":[{"Authorization":[]}],"components":{"securitySchemes":{"Authorization":{"type":"http","scheme":"bearer"}},"schemas":{"error.BAD_REQUEST":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Invalid input data error (400)","description":"The error information"},"error.UNAUTHORIZED":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Authorization not provided error (401)","description":"The error information"},"error.FORBIDDEN":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Insufficient access error (403)","description":"The error information"},"error.INTERNAL_SERVER_ERROR":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Internal server error error (500)","description":"The error information"}}},"paths":{"/wallets/privy/vouches":{"post":{"operationId":"wallets-privy-vouch","summary":"Vouch for a user via Ethos Everywhere wallet","description":"Submits a vouch transaction using the user’s Ethos Everywhere wallet. The user’s EEW wallet must hold sufficient ETH to cover both the stake amount and gas.","tags":["wallets"],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"target":{"anyOf":[{"type":"object","properties":{"address":{"type":"string","description":"Ethereum address (0x-prefixed, 20 bytes)"}},"required":["address"],"additionalProperties":false},{"type":"object","properties":{"profileId":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647}},"required":["profileId"],"additionalProperties":false},{"type":"object","properties":{"attestationHash":{"type":"string","description":"0x-prefixed 32-byte hex string (bytes32)"}},"required":["attestationHash"],"additionalProperties":false}]},"comment":{"type":"string","minLength":1},"metadata":{"default":{},"type":"object","properties":{"description":{"type":"string"},"source":{"type":"string"},"importedFromTestnet":{"type":"integer","minimum":0,"maximum":9007199254740991},"batchId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"reviewId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"client":{"type":"string"},"clientSource":{"type":"string"},"version":{"type":"string"}}},"paymentAmountEth":{"type":"string"},"waitForTxTimeoutSeconds":{"default":5,"description":"Timeout in seconds to wait for the transaction to be processed by Ethos. Defaults to 5 seconds. Set to 0 to skip waiting.","type":"number"}},"required":["target","comment","paymentAmountEth"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"hash":{"type":"string","description":"0x-prefixed 32-byte transaction hash (keccak256)"},"processed":{"type":"boolean","description":"Whether the vouch transaction has been received & processed by Ethos."}},"required":["hash","processed"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}}}}
```

## Increase an existing vouch via Ethos Everywhere wallet

> Submits an increaseVouch transaction using the user’s Ethos Everywhere wallet. Restricted to vouches whose authorProfileId equals the caller’s profile — the contract permits any address registered to that profile, so the EEW can top up a vouch originally created by a different wallet. The EEW must hold sufficient ETH to cover both the additional stake and gas.

```json
{"openapi":"3.1.0","info":{"title":"Ethos API","version":"v2"},"tags":[{"name":"wallets"}],"servers":[{"url":"https://api.ethos.network/api/v2"}],"security":[{"Authorization":[]}],"components":{"securitySchemes":{"Authorization":{"type":"http","scheme":"bearer"}},"schemas":{"error.BAD_REQUEST":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Invalid input data error (400)","description":"The error information"},"error.UNAUTHORIZED":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Authorization not provided error (401)","description":"The error information"},"error.FORBIDDEN":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Insufficient access error (403)","description":"The error information"},"error.INTERNAL_SERVER_ERROR":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Internal server error error (500)","description":"The error information"}}},"paths":{"/wallets/privy/vouches/increase":{"post":{"operationId":"wallets-privy-increaseVouch","summary":"Increase an existing vouch via Ethos Everywhere wallet","description":"Submits an increaseVouch transaction using the user’s Ethos Everywhere wallet. Restricted to vouches whose authorProfileId equals the caller’s profile — the contract permits any address registered to that profile, so the EEW can top up a vouch originally created by a different wallet. The EEW must hold sufficient ETH to cover both the additional stake and gas.","tags":["wallets"],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"vouchId":{"type":"integer","minimum":0,"maximum":9007199254740991},"paymentAmountEth":{"type":"string"},"waitForTxTimeoutSeconds":{"default":5,"description":"Timeout in seconds to wait for the transaction to be processed by Ethos. Defaults to 5 seconds. Set to 0 to skip waiting.","type":"number"}},"required":["vouchId","paymentAmountEth"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"hash":{"type":"string","description":"0x-prefixed 32-byte transaction hash (keccak256)"},"processed":{"type":"boolean","description":"Whether the increaseVouch transaction has been received & processed by Ethos."}},"required":["hash","processed"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}}}}
```

## Unvouch via Ethos Everywhere wallet

> Submits an unvouch transaction using the user’s Ethos Everywhere wallet. Restricted to vouches whose original authorAddress equals the EEW. The contract refunds \`balance - exitFee\` to the original authorAddress (the EEW). When \`isHealthy=false\`, dispatches to \`unvouchUnhealthy\` (combo unvouch + markUnhealthy).

```json
{"openapi":"3.1.0","info":{"title":"Ethos API","version":"v2"},"tags":[{"name":"wallets"}],"servers":[{"url":"https://api.ethos.network/api/v2"}],"security":[{"Authorization":[]}],"components":{"securitySchemes":{"Authorization":{"type":"http","scheme":"bearer"}},"schemas":{"error.BAD_REQUEST":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Invalid input data error (400)","description":"The error information"},"error.UNAUTHORIZED":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Authorization not provided error (401)","description":"The error information"},"error.FORBIDDEN":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Insufficient access error (403)","description":"The error information"},"error.INTERNAL_SERVER_ERROR":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Internal server error error (500)","description":"The error information"}}},"paths":{"/wallets/privy/vouches/unvouch":{"post":{"operationId":"wallets-privy-unvouch","summary":"Unvouch via Ethos Everywhere wallet","description":"Submits an unvouch transaction using the user’s Ethos Everywhere wallet. Restricted to vouches whose original authorAddress equals the EEW. The contract refunds `balance - exitFee` to the original authorAddress (the EEW). When `isHealthy=false`, dispatches to `unvouchUnhealthy` (combo unvouch + markUnhealthy).","tags":["wallets"],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"vouchId":{"type":"integer","minimum":0,"maximum":9007199254740991},"isHealthy":{"type":"boolean"},"waitForTxTimeoutSeconds":{"default":5,"description":"Timeout in seconds to wait for the transaction to be processed by Ethos. Defaults to 5 seconds. Set to 0 to skip waiting.","type":"number"}},"required":["vouchId","isHealthy"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"hash":{"type":"string","description":"0x-prefixed 32-byte transaction hash (keccak256)"},"processed":{"type":"boolean","description":"Whether the unvouch transaction has been received & processed by Ethos."}},"required":["hash","processed"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}}}}
```

## Buy market votes via Ethos Everywhere wallet

> Submits a buyVotes transaction on the ReputationMarket contract using the user’s Ethos Everywhere wallet. The user’s EEW wallet must hold sufficient ETH to cover both the buy amount and gas.

```json
{"openapi":"3.1.0","info":{"title":"Ethos API","version":"v2"},"tags":[{"name":"wallets"}],"servers":[{"url":"https://api.ethos.network/api/v2"}],"security":[{"Authorization":[]}],"components":{"securitySchemes":{"Authorization":{"type":"http","scheme":"bearer"}},"schemas":{"error.BAD_REQUEST":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Invalid input data error (400)","description":"The error information"},"error.UNAUTHORIZED":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Authorization not provided error (401)","description":"The error information"},"error.FORBIDDEN":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Insufficient access error (403)","description":"The error information"},"error.INTERNAL_SERVER_ERROR":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Internal server error error (500)","description":"The error information"}}},"paths":{"/wallets/privy/markets/buy":{"post":{"operationId":"wallets-privy-marketBuyVotes","summary":"Buy market votes via Ethos Everywhere wallet","description":"Submits a buyVotes transaction on the ReputationMarket contract using the user’s Ethos Everywhere wallet. The user’s EEW wallet must hold sufficient ETH to cover both the buy amount and gas.","tags":["wallets"],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"profileId":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"isPositive":{"type":"boolean"},"maxVotesToBuy":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"minVotesToBuy":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"buyAmountEth":{"type":"string"},"waitForTxTimeoutSeconds":{"default":5,"description":"Timeout in seconds to wait for the transaction to be processed by Ethos. Defaults to 5 seconds. Set to 0 to skip waiting.","type":"number"}},"required":["profileId","isPositive","maxVotesToBuy","minVotesToBuy","buyAmountEth"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"hash":{"type":"string","description":"0x-prefixed 32-byte transaction hash (keccak256)"},"processed":{"type":"boolean","description":"Whether the market buy transaction has been received & processed by Ethos."}},"required":["hash","processed"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}}}}
```

## Sell market votes via Ethos Everywhere wallet

> Submits a sellVotes transaction on the ReputationMarket contract using the user’s Ethos Everywhere wallet. The contract sends ETH proceeds back to the seller.

```json
{"openapi":"3.1.0","info":{"title":"Ethos API","version":"v2"},"tags":[{"name":"wallets"}],"servers":[{"url":"https://api.ethos.network/api/v2"}],"security":[{"Authorization":[]}],"components":{"securitySchemes":{"Authorization":{"type":"http","scheme":"bearer"}},"schemas":{"error.BAD_REQUEST":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Invalid input data error (400)","description":"The error information"},"error.UNAUTHORIZED":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Authorization not provided error (401)","description":"The error information"},"error.FORBIDDEN":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Insufficient access error (403)","description":"The error information"},"error.INTERNAL_SERVER_ERROR":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Internal server error error (500)","description":"The error information"}}},"paths":{"/wallets/privy/markets/sell":{"post":{"operationId":"wallets-privy-marketSellVotes","summary":"Sell market votes via Ethos Everywhere wallet","description":"Submits a sellVotes transaction on the ReputationMarket contract using the user’s Ethos Everywhere wallet. The contract sends ETH proceeds back to the seller.","tags":["wallets"],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"profileId":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647},"isPositive":{"type":"boolean"},"amount":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"minimumVotePrice":{"type":"string"},"waitForTxTimeoutSeconds":{"default":5,"description":"Timeout in seconds to wait for the transaction to be processed by Ethos. Defaults to 5 seconds. Set to 0 to skip waiting.","type":"number"}},"required":["profileId","isPositive","amount","minimumVotePrice"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"hash":{"type":"string","description":"0x-prefixed 32-byte transaction hash (keccak256)"},"processed":{"type":"boolean","description":"Whether the market sell transaction has been received & processed by Ethos."}},"required":["hash","processed"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}}}}
```

## Open a position on a v2 market via Ethos Everywhere wallet

> Submits an openPosition transaction on the EthosMarket contract using the user’s Ethos Everywhere wallet. > ⚠️ \*\*Warning:\*\* This is a beta endpoint. It is \*\*not guaranteed to be stable\*\* and may change or break without notice.

```json
{"openapi":"3.1.0","info":{"title":"Ethos API","version":"v2"},"tags":[{"name":"wallets"}],"servers":[{"url":"https://api.ethos.network/api/v2"}],"security":[{"Authorization":[]}],"components":{"securitySchemes":{"Authorization":{"type":"http","scheme":"bearer"}},"schemas":{"error.BAD_REQUEST":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Invalid input data error (400)","description":"The error information"},"error.UNAUTHORIZED":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Authorization not provided error (401)","description":"The error information"},"error.FORBIDDEN":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Insufficient access error (403)","description":"The error information"},"error.INTERNAL_SERVER_ERROR":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Internal server error error (500)","description":"The error information"}}},"paths":{"/wallets/privy/markets-v2/open-position":{"post":{"operationId":"wallets-privy-marketV2OpenPosition","summary":"Open a position on a v2 market via Ethos Everywhere wallet","description":"Submits an openPosition transaction on the EthosMarket contract using the user’s Ethos Everywhere wallet. > ⚠️ **Warning:** This is a beta endpoint. It is **not guaranteed to be stable** and may change or break without notice.","tags":["wallets"],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"marketOnchainId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"isPositive":{"type":"boolean"},"paymentAmount":{"type":"string"},"minTokensOut":{"type":"string"},"waitForTxTimeoutSeconds":{"default":5,"description":"Timeout in seconds to wait for the transaction to be processed by Ethos. Defaults to 5 seconds. Set to 0 to skip waiting.","type":"number"}},"required":["marketOnchainId","isPositive","paymentAmount","minTokensOut"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"hash":{"type":"string","description":"0x-prefixed 32-byte transaction hash (keccak256)"},"processed":{"type":"boolean","description":"Whether the v2 market open position transaction has been received & processed by Ethos."}},"required":["hash","processed"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}}}}
```

## Close a position on a v2 market via Ethos Everywhere wallet

> Submits a closePosition transaction on the EthosMarket contract using the user’s Ethos Everywhere wallet. Burns position tokens and returns MMB credits. > ⚠️ \*\*Warning:\*\* This is a beta endpoint. It is \*\*not guaranteed to be stable\*\* and may change or break without notice.

```json
{"openapi":"3.1.0","info":{"title":"Ethos API","version":"v2"},"tags":[{"name":"wallets"}],"servers":[{"url":"https://api.ethos.network/api/v2"}],"security":[{"Authorization":[]}],"components":{"securitySchemes":{"Authorization":{"type":"http","scheme":"bearer"}},"schemas":{"error.BAD_REQUEST":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Invalid input data error (400)","description":"The error information"},"error.UNAUTHORIZED":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Authorization not provided error (401)","description":"The error information"},"error.FORBIDDEN":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Insufficient access error (403)","description":"The error information"},"error.INTERNAL_SERVER_ERROR":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Internal server error error (500)","description":"The error information"}}},"paths":{"/wallets/privy/markets-v2/close-position":{"post":{"operationId":"wallets-privy-marketV2ClosePosition","summary":"Close a position on a v2 market via Ethos Everywhere wallet","description":"Submits a closePosition transaction on the EthosMarket contract using the user’s Ethos Everywhere wallet. Burns position tokens and returns MMB credits. > ⚠️ **Warning:** This is a beta endpoint. It is **not guaranteed to be stable** and may change or break without notice.","tags":["wallets"],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"marketOnchainId":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"isPositive":{"type":"boolean"},"positionTokenAmount":{"type":"string"},"minCreditsOut":{"type":"string"},"waitForTxTimeoutSeconds":{"default":5,"description":"Timeout in seconds to wait for the transaction to be processed by Ethos. Defaults to 5 seconds. Set to 0 to skip waiting.","type":"number"}},"required":["marketOnchainId","isPositive","positionTokenAmount","minCreditsOut"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"hash":{"type":"string","description":"0x-prefixed 32-byte transaction hash (keccak256)"},"processed":{"type":"boolean","description":"Whether the v2 market close position transaction has been received & processed by Ethos."}},"required":["hash","processed"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}}}}
```

## Send MMB via Ethos Everywhere wallet

> Submits an MMB transfer using the user Ethos Everywhere wallet. > ⚠️ \*\*Warning:\*\* This is a beta endpoint. It is \*\*not guaranteed to be stable\*\* and may change or break without notice.

```json
{"openapi":"3.1.0","info":{"title":"Ethos API","version":"v2"},"tags":[{"name":"wallets"}],"servers":[{"url":"https://api.ethos.network/api/v2"}],"security":[{"Authorization":[]}],"components":{"securitySchemes":{"Authorization":{"type":"http","scheme":"bearer"}},"schemas":{"error.BAD_REQUEST":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Invalid input data error (400)","description":"The error information"},"error.UNAUTHORIZED":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Authorization not provided error (401)","description":"The error information"},"error.FORBIDDEN":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Insufficient access error (403)","description":"The error information"},"error.INTERNAL_SERVER_ERROR":{"type":"object","properties":{"message":{"type":"string","description":"The error message"},"code":{"type":"string","description":"The error code"},"issues":{"description":"An array of issues that were responsible for the error","type":"array","items":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"],"additionalProperties":false}}},"required":["message","code"],"additionalProperties":false,"title":"Internal server error error (500)","description":"The error information"}}},"paths":{"/wallets/privy/mmb/send":{"post":{"operationId":"wallets-privy-sendMmb","summary":"Send MMB via Ethos Everywhere wallet","description":"Submits an MMB transfer using the user Ethos Everywhere wallet. > ⚠️ **Warning:** This is a beta endpoint. It is **not guaranteed to be stable** and may change or break without notice.","tags":["wallets"],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"recipient":{"type":"string","description":"Ethereum address (0x-prefixed, 20 bytes)"},"amount":{"type":"string"}},"required":["recipient","amount"]}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"hash":{"type":"string","description":"0x-prefixed 32-byte transaction hash (keccak256)"}},"required":["hash"],"additionalProperties":false}}}},"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.BAD_REQUEST"}}}},"401":{"description":"Authorization not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.UNAUTHORIZED"}}}},"403":{"description":"Insufficient access","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.FORBIDDEN"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/error.INTERNAL_SERVER_ERROR"}}}}}}}}}
```
