Broker
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).
topPossible values: 500Successful response
Invalid input data
Not found
Internal server error
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
}Retrieve a paginated list of broker posts created by the current authenticated user. Supports filtering by type and status.
falsetopPossible values: 500Successful response
Invalid input data
Authorization not provided
Insufficient access
Not found
Internal server error
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
}Retrieve detailed information about a specific broker post including author information.
Successful response
Invalid input data
Not found
Internal server error
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
}
}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.
Successful response
Invalid input data
Not found
Internal server error
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 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.
Successful response
Invalid input data
Authorization not provided
Insufficient access
Not found
Internal server error
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
}
}Successful response
Invalid input data
Authorization not provided
Insufficient access
Not found
Internal server error
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
}
}Retrieve a paginated list of broker posts created by a specific author. Supports filtering by type and status. Only shows non-archived posts.
falsetopPossible values: 500Successful response
Invalid input data
Not found
Internal server error
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 spam, inappropriate content, fraud, harassment, or other issues. Requires authentication.
Successful response
Invalid input data
Authorization not provided
Insufficient access
Internal server error
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"
}Generates a preview image for a broker post using the provided content and author profile. Returns the image directly without creating a job.
Successful response
Invalid input data
Authorization not provided
Insufficient access
Internal server error
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