Authentication
All FANN API requests require authentication via a Bearer token. Tokens are scoped (read, write, admin) and generated from your developer dashboard. OAuth 2.0 flows are planned for Q3.
/v1/auth/tokenExchange your API key for a short-lived Bearer token. Tokens expire after 24 hours.
Request Body
Preview Only{"api_key": "fann_live_sk_xxxxxxxxxxxx","scope": ["artworks:read", "marketplace:write"]}
Response
Preview Only{"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...","expires_at": "2026-04-08T12:00:00Z","scope": ["artworks:read", "marketplace:write"],"token_type": "Bearer"}
/v1/auth/tokenAuth requiredInvalidate the current Bearer token immediately. Use on logout or key rotation.
Response
Preview Only{"revoked": true,"revoked_at": "2026-04-07T09:14:33Z"}
Users & Profiles
Retrieve and update user profiles, preferences, and social connections within the FANN ecosystem.
/v1/users/meAuth requiredReturns the authenticated user's full profile including tier, badges, and wallet address.
Response
Preview Only{"id": "usr_7x9kmp","username": "amara_creates","display_name": "Amara Kweku","email": "amara@example.com","role": "artist","tier": "gold","wallet_address": "0x4B9f3C2...","badges": ["certified_artist", "early_adopter"],"fann_points": 2840,"created_at": "2025-11-02T08:22:11Z"}
/v1/users/:idFetch a public profile by user ID. Returns public-facing data only.
Response
Preview Only{"id": "usr_7x9kmp","username": "amara_creates","display_name": "Amara Kweku","role": "artist","tier": "gold","artworks_count": 34,"followers_count": 1209,"bio": "Contemporary visual artist exploring identity and diaspora.","avatar_url": "https://cdn.fann.art/avatars/usr_7x9kmp.jpg"}
/v1/users/:id/profileAuth requiredUpdate a user's public profile fields. Only the authenticated user can update their own profile.
Request Body
Preview Only{"display_name": "Amara K.","bio": "Visual artist. FANN certified since 2025.","location": "Accra, Ghana","website": "https://amarakweku.art"}
Response
Preview Only{"id": "usr_7x9kmp","display_name": "Amara K.","bio": "Visual artist. FANN certified since 2025.","location": "Accra, Ghana","website": "https://amarakweku.art","updated_at": "2026-04-07T10:05:00Z"}
Artworks
Full CRUD for artwork listings. All registered artworks go through FANN's blockchain certification pipeline.
/v1/artworksList all public artworks with pagination, filtering by medium, price range, artist, and certification status.
Response
Preview Only{"data": [{"id": "art_9k2mxp","title": "Solitude in Blue","artist_id": "usr_7x9kmp","year": 2023,"medium": "Oil on canvas","price_usd": 12500,"verified": true,"fractional_available": true,"thumbnail_url": "https://cdn.fann.art/art_9k2mxp/thumb.jpg"}],"pagination": { "page": 1, "limit": 20, "total": 4328 }}
/v1/artworks/:idRetrieve full artwork metadata, provenance history, certificate hash, and all associated media.
Response
Preview Only{"id": "art_9k2mxp","title": "Solitude in Blue","artist": { "id": "usr_7x9kmp", "name": "Amara Kweku" },"year": 2023,"medium": "Oil on canvas","dimensions": { "width": 90, "height": 120, "unit": "cm" },"description": "An exploration of solitude...","certificate_hash": "0xf4a3b9c2d1e8f7a6b5c4d3e2f1a0b9c8","verified": true,"price_usd": 12500,"provenance": [{ "event": "created", "date": "2023-05-14", "actor": "Amara Kweku" },{ "event": "certified", "date": "2023-06-01", "tx": "0xabc123..." }]}
/v1/artworksAuth requiredRegister a new artwork and initiate blockchain certification. Accepts multipart/form-data for image uploads.
Request Body
Preview Only{"title": "Golden Horizon","year": 2026,"medium": "Acrylic on linen","dimensions": { "width": 100, "height": 80, "unit": "cm" },"description": "A meditation on light at dusk.","price_usd": 8750,"image_url": "https://cdn.fann.art/uploads/tmp_xyz.jpg"}
Response
Preview Only{"id": "art_n3r8qt","title": "Golden Horizon","status": "pending_certification","certificate_hash": null,"estimated_certification_time": "2–5 minutes","created_at": "2026-04-07T11:00:00Z"}
/v1/artworks/:idAuth requiredUpdate artwork metadata. Only the owning artist or an admin may update. Certified fields are immutable.
Request Body
Preview Only{"price_usd": 15000,"description": "Updated provenance notes included.","for_sale": true}
Response
Preview Only{"id": "art_9k2mxp","price_usd": 15000,"for_sale": true,"updated_at": "2026-04-07T11:30:00Z"}
/v1/artworks/:idAuth requiredSoft-delete an artwork listing. The blockchain certificate and provenance record remain immutable.
Response
Preview Only{"deleted": true,"id": "art_9k2mxp","certificate_preserved": true,"deleted_at": "2026-04-07T12:00:00Z"}
/v1/artworks/:id/certificateRetrieve the full blockchain certificate for an artwork, including on-chain transaction details.
Response
Preview Only{"artwork_id": "art_9k2mxp","certificate_hash": "0xf4a3b9c2d1e8f7a6b5c4d3e2f1a0b9c8","issued_at": "2023-06-01T14:22:00Z","chain": "Ethereum","contract_address": "0xFANN1234...","token_id": 2291,"verified": true,"issuer": "FANN Foundation"}
Marketplace
Browse, list, and transact on FANN's primary and secondary art marketplace. All offers and payments are logged immutably.
/v1/marketplace/listingsList all active marketplace listings. Supports filters: price_min, price_max, medium, artist_id, sort.
Response
Preview Only{"data": [{"listing_id": "lst_4p2qrs","artwork_id": "art_9k2mxp","title": "Solitude in Blue","seller_id": "usr_7x9kmp","price_usd": 15000,"currency": "USD","accepts_offers": true,"listed_at": "2026-03-15T09:00:00Z"}],"pagination": { "page": 1, "limit": 20, "total": 892 }}
/v1/marketplace/offersAuth requiredSubmit a purchase offer on a listed artwork. Requires buyer authentication. Seller is notified instantly.
Request Body
Preview Only{"listing_id": "lst_4p2qrs","offer_amount_usd": 13500,"message": "I love this piece — open to negotiation.","expires_in_hours": 48}
Response
Preview Only{"offer_id": "off_8z1wxy","listing_id": "lst_4p2qrs","buyer_id": "usr_abc123","offer_amount_usd": 13500,"status": "pending","expires_at": "2026-04-09T11:00:00Z","created_at": "2026-04-07T11:00:00Z"}
/v1/marketplace/transactionsAuth requiredRetrieve transaction history for the authenticated user, including purchases, sales, and royalty payouts.
Response
Preview Only{"data": [{"tx_id": "txn_5r3mnp","type": "sale","artwork_id": "art_9k2mxp","amount_usd": 13500,"status": "completed","buyer_id": "usr_abc123","seller_id": "usr_7x9kmp","completed_at": "2026-04-05T16:44:00Z"}],"pagination": { "page": 1, "limit": 20, "total": 47 }}
Fractional Ownership
FANN's fractional ownership system allows collectors to buy tokenised shares in high-value artworks. All share data is on-chain.
/v1/fractional/artworksList artworks available for fractional investment, including total shares, price per share, and funding progress.
Response
Preview Only{"data": [{"artwork_id": "art_9k2mxp","title": "Solitude in Blue","total_shares": 1000,"shares_available": 340,"price_per_share_usd": 15,"total_value_usd": 15000,"funded_pct": 66,"artist": "Amara Kweku"}]}
/v1/fractional/:id/sharesList all fractional share holders for a specific artwork, with ownership percentages.
Response
Preview Only{"artwork_id": "art_9k2mxp","total_shares": 1000,"shareholders": [{"user_id": "usr_abc123","shares_owned": 150,"ownership_pct": 15.0,"acquired_at": "2026-02-20T10:00:00Z"}],"pagination": { "page": 1, "limit": 20, "total": 23 }}
/v1/fractional/:id/purchaseAuth requiredPurchase fractional shares in an artwork. Payment is processed and shares are minted on-chain.
Request Body
Preview Only{"shares_quantity": 50,"payment_method_id": "pm_stripe_xxxx"}
Response
Preview Only{"purchase_id": "frac_7q4rst","artwork_id": "art_9k2mxp","shares_purchased": 50,"total_paid_usd": 750,"on_chain_tx": "0xmint99aa...","new_ownership_pct": 5.0,"status": "confirmed","created_at": "2026-04-07T12:00:00Z"}
Community
Access FANN's community features: posts, discussions, challenges, and artist spotlights.
/v1/community/postsList community posts with optional filters: type (artwork|discussion|challenge), author_id, tag.
Response
Preview Only{"data": [{"post_id": "pst_3k8lmn","type": "artwork_share","author_id": "usr_7x9kmp","content": "Excited to share my latest piece!","artwork_id": "art_9k2mxp","likes_count": 142,"comments_count": 28,"created_at": "2026-04-06T08:00:00Z"}]}
/v1/community/postsAuth requiredCreate a new community post. Supports text, artwork references, and image attachments.
Request Body
Preview Only{"type": "discussion","content": "What techniques do you use for layering oil paints?","tags": ["oil-painting", "technique", "tips"]}
Response
Preview Only{"post_id": "pst_9n7xyz","type": "discussion","author_id": "usr_7x9kmp","content": "What techniques do you use for layering oil paints?","tags": ["oil-painting", "technique", "tips"],"created_at": "2026-04-07T12:05:00Z"}
/v1/community/discussionsList active discussion threads, sorted by recent activity or popularity.
Response
Preview Only{"data": [{"discussion_id": "disc_2m5xyz","title": "Best practices for digital certification","author_id": "usr_abc123","replies_count": 47,"last_activity": "2026-04-07T09:30:00Z","pinned": false}]}
/v1/community/challengesList active and upcoming creative challenges. Includes prize pools, submission deadlines, and participant counts.
Response
Preview Only{"data": [{"challenge_id": "chl_6r1stv","title": "Spring Palette Challenge 2026","theme": "Nature & Renewal","prize_pool_usd": 5000,"submissions_count": 318,"deadline": "2026-04-30T23:59:00Z","status": "active"}]}
Rewards
FANN Points are earned through platform activity and redeemable for discounts, exclusive drops, and premium features.
/v1/rewards/balanceAuth requiredRetrieve the authenticated user's current FANN Points balance and tier status.
Response
Preview Only{"user_id": "usr_7x9kmp","fann_points": 2840,"tier": "gold","tier_threshold_next": 5000,"points_to_next_tier": 2160,"lifetime_earned": 4120}
/v1/rewards/historyAuth requiredPaginated history of FANN Points earned and redeemed.
Response
Preview Only{"data": [{"event_id": "rev_8p2qrs","type": "earned","points": 200,"reason": "artwork_certified","reference_id": "art_9k2mxp","created_at": "2026-03-01T14:00:00Z"},{"event_id": "rev_7n1abc","type": "redeemed","points": -500,"reason": "discount_applied","reference_id": "ord_xyz789","created_at": "2026-03-20T10:00:00Z"}]}
/v1/rewards/redeemAuth requiredRedeem FANN Points for a reward. Returns a redemption code or applies discount to a pending order.
Request Body
Preview Only{"reward_id": "rwd_premium_month","points_to_spend": 1000}
Response
Preview Only{"redemption_id": "rdm_5t3uvw","reward": "Premium membership — 1 month","points_spent": 1000,"remaining_balance": 1840,"activation_code": "FANN-PREM-A4X9","redeemed_at": "2026-04-07T12:10:00Z"}
Events
Browse FANN platform events: exhibitions, live auctions, artist talks, and virtual gallery openings.
/v1/eventsList upcoming and past events. Filter by type, location, date range, and featured status.
Response
Preview Only{"data": [{"event_id": "evt_3h7klm","title": "FANN Annual Showcase 2026","type": "exhibition","format": "hybrid","location": "Lagos, Nigeria + Virtual","starts_at": "2026-06-15T10:00:00Z","ends_at": "2026-06-20T20:00:00Z","artists_count": 84,"featured": true}]}
/v1/events/:idRetrieve full details for a single event, including schedule, speakers, participating artists, and ticket info.
Response
Preview Only{"event_id": "evt_3h7klm","title": "FANN Annual Showcase 2026","description": "The premier celebration of African contemporary art...","type": "exhibition","format": "hybrid","location": "Lagos, Nigeria + Virtual","starts_at": "2026-06-15T10:00:00Z","ends_at": "2026-06-20T20:00:00Z","artists": [{ "id": "usr_7x9kmp", "name": "Amara Kweku" }],"tickets": {"virtual": { "price_usd": 0, "available": true },"in_person": { "price_usd": 45, "available": true, "remaining": 120 }}}
Admin & Webhooks
Admin endpoints require an admin-scoped API token. Webhooks allow you to subscribe to platform events in real time.
/v1/admin/usersAuth requiredList all platform users with full metadata. Supports search, filter by role/tier/status, and pagination.
Response
Preview Only{"data": [{"id": "usr_7x9kmp","email": "amara@example.com","role": "artist","tier": "gold","status": "active","joined_at": "2025-11-02T08:22:11Z","last_login": "2026-04-07T08:00:00Z"}],"pagination": { "page": 1, "limit": 50, "total": 18420 }}
/v1/admin/artworks/:id/verifyAuth requiredAdmin-only: manually trigger or approve blockchain certification for an artwork.
Request Body
Preview Only{"override_reason": "Manual certification after physical inspection","inspector_id": "adm_review_001"}
Response
Preview Only{"artwork_id": "art_n3r8qt","status": "certified","certificate_hash": "0xnew88bb...","certified_at": "2026-04-07T13:00:00Z","certified_by": "adm_review_001"}
/v1/admin/reportsAuth requiredAccess platform-level analytics reports: revenue, user growth, artwork volume, and dispute summaries.
Response
Preview Only{"period": "2026-Q1","new_users": 3421,"artworks_certified": 892,"total_volume_usd": 1240000,"active_disputes": 14,"challenges_completed": 6,"generated_at": "2026-04-07T00:00:00Z"}
Webhooks
Subscribe to FANN platform events via webhooks. Register your endpoint URL in your developer dashboard. FANN will POST a signed JSON payload to your URL for each subscribed event. Verify the X-FANN-Signature header to confirm authenticity.
Webhook Registration
Preview Onlycurl -X POST https://api.fann.art/v1/webhooks \-H "Authorization: Bearer YOUR_API_KEY" \-H "Content-Type: application/json" \-d '{"url": "https://yourapp.com/webhooks/fann","events": ["artwork.certified", "offer.accepted", "payment.completed"]}'
artwork.certifiedFires when an artwork's blockchain certificate is issued. Payload includes certificate_hash and token_id.
Example Payload
Preview Only{"event": "artwork.certified","artwork_id": "art_9k2mxp","certificate_hash": "0xf4a3b9...","certified_at": "2026-04-07T14:00:00Z"}
offer.acceptedFires when a seller accepts a buyer's marketplace offer. Initiates the payment collection flow.
Example Payload
Preview Only{"event": "offer.accepted","offer_id": "off_8z1wxy","listing_id": "lst_4p2qrs","amount_usd": 13500,"accepted_at": "2026-04-07T15:00:00Z"}
payment.completedFires when a transaction is fully settled and funds have been disbursed to the seller.
Example Payload
Preview Only{"event": "payment.completed","tx_id": "txn_5r3mnp","artwork_id": "art_9k2mxp","amount_usd": 13500,"completed_at": "2026-04-07T16:00:00Z"}
challenge.joinedFires when a user submits an entry to a creative challenge.
Example Payload
Preview Only{"event": "challenge.joined","challenge_id": "chl_6r1stv","user_id": "usr_7x9kmp","submission_id": "sub_4m2nop","joined_at": "2026-04-07T17:00:00Z"}