Skip to main content
All requests require an API key via the X-API-Key header. See Authentication for details.

Overview

POST /v1/streams/points creates a point asset for the organization associated with the API key. Points are used as reward assets for point-based streams. Creating a point lets your organization define a symbol, display name, precision, and optional logo for those rewards. You only need this endpoint if you plan to create point-based streams. It is not required for streams that use rewardToken.
The API key must belong to an organization and that organization must have the organization:incentivize:streams:create permission.

Endpoint

curl -X POST "https://earn.turtle.xyz/v1/streams/points" \
  -H "X-API-Key: sk_live_xxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "symbol": "PTS",
    "name": "Partner Points",
    "decimals": 18,
    "logoUrl": "https://cdn.example.com/points/pts.png"
  }'

Request Body

symbol
string
required
Point symbol.
name
string
required
Point name.
decimals
integer
default:18
Decimal precision for the point asset. If omitted, it uses the default configured precision of 18.
logoUrl
string
Optional logo URL for the point asset.

Response Example

{
  "point": {
    "id": "7ff13cf6-53d0-4f3e-bd1a-e8eab6db4cf1",
    "orgId": "9f51b66a-d13a-4b55-8515-ae6e4ef7cf25",
    "symbol": "PTS",
    "name": "Partner Points",
    "decimals": 18,
    "logoUrl": "https://cdn.example.com/points/pts.png",
    "createdAt": "2026-03-01T00:00:00Z",
    "updatedAt": "2026-03-01T00:00:00Z"
  }
}
point: Point

Response Fields

point
Point
The newly created point asset.

Point

id
uuid
Unique point identifier.
orgId
uuid
Organization that owns the point.
symbol
string
Normalized uppercase point symbol.
name
string
Point name.
decimals
integer
Decimal precision assigned to the point asset.
logoUrl
string | null
Optional logo URL associated with the point asset.
createdAt
datetime
Creation timestamp of the point.
updatedAt
datetime
Last update timestamp of the point.

Important Notes

The backend trims whitespace and uppercases symbol before persisting the point.
If decimals is omitted, Turtle uses the configured default point precision, currently 18.
Organizations using ERC-20 rewards through rewardToken do not need to create points. Points are only used with pointId in point-based stream creation.

Error Handling

Status Code: 401 Unauthorized
{
  "error": "Invalid API key"
}
Solution: Pass a valid X-API-Key header belonging to an organization-scoped API key.
Status Code: 400 Bad Request
{
  "error": {
    "status": "INVALID_ARGUMENT",
    "error": "symbol is required"
  }
}
Common causes:
  • symbol is missing or blank
  • name is missing or blank
Status Code: 403 Forbidden
{
  "error": {
    "status": "PERMISSION_DENIED",
    "error": "permission denied"
  }
}
Solution: Use an API key associated with an organization that has the organization:incentivize:streams:create permission.
Status Code: 500 Internal Server ErrorSolution: Retry the request and contact Turtle if the issue persists.