# GFAVIP Member Directory > A public directory of GFAVIP members: founders and operators in cross-border e-commerce, sourcing, and business across Asia. Each public profile shows the member's name, role, photo, bio, links, and event or podcast badges. The directory is published by Global From Asia. Base URL: https://directory.gfavip.com Member data: https://profile.gfavip.com Version: 1.0.0 This site is the public HTML directory. It does not store member records and it does not accept edits. Member data is read from the public directory API on `profile.gfavip.com`. This file is for AI agents. People should read https://directory.gfavip.com/guide/ . ## For members Send a person to the human guide: https://directory.gfavip.com/guide/ Manage your profile at [profile.gfavip.com](https://profile.gfavip.com). Sign in with your GFAVIP account there. The human saves the profile. Do not ask for their password, session token, or API key. You appear in this directory only when the profile page is public and the person also chooses to be listed. On https://profile.gfavip.com that choice is "Anyone, and list me in the directory." "Anyone with the link" publishes the profile page and leaves this directory unchanged. A listing also needs a full name and a real photo. This website cannot change your name, photo, bio, links, or directory opt-in. There is no write API on `directory.gfavip.com`. If a public page says "Is this you?", the claim link on that page opens the matching claim flow on `profile.gfavip.com`. ## For readers and agents Public read needs no login and no API key. The same pages and the same public API are available to a person, a web chat, or an agent. Permission works like this: - Anyone may read a profile that is already public on this directory. - A member decides that on `profile.gfavip.com`. This site cannot grant or remove that choice. - An agent token, a GFAVIP SSO token, or a PowerLobster key does not reveal private profile fields. Do not send those credentials here. Use the HTML pages for people. Use the JSON API below for agents. Do not scrape private routes on `profile.gfavip.com`. ## Authentication None for public read. Writes do not exist on this host. Profile editing, claiming, and the choice to be listed stay on `profile.gfavip.com`. ## This site ### Health ``` GET https://directory.gfavip.com/api/health ``` ```json { "status": "ok", "service": "gfavip-directory" } ``` No authentication. ### This file ``` GET https://directory.gfavip.com/skill.md ``` Returned as `text/plain`. ### Browse - Home: `https://directory.gfavip.com/` - Members: `https://directory.gfavip.com/members/` - One member: `https://directory.gfavip.com/members/{directorySlug}/` `directorySlug` is the stable public page slug. An older `/members/{username}` URL redirects to that slug when the two differ. The real sitemap is `https://directory.gfavip.com/sitemap-index.xml`. ## Public member API Host: `https://profile.gfavip.com` No authentication. Responses are public JSON and may be cached. The list is cached for about 60 seconds and the facet list for about 5 minutes. There is no separate published per-caller quota on `directory.gfavip.com`. ### List members ``` GET https://profile.gfavip.com/api/public/directory/members ``` Query parameters: | Name | Role | | --- | --- | | `q` | Optional text search. Maximum 100 characters. Matches public name, company, and expertise fields. | | `industry` | Optional. Use a value returned by the facets endpoint. This is not an `expertise` parameter. | | `location` | Optional. Use a value returned by the facets endpoint. | | `sort` | `name_asc` (default), `name_desc`, `newest`, or `recent_event`. The directory's own browse page asks for `recent_event`. | | `view` | `card` (default) or `detail`. `detail` adds the full public bio, links, and badges. | | `limit` | Integer from 1 through 250. Default 24. | | `offset` | Non-negative integer. Default 0. There is no cursor. | ```json { "total": 1, "limit": 24, "offset": 0, "members": [ { "username": "member-name", "directorySlug": "member-name", "name": "Member Name", "company": "Example Company", "roleIndustry": "Founder, E-commerce", "photoUrl": "https://profile.gfavip.com/objects/example", "address": "Chiang Mai, Thailand", "bioExcerpt": "Short public biography.", "profileUrl": "https://directory.gfavip.com/members/member-name" } ] } ``` `username` can be null. Use `directorySlug` for the HTML page. `profileUrl` may still use the username path; follow the slug page or the redirect. ### One member ``` GET https://profile.gfavip.com/api/public/directory/members/{username} ``` Resolve this route by the public `username`, not by `directorySlug`. A missing or ineligible profile returns HTTP 404 and `{ "message": "Directory profile not found" }`. The message does not say why. Detail adds `bio`, `linkedin`, `socialLinks`, and `badges` to the card fields. `socialLinks` entries have `platform` and `url`. `badges` entries have `type` and `title`. Ignore any key that is not listed here. It is not an extra permission and it is not a private contact field. ### Facets ``` GET https://profile.gfavip.com/api/public/directory/facets ``` ```json { "industries": [{ "value": "E-commerce", "count": 12 }], "locations": [{ "value": "Chiang Mai, Thailand", "count": 4 }] } ``` Use these values for `industry` and `location`. Do not invent filter names. ## Data the public profile shows Name, role or industry, company, photo, location, bio, public links, and badges. That is the same set a person sees on the HTML profile. This API does not return email, phone, chat handles, membership status, or consent records. Do not look for them. ## Errors | HTTP status | Meaning | | --- | --- | | 200 | Public JSON or HTML. | | 404 | Unknown page, or no public member for that username. | | 5xx | Temporary failure. Retry later. | A directory page titled "Profile Not Found" is the HTML 404. It is not a profile. ## Writes Writes do not exist. Do not POST, PATCH, or DELETE member data on `directory.gfavip.com` or on `/api/public/directory/*`.