freeport_create_post
Publish a Freeport intent — an OFFER (side "offer": driver/provider/seller) or a REQUEST (side "request": rider/buyer). Provide EITHER a secretKey (nsec or hex — the server builds, signs and publishes; use a DEDICATED agent key, never a personal one — it is used once and never stored) OR a pre-signed event (you sign locally; nothing secret reaches the server). Strict rate limits apply. Returns the published event id + addressable d.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| d | No | Stable id to republish/replace an existing post; defaults to random. | |
| side | No | offer = provider/seller/driver; request = buyer/rider. | |
| event | No | A complete, signed Nostr event (kind 32101/32102). Use instead of secretKey to keep keys off the server. | |
| title | No | ||
| market | No | Market key, e.g. "rideshare" or "service". | |
| relays | No | ||
| schema | No | Payload schema, e.g. "rideshare/1" or "service/1". | |
| topics | No | Topic `t` tags (area/category), e.g. ["vn_hanoi","vn_hanoi_ridesharing"]. | |
| window | No | ||
| payload | No | Intent payload (from/to/location, payment, etc.) per the freeport://protocol resource. | |
| geohashes | No | Geohashes for location-scoped discovery. Each is expanded into all its prefixes (precision 1-6) so radius searches at any precision match. | |
| secretKey | No | nsec or 64-hex private key. Used transiently to sign; never stored. Omit if passing a pre-signed `event`. | |
| expiresInMinutes | No | How long the post stays live (default 720). Max 30 days. |