{"id":368693,"date":"2025-10-24T10:20:11","date_gmt":"2025-10-24T04:20:11","guid":{"rendered":"https:\/\/directorist.com\/?post_type=docs&#038;p=368693"},"modified":"2025-10-24T10:20:20","modified_gmt":"2025-10-24T04:20:20","password":"","slug":"api-reference","status":"publish","type":"docs","link":"https:\/\/directorist.com\/docs\/api-reference\/","title":{"rendered":"API Reference"},"content":{"rendered":"\n<p>This reference covers the REST endpoints commonly used with Directorist-powered sites. It is intentionally concise and developer-friendly.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">General \/ WordPress Endpoints<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>GET<\/strong> <code>\/wp-json\/directorist\/v1<\/code> \u2013 Base API endpoint for Directorist (returns general plugin info)<a href=\"https:\/\/www.postman.com\/sovware\/sovware\/documentation\/t7i09mj\/directorist#:~:text=GETRoot\" target=\"_blank\" rel=\"noopener\">postman.com<\/a>.<\/li>\n\n\n\n<li><strong>POST<\/strong> <code>\/wp-json\/wp\/v2\/media<\/code> \u2013 Upload a media file (e.g., listing image) to WordPress<a href=\"https:\/\/www.postman.com\/sovware\/sovware\/documentation\/t7i09mj\/directorist#:~:text=POSTUpload%20Media\" target=\"_blank\" rel=\"noopener\">postman.com<\/a>.<\/li>\n\n\n\n<li><strong>POST<\/strong> <code>\/wp-json\/wp\/v2\/posts<\/code> \u2013 Create a new WordPress post (e.g., for blog content). Query parameters (title, content, status) are passed in the URL<a href=\"https:\/\/www.postman.com\/sovware\/sovware\/documentation\/t7i09mj\/directorist#:~:text=POSTCreate%20Post\" target=\"_blank\" rel=\"noopener\">postman.com<\/a>.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">User Management<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>GET<\/strong> <code>\/wp-json\/directorist\/v1\/users\/<\/code> \u2013 Retrieve a list of users. Supports filtering via query parameters (e.g., <code>email<\/code>, <code>page<\/code>)<a href=\"https:\/\/www.postman.com\/sovware\/sovware\/documentation\/t7i09mj\/directorist?entity=folder-26468313-c01b5140-65ed-4225-8e86-1366689d3518#:~:text=GETGet%20Users\" target=\"_blank\" rel=\"noopener\">postman.com<\/a>.<\/li>\n\n\n\n<li><strong>POST<\/strong> <code>\/wp-json\/directorist\/v1\/users\/{user_id}<\/code> \u2013 Update a user\u2019s details (e.g., email) by user ID<a href=\"https:\/\/www.postman.com\/sovware\/sovware\/documentation\/t7i09mj\/directorist?entity=folder-26468313-c01b5140-65ed-4225-8e86-1366689d3518#:~:text=POSTUpdate%20User\" target=\"_blank\" rel=\"noopener\">postman.com<\/a>.<\/li>\n\n\n\n<li><strong>DELETE<\/strong> <code>\/wp-json\/directorist\/v1\/users\/{user_id}?force=1<\/code> \u2013 Delete a user by ID. The <code>force=1<\/code> parameter ensures permanent deletion<a href=\"https:\/\/www.postman.com\/sovware\/sovware\/documentation\/t7i09mj\/directorist?entity=folder-26468313-c01b5140-65ed-4225-8e86-1366689d3518#:~:text=DELETEDelete%20User\" target=\"_blank\" rel=\"noopener\">postman.com<\/a>.<\/li>\n\n\n\n<li><strong>POST<\/strong> <code>\/wp-json\/directorist\/v1\/users\/?email={email}&amp;password={password}<\/code> \u2013 Create a new user with given email and password (additional details can be provided via form data: <code>username<\/code>, <code>first_name<\/code>, etc.)<a href=\"https:\/\/www.postman.com\/sovware\/sovware\/documentation\/t7i09mj\/directorist?entity=folder-26468313-c01b5140-65ed-4225-8e86-1366689d3518#:~:text=POSTCreate%20User\" target=\"_blank\" rel=\"noopener\">postman.com<\/a>.<\/li>\n\n\n\n<li><strong>POST<\/strong> <code>\/wp-json\/directorist\/v1\/users\/{user_id}\/favorites\/?id={listing_id}<\/code> \u2013 Add a listing to the user\u2019s favorites (pass the listing ID as <code>id<\/code>)<a href=\"https:\/\/www.postman.com\/sovware\/sovware\/documentation\/t7i09mj\/directorist?entity=folder-26468313-c01b5140-65ed-4225-8e86-1366689d3518#:~:text=POSTAdd%20to%20favorite\" target=\"_blank\" rel=\"noopener\">postman.com<\/a>.<\/li>\n\n\n\n<li><strong>DELETE<\/strong> <code>\/wp-json\/directorist\/v1\/users\/{user_id}\/favorites\/{listing_id}<\/code> \u2013 Remove a listing (by listing ID) from the user\u2019s favorites<a href=\"https:\/\/www.postman.com\/sovware\/sovware\/documentation\/t7i09mj\/directorist?entity=folder-26468313-c01b5140-65ed-4225-8e86-1366689d3518#:~:text=DELETERemove%20from%20favorite\" target=\"_blank\" rel=\"noopener\">postman.com<\/a>.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Authentication \/ Account<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>POST<\/strong> <code>\/wp-json\/directorist\/dev\/register-user?email={email}&amp;password={password}<\/code> \u2013 Register (sign up) a new user account<a href=\"https:\/\/www.postman.com\/sovware\/sovware\/documentation\/t7i09mj\/directorist?entity=folder-26468313-c01b5140-65ed-4225-8e86-1366689d3518#:~:text=POSTSignup\" target=\"_blank\" rel=\"noopener\">postman.com<\/a>.<\/li>\n\n\n\n<li><strong>POST<\/strong> <code>\/wp-json\/directorist\/v1\/users\/account\/change-password?old_password={old}&amp;new_password={new}&amp;user_id={id}<\/code> \u2013 Change a user\u2019s password. Requires the old password, new password, and the user ID<a href=\"https:\/\/www.postman.com\/sovware\/sovware\/documentation\/t7i09mj\/directorist?entity=folder-26468313-c01b5140-65ed-4225-8e86-1366689d3518#:~:text=POSTChange%20Password\" target=\"_blank\" rel=\"noopener\">postman.com<\/a>.<\/li>\n\n\n\n<li><strong>POST<\/strong> <code>\/wp-json\/directorist\/v1\/users\/account\/reset-user-password?password={new}&amp;pin={pin}&amp;email={email}<\/code> \u2013 Reset password using a PIN. Requires the new password, the reset PIN, and the user\u2019s email<a href=\"https:\/\/www.postman.com\/sovware\/sovware\/documentation\/t7i09mj\/directorist?entity=folder-26468313-c01b5140-65ed-4225-8e86-1366689d3518#:~:text=POSTReset%20Password\" target=\"_blank\" rel=\"noopener\">postman.com<\/a>.<\/li>\n\n\n\n<li><strong>POST<\/strong> <code>\/wp-json\/directorist\/v1\/users\/account\/verify-password-reset-pin?email={email}&amp;pin={pin}<\/code> \u2013 Verify a password reset PIN sent to the user\u2019s email<a href=\"https:\/\/www.postman.com\/sovware\/sovware\/documentation\/t7i09mj\/directorist?entity=folder-26468313-c01b5140-65ed-4225-8e86-1366689d3518#:~:text=POSTVerify%20Password%20Reset%20PIN\" target=\"_blank\" rel=\"noopener\">postman.com<\/a>.<\/li>\n\n\n\n<li><strong>POST<\/strong> <code>\/wp-json\/jwt-auth\/v1\/token?username={email}&amp;password={password}<\/code> \u2013 Authenticate a user and obtain a JWT token (pass username\/email and password)<a href=\"https:\/\/www.postman.com\/sovware\/sovware\/documentation\/t7i09mj\/directorist?entity=folder-26468313-c01b5140-65ed-4225-8e86-1366689d3518#:~:text=POSTGet%20Token\" target=\"_blank\" rel=\"noopener\">postman.com<\/a>.<\/li>\n\n\n\n<li><strong>POST<\/strong> <code>\/wp-json\/jwt-auth\/v1\/token\/validate<\/code> \u2013 Validate an existing JWT token (token must be sent in the Authorization header)<a href=\"https:\/\/www.postman.com\/sovware\/sovware\/documentation\/t7i09mj\/directorist?entity=folder-26468313-59188491-48fb-4d59-bb38-8b64aea83e0f#:~:text=POSTValidate%20Token\" target=\"_blank\" rel=\"noopener\">postman.com<\/a>.<\/li>\n\n\n\n<li><strong>POST<\/strong> <code>\/wp-json\/directorist\/v1\/users\/account\/send-password-reset-pin?email={email}<\/code> \u2013 Send a password reset PIN\/link to the given email address<a href=\"https:\/\/www.postman.com\/sovware\/sovware\/documentation\/t7i09mj\/directorist?entity=folder-26468313-59188491-48fb-4d59-bb38-8b64aea83e0f#:~:text=POSTSend%20Password%20Reset%20Link\" target=\"_blank\" rel=\"noopener\">postman.com<\/a>.<\/li>\n\n\n\n<li><strong>POST<\/strong> <code>\/wp-json\/directorist\/v1\/users\/account\/get-password-reset-pin?email={email}<\/code> \u2013 Retrieve or verify the password reset PIN for the given email (used internally by the app)<a href=\"https:\/\/www.postman.com\/sovware\/sovware\/documentation\/t7i09mj\/directorist?entity=folder-26468313-59188491-48fb-4d59-bb38-8b64aea83e0f#:~:text=POSTGet%20Password%20Reset%20Link\" target=\"_blank\" rel=\"noopener\">postman.com<\/a>.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Listings<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>GET<\/strong> <code>\/wp-json\/directorist\/v1\/listings<\/code> \u2013 Retrieve listings, with many optional filters (e.g., <code>include<\/code>, <code>categories<\/code>, <code>locations<\/code>, <code>min_price<\/code>, <code>max_price<\/code>, <code>ratings<\/code>, <code>radius[...]<\/code>, <code>expired<\/code>, <code>pending<\/code>, <code>author<\/code>, <code>status<\/code>, etc.)<a href=\"https:\/\/www.postman.com\/sovware\/sovware\/documentation\/t7i09mj\/directorist?entity=folder-26468313-59188491-48fb-4d59-bb38-8b64aea83e0f#:~:text=GETListings\" target=\"_blank\" rel=\"noopener\">postman.com<\/a>.<\/li>\n\n\n\n<li><strong>POST<\/strong> <code>\/wp-json\/directorist\/v1\/listings?title={title}<\/code> \u2013 Create or update a listing. The <code>title<\/code> (and other listing fields) can be passed via query string or form data<a href=\"https:\/\/www.postman.com\/sovware\/sovware\/documentation\/t7i09mj\/directorist?entity=folder-26468313-59188491-48fb-4d59-bb38-8b64aea83e0f#:~:text=POSTListings%20Update\" target=\"_blank\" rel=\"noopener\">postman.com<\/a>.<\/li>\n\n\n\n<li><strong>GET<\/strong> <code>\/wp-json\/directorist\/v1\/listings?per_page=5&amp;order=desc&amp;orderby=date<\/code> \u2013 Get the newest listings (example: limit 5, sorted by date descending)<a href=\"https:\/\/www.postman.com\/sovware\/sovware\/documentation\/t7i09mj\/directorist?entity=folder-26468313-59188491-48fb-4d59-bb38-8b64aea83e0f#:~:text=GETNew%20Listings\" target=\"_blank\" rel=\"noopener\">postman.com<\/a>.<\/li>\n\n\n\n<li><strong>GET<\/strong> <code>\/wp-json\/directorist\/v1\/listings?featured=true&amp;per_page=5&amp;order=desc&amp;orderby=date<\/code> \u2013 Get featured listings (example: limit 5, sorted by date)<a href=\"https:\/\/www.postman.com\/sovware\/sovware\/documentation\/t7i09mj\/directorist?entity=folder-26468313-59188491-48fb-4d59-bb38-8b64aea83e0f#:~:text=GETFeatured%20Listings\" target=\"_blank\" rel=\"noopener\">postman.com<\/a>.<\/li>\n\n\n\n<li><strong>GET<\/strong> <code>\/wp-json\/directorist\/v1\/listings\/reviews\/?listing={listing_id}<\/code> \u2013 Get reviews for a specific listing by listing ID<a href=\"https:\/\/www.postman.com\/sovware\/sovware\/documentation\/t7i09mj\/directorist?entity=folder-26468313-59188491-48fb-4d59-bb38-8b64aea83e0f#:~:text=GETReview\" target=\"_blank\" rel=\"noopener\">postman.com<\/a>.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Categories, Tags, and Locations (Terms)<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>GET<\/strong> <code>\/wp-json\/directorist\/v1\/listings\/categories?hide_empty=true<\/code> \u2013 List all listing categories (by default hide categories with no listings)<a href=\"https:\/\/www.postman.com\/sovware\/sovware\/documentation\/t7i09mj\/directorist?entity=folder-26468313-e0f71039-0646-4076-853d-b1a91c37666e#:~:text=GETAll%20Categories\" target=\"_blank\" rel=\"noopener\">postman.com<\/a>.<\/li>\n\n\n\n<li><strong>GET<\/strong> <code>\/wp-json\/directorist\/v1\/listings\/categories?per_page=1&amp;hide_empty=true&amp;orderby=count&amp;order=desc&amp;page=2<\/code> \u2013 List popular categories (sorted by listing count)<a href=\"https:\/\/www.postman.com\/sovware\/sovware\/documentation\/t7i09mj\/directorist?entity=folder-26468313-e0f71039-0646-4076-853d-b1a91c37666e#:~:text=GETPopular%20Categories\" target=\"_blank\" rel=\"noopener\">postman.com<\/a>.<\/li>\n\n\n\n<li><strong>GET<\/strong> <code>\/wp-json\/directorist\/v1\/listings\/locations?per_page=10&amp;hide_empty=true&amp;orderby=count&amp;order=desc<\/code> \u2013 List top locations (sorted by listing count, limited to 10)<a href=\"https:\/\/www.postman.com\/sovware\/sovware\/documentation\/t7i09mj\/directorist?entity=folder-26468313-e0f71039-0646-4076-853d-b1a91c37666e#:~:text=GETTop%20Locations\" target=\"_blank\" rel=\"noopener\">postman.com<\/a>.<\/li>\n\n\n\n<li><strong>GET<\/strong> <code>\/wp-json\/directorist\/v1\/listings\/tags<\/code> \u2013 List all tags used in listings<a href=\"https:\/\/www.postman.com\/sovware\/sovware\/documentation\/t7i09mj\/directorist?entity=folder-26468313-e0f71039-0646-4076-853d-b1a91c37666e#:~:text=GETAll%20Tags\" target=\"_blank\" rel=\"noopener\">postman.com<\/a>.<\/li>\n\n\n\n<li><strong>GET<\/strong> <code>\/wp-json\/directorist\/v1\/listings\/locations<\/code> \u2013 List all locations used in listings<a href=\"https:\/\/www.postman.com\/sovware\/sovware\/documentation\/t7i09mj\/directorist?entity=folder-26468313-e0f71039-0646-4076-853d-b1a91c37666e#:~:text=GETAll%20Locations\" target=\"_blank\" rel=\"noopener\">postman.com<\/a>.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Firebase Notifications (Push)<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>POST<\/strong> <code>https:\/\/firestore.googleapis.com\/v1\/projects\/{{firebase_project_name}}\/databases\/(default)\/documents\/notifications\/user_{user_id}\/notifications<\/code> \u2013 Add a notification document to Firestore for user <code>{user_id}<\/code>. The request body is raw JSON with fields (e.g., title, body, data)<a href=\"https:\/\/www.postman.com\/sovware\/sovware\/documentation\/t7i09mj\/directorist?entity=folder-26468313-0b2e3e2c-bf24-4a4f-a954-df749731abc4#:~:text=POSTAdd%20Notification\" target=\"_blank\" rel=\"noopener\">postman.com<\/a>.<\/li>\n\n\n\n<li><strong>GET<\/strong> <code>https:\/\/firestore.googleapis.com\/v1\/projects\/{{firebase_project_name}}\/databases\/(default)\/documents\/notifications<\/code> \u2013 Retrieve all notifications documents (for all users) from Firestore<a href=\"https:\/\/www.postman.com\/sovware\/sovware\/documentation\/t7i09mj\/directorist?entity=folder-26468313-0b2e3e2c-bf24-4a4f-a954-df749731abc4#:~:text=GETGet%20Notifications\" target=\"_blank\" rel=\"noopener\">postman.com<\/a>.<\/li>\n\n\n\n<li><strong>POST<\/strong> <code>https:\/\/fcm.googleapis.com\/fcm\/send<\/code> \u2013 Send a push notification to a specific device via Firebase Cloud Messaging (FCM). The request body is raw JSON specifying target device token (<code>to<\/code>) and notification data (title, body, etc.)<a href=\"https:\/\/www.postman.com\/sovware\/sovware\/documentation\/t7i09mj\/directorist?entity=folder-26468313-0b2e3e2c-bf24-4a4f-a954-df749731abc4#:~:text=POSTSend%20Notification%20To%20Spesific%20Device\" target=\"_blank\" rel=\"noopener\">postman.com<\/a>.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Payment System (WooCommerce)<\/h2>\n\n\n\n<p><em>(These endpoints use WooCommerce\u2019s REST API v3, enabled when Directorist monetization is active.)<\/em><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>GET<\/strong> <code>\/wp-json\/wc\/v3\/orders<\/code> \u2013 Retrieve a list of WooCommerce orders (all orders in the store)<a href=\"https:\/\/www.postman.com\/sovware\/sovware\/collection\/t7i09mj\/directorist#:~:text=GET\" target=\"_blank\" rel=\"noopener\">postman.com<\/a>.<\/li>\n\n\n\n<li><strong>GET<\/strong> <code>\/wp-json\/wc\/v3\/orders\/{order_id}<\/code> \u2013 Retrieve details of a single order by its ID<a href=\"https:\/\/www.postman.com\/sovware\/sovware\/collection\/t7i09mj\/directorist#:~:text=GET\" target=\"_blank\" rel=\"noopener\">postman.com<\/a>.<\/li>\n\n\n\n<li><strong>GET<\/strong> <code>\/wp-json\/wc\/v3\/refunds<\/code> \u2013 Retrieve a list of refunds (new in WooCommerce API v3)<a href=\"https:\/\/www.postman.com\/sovware\/sovware\/collection\/t7i09mj\/directorist#:~:text=GET\" target=\"_blank\" rel=\"noopener\">postman.com<\/a>.<\/li>\n\n\n\n<li><strong>GET<\/strong> <code>\/wp-json\/wc\/v3\/refunds\/{refund_id}<\/code> \u2013 Retrieve a single refund by its ID<a href=\"https:\/\/www.postman.com\/sovware\/sovware\/collection\/t7i09mj\/directorist#:~:text=GET\" target=\"_blank\" rel=\"noopener\">postman.com<\/a>.<\/li>\n\n\n\n<li><strong>POST<\/strong> <code>\/wp-json\/wc\/v3\/orders\/{order_id}\/refunds<\/code> \u2013 Create a refund for the given order ID (pass refund details in request body)<a href=\"https:\/\/www.postman.com\/sovware\/sovware\/collection\/t7i09mj\/directorist#:~:text=POST\" target=\"_blank\" rel=\"noopener\">postman.com<\/a>.<\/li>\n\n\n\n<li><strong>DELETE<\/strong> <code>\/wp-json\/wc\/v3\/orders\/{order_id}\/refunds\/{refund_id}<\/code> \u2013 Delete a specific refund by its ID for a given order<a href=\"https:\/\/www.postman.com\/sovware\/sovware\/collection\/t7i09mj\/directorist#:~:text=POST\" target=\"_blank\" rel=\"noopener\">postman.com<\/a>.<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This reference covers the REST endpoints commonly used with Directorist-powered sites. It is intentionally concise and developer-friendly. General \/ WordPress Endpoints User Management Authentication \/ Account Listings Categories, Tags, and Locations (Terms) Firebase Notifications (Push) Payment System (WooCommerce) (These endpoints use WooCommerce\u2019s REST API v3, enabled when Directorist monetization is active.)<\/p>\n","protected":false},"author":24585,"featured_media":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"doc_category":[699],"doc_tag":[],"class_list":["post-368693","docs","type-docs","status-publish","hentry","doc_category-developers-doc"],"year_month":"2026-03","word_count":904,"total_views":0,"reactions":{"happy":0,"normal":0,"sad":0},"author_info":{"name":"yousuf.sovware","author_nicename":"yousuf-sovware","author_url":"https:\/\/directorist.com\/author\/yousuf-sovware\/"},"doc_category_info":[{"term_name":"Developers Doc","term_url":"https:\/\/directorist.com\/docs-category\/developers-doc\/"}],"doc_tag_info":[],"_links":{"self":[{"href":"https:\/\/directorist.com\/wp-json\/wp\/v2\/docs\/368693","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/directorist.com\/wp-json\/wp\/v2\/docs"}],"about":[{"href":"https:\/\/directorist.com\/wp-json\/wp\/v2\/types\/docs"}],"author":[{"embeddable":true,"href":"https:\/\/directorist.com\/wp-json\/wp\/v2\/users\/24585"}],"replies":[{"embeddable":true,"href":"https:\/\/directorist.com\/wp-json\/wp\/v2\/comments?post=368693"}],"version-history":[{"count":0,"href":"https:\/\/directorist.com\/wp-json\/wp\/v2\/docs\/368693\/revisions"}],"wp:attachment":[{"href":"https:\/\/directorist.com\/wp-json\/wp\/v2\/media?parent=368693"}],"wp:term":[{"taxonomy":"doc_category","embeddable":true,"href":"https:\/\/directorist.com\/wp-json\/wp\/v2\/doc_category?post=368693"},{"taxonomy":"doc_tag","embeddable":true,"href":"https:\/\/directorist.com\/wp-json\/wp\/v2\/doc_tag?post=368693"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}