Broker

List broker posts with filtering and pagination

get

Retrieve a paginated list of broker posts. Supports filtering by type (SELL, BUY, HIRE, FOR_HIRE), status, tags, and search functionality for title/description. Results can be sorted by newest, score, top (most votes), or expiresAt (expiring soon).

Query parameters
typestring · enumOptionalPossible values:
levelstring · enumOptionalPossible values:
tagsany ofOptional
stringOptional
or
string[]Optional
searchstringOptional
sortBystring · enumOptionalDefault: topPossible values:
recentlyCompletedDaysinteger · min: 1 · max: 30Optional
limitinteger · max: 100OptionalDefault: 50
offsetnumberOptionalDefault: 0
Responses
200

Successful response

application/json
get
/broker/posts
GET /api/v2/broker/posts HTTP/1.1
Host: api.ethos.network
Accept: */*
{
  "values": [
    {
      "id": 1,
      "authorProfileId": 1,
      "type": "SELL",
      "title": "text",
      "description": "text",
      "cost": "text",
      "tags": [
        "text"
      ],
      "level": "BASIC",
      "status": "OPEN",
      "imageUrl": "https://example.com",
      "isArchived": true,
      "createdAt": "text",
      "updatedAt": "text",
      "expiresAt": "text",
      "author": {
        "id": 1,
        "profileId": 1,
        "displayName": "text",
        "username": "text",
        "avatarUrl": "https://example.com",
        "description": "text",
        "score": 1,
        "status": "ACTIVE",
        "userkeys": [
          "text"
        ],
        "xpTotal": 1,
        "xpStreakDays": 1,
        "xpRemovedDueToAbuse": true,
        "links": {
          "profile": "https://example.com",
          "scoreBreakdown": "https://example.com"
        },
        "stats": {
          "review": {
            "received": {
              "negative": 1,
              "neutral": 1,
              "positive": 1
            }
          },
          "vouch": {
            "given": {
              "amountWeiTotal": 1,
              "count": 1
            },
            "received": {
              "amountWeiTotal": 1,
              "count": 1
            }
          }
        }
      },
      "completedAt": "text",
      "replySummary": {
        "count": 1,
        "participated": true
      }
    }
  ],
  "total": 1,
  "limit": 1,
  "offset": 1
}

Get current user's broker posts

get

Retrieve a paginated list of broker posts created by the current authenticated user. Supports filtering by type and status.

Authorizations
Query parameters
typestring · enumOptionalPossible values:
includeArchivedbooleanOptionalDefault: false
sortBystring · enumOptionalDefault: topPossible values:
limitinteger · max: 100OptionalDefault: 50
offsetnumberOptionalDefault: 0
Responses
200

Successful response

application/json
get
/broker/me/posts
GET /api/v2/broker/me/posts HTTP/1.1
Host: api.ethos.network
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "values": [
    {
      "id": 1,
      "authorProfileId": 1,
      "type": "SELL",
      "title": "text",
      "description": "text",
      "cost": "text",
      "tags": [
        "text"
      ],
      "level": "BASIC",
      "status": "OPEN",
      "imageUrl": "https://example.com",
      "isArchived": true,
      "createdAt": "text",
      "updatedAt": "text",
      "expiresAt": "text",
      "author": {
        "id": 1,
        "profileId": 1,
        "displayName": "text",
        "username": "text",
        "avatarUrl": "https://example.com",
        "description": "text",
        "score": 1,
        "status": "ACTIVE",
        "userkeys": [
          "text"
        ],
        "xpTotal": 1,
        "xpStreakDays": 1,
        "xpRemovedDueToAbuse": true,
        "links": {
          "profile": "https://example.com",
          "scoreBreakdown": "https://example.com"
        },
        "stats": {
          "review": {
            "received": {
              "negative": 1,
              "neutral": 1,
              "positive": 1
            }
          },
          "vouch": {
            "given": {
              "amountWeiTotal": 1,
              "count": 1
            },
            "received": {
              "amountWeiTotal": 1,
              "count": 1
            }
          }
        }
      },
      "completedAt": "text",
      "replySummary": {
        "count": 1,
        "participated": true
      }
    }
  ],
  "total": 1,
  "limit": 1,
  "offset": 1
}

Get a specific broker post by ID

get

Retrieve detailed information about a specific broker post including author information.

Path parameters
idintegerRequired
Responses
200

Successful response

application/json
get
/broker/posts/{id}
GET /api/v2/broker/posts/{id} HTTP/1.1
Host: api.ethos.network
Accept: */*
{
  "id": 1,
  "authorProfileId": 1,
  "type": "SELL",
  "title": "text",
  "description": "text",
  "cost": "text",
  "tags": [
    "text"
  ],
  "level": "BASIC",
  "status": "OPEN",
  "imageUrl": "https://example.com",
  "isArchived": true,
  "createdAt": "text",
  "updatedAt": "text",
  "expiresAt": "text",
  "author": {
    "id": 1,
    "profileId": 1,
    "displayName": "text",
    "username": "text",
    "avatarUrl": "https://example.com",
    "description": "text",
    "score": 1,
    "status": "ACTIVE",
    "userkeys": [
      "text"
    ],
    "xpTotal": 1,
    "xpStreakDays": 1,
    "xpRemovedDueToAbuse": true,
    "links": {
      "profile": "https://example.com",
      "scoreBreakdown": "https://example.com"
    },
    "stats": {
      "review": {
        "received": {
          "negative": 1,
          "neutral": 1,
          "positive": 1
        }
      },
      "vouch": {
        "given": {
          "amountWeiTotal": 1,
          "count": 1
        },
        "received": {
          "amountWeiTotal": 1,
          "count": 1
        }
      }
    }
  },
  "completedAt": "text",
  "replySummary": {
    "count": 1,
    "participated": true
  }
}

Get broker post by transaction hash

get

Retrieve a broker post by the transaction hash that created or updated it. This endpoint will spot-process the transaction if needed to ensure the latest data is available.

Path parameters
txHashstringRequired
Responses
200

Successful response

application/json
get
/broker/posts/tx/{txHash}
GET /api/v2/broker/posts/tx/{txHash} HTTP/1.1
Host: api.ethos.network
Accept: */*
{
  "id": 1,
  "authorProfileId": 1,
  "type": "SELL",
  "title": "text",
  "description": "text",
  "cost": "text",
  "tags": [
    "text"
  ],
  "level": "BASIC",
  "status": "OPEN",
  "imageUrl": "https://example.com",
  "isArchived": true,
  "createdAt": "text",
  "updatedAt": "text",
  "expiresAt": "text",
  "author": {
    "id": 1,
    "profileId": 1,
    "displayName": "text",
    "username": "text",
    "avatarUrl": "https://example.com",
    "description": "text",
    "score": 1,
    "status": "ACTIVE",
    "userkeys": [
      "text"
    ],
    "xpTotal": 1,
    "xpStreakDays": 1,
    "xpRemovedDueToAbuse": true,
    "links": {
      "profile": "https://example.com",
      "scoreBreakdown": "https://example.com"
    },
    "stats": {
      "review": {
        "received": {
          "negative": 1,
          "neutral": 1,
          "positive": 1
        }
      },
      "vouch": {
        "given": {
          "amountWeiTotal": 1,
          "count": 1
        },
        "received": {
          "amountWeiTotal": 1,
          "count": 1
        }
      }
    }
  },
  "completedAt": "text",
  "replySummary": {
    "count": 1,
    "participated": true
  }
}

Update broker post status/archive fields (author only)

put

Update off-chain fields like status, archived, and image URL that are not stored on blockchain. When changing status from EXPIRED to OPEN for BASIC posts, automatically resets expiration date to 30 days from now.

Authorizations
Path parameters
idinteger · max: 2147483647Required
Body
statusstring · enumOptionalPossible values:
isArchivedbooleanOptional
imageUrlstring · uri | nullableOptional
transactedWithUserIdintegerOptional
Responses
200

Successful response

application/json
put
/broker/posts/{id}/status
PUT /api/v2/broker/posts/{id}/status HTTP/1.1
Host: api.ethos.network
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 93

{
  "status": "OPEN",
  "isArchived": true,
  "imageUrl": "https://example.com",
  "transactedWithUserId": 1
}
{
  "id": 1,
  "authorProfileId": 1,
  "type": "SELL",
  "title": "text",
  "description": "text",
  "cost": "text",
  "tags": [
    "text"
  ],
  "level": "BASIC",
  "status": "OPEN",
  "imageUrl": "https://example.com",
  "isArchived": true,
  "createdAt": "text",
  "updatedAt": "text",
  "expiresAt": "text",
  "author": {
    "id": 1,
    "profileId": 1,
    "displayName": "text",
    "username": "text",
    "avatarUrl": "https://example.com",
    "description": "text",
    "score": 1,
    "status": "ACTIVE",
    "userkeys": [
      "text"
    ],
    "xpTotal": 1,
    "xpStreakDays": 1,
    "xpRemovedDueToAbuse": true,
    "links": {
      "profile": "https://example.com",
      "scoreBreakdown": "https://example.com"
    },
    "stats": {
      "review": {
        "received": {
          "negative": 1,
          "neutral": 1,
          "positive": 1
        }
      },
      "vouch": {
        "given": {
          "amountWeiTotal": 1,
          "count": 1
        },
        "received": {
          "amountWeiTotal": 1,
          "count": 1
        }
      }
    }
  },
  "completedAt": "text",
  "replySummary": {
    "count": 1,
    "participated": true
  }
}

Archive a broker post (author only)

put
Authorizations
Path parameters
idinteger · max: 2147483647Required
Responses
200

Successful response

application/json
put
/broker/posts/{id}/archive
PUT /api/v2/broker/posts/{id}/archive HTTP/1.1
Host: api.ethos.network
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
  "id": 1,
  "authorProfileId": 1,
  "type": "SELL",
  "title": "text",
  "description": "text",
  "cost": "text",
  "tags": [
    "text"
  ],
  "level": "BASIC",
  "status": "OPEN",
  "imageUrl": "https://example.com",
  "isArchived": true,
  "createdAt": "text",
  "updatedAt": "text",
  "expiresAt": "text",
  "author": {
    "id": 1,
    "profileId": 1,
    "displayName": "text",
    "username": "text",
    "avatarUrl": "https://example.com",
    "description": "text",
    "score": 1,
    "status": "ACTIVE",
    "userkeys": [
      "text"
    ],
    "xpTotal": 1,
    "xpStreakDays": 1,
    "xpRemovedDueToAbuse": true,
    "links": {
      "profile": "https://example.com",
      "scoreBreakdown": "https://example.com"
    },
    "stats": {
      "review": {
        "received": {
          "negative": 1,
          "neutral": 1,
          "positive": 1
        }
      },
      "vouch": {
        "given": {
          "amountWeiTotal": 1,
          "count": 1
        },
        "received": {
          "amountWeiTotal": 1,
          "count": 1
        }
      }
    }
  },
  "completedAt": "text",
  "replySummary": {
    "count": 1,
    "participated": true
  }
}

Get posts by specific author

get

Retrieve a paginated list of broker posts created by a specific author. Supports filtering by type and status. Only shows non-archived posts.

Path parameters
profileIdinteger · max: 2147483647Required
Query parameters
typestring · enumOptionalPossible values:
includeArchivedbooleanOptionalDefault: false
sortBystring · enumOptionalDefault: topPossible values:
limitinteger · max: 100OptionalDefault: 50
offsetnumberOptionalDefault: 0
recentlyCompletedDaysinteger · min: 1 · max: 30Optional
Responses
200

Successful response

application/json
get
/broker/author/{profileId}/posts
GET /api/v2/broker/author/{profileId}/posts HTTP/1.1
Host: api.ethos.network
Accept: */*
{
  "values": [
    {
      "id": 1,
      "authorProfileId": 1,
      "type": "SELL",
      "title": "text",
      "description": "text",
      "cost": "text",
      "tags": [
        "text"
      ],
      "level": "BASIC",
      "status": "OPEN",
      "imageUrl": "https://example.com",
      "isArchived": true,
      "createdAt": "text",
      "updatedAt": "text",
      "expiresAt": "text",
      "author": {
        "id": 1,
        "profileId": 1,
        "displayName": "text",
        "username": "text",
        "avatarUrl": "https://example.com",
        "description": "text",
        "score": 1,
        "status": "ACTIVE",
        "userkeys": [
          "text"
        ],
        "xpTotal": 1,
        "xpStreakDays": 1,
        "xpRemovedDueToAbuse": true,
        "links": {
          "profile": "https://example.com",
          "scoreBreakdown": "https://example.com"
        },
        "stats": {
          "review": {
            "received": {
              "negative": 1,
              "neutral": 1,
              "positive": 1
            }
          },
          "vouch": {
            "given": {
              "amountWeiTotal": 1,
              "count": 1
            },
            "received": {
              "amountWeiTotal": 1,
              "count": 1
            }
          }
        }
      },
      "completedAt": "text",
      "replySummary": {
        "count": 1,
        "participated": true
      }
    }
  ],
  "total": 1,
  "limit": 1,
  "offset": 1
}

Report a broker post for inappropriate content

post

Report a broker post for spam, inappropriate content, fraud, harassment, or other issues. Requires authentication.

Authorizations
Path parameters
idinteger · max: 2147483647Required
Body
reasonstring · enumRequiredPossible values:
descriptionstring · min: 1 · max: 2000Optional
Responses
200

Successful response

application/json
post
/broker/posts/{id}/report
POST /api/v2/broker/posts/{id}/report HTTP/1.1
Host: api.ethos.network
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 38

{
  "reason": "SPAM",
  "description": "text"
}
{
  "success": true,
  "message": "text"
}

Preview AI image for broker post

post

Generates a preview image for a broker post using the provided content and author profile. Returns the image directly without creating a job.

Authorizations
Body
titlestring · min: 1Required
descriptionstring · min: 1Required
typestring · enumRequiredPossible values:
positionstringOptional
Responses
200

Successful response

application/json
post
/broker/preview-premium-image
POST /api/v2/broker/preview-premium-image HTTP/1.1
Host: api.ethos.network
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 69

{
  "title": "text",
  "description": "text",
  "type": "SELL",
  "position": "text"
}
{
  "imageUrl": "text",
  "prompt": "text"
}

Last updated