Integration Methods

CLI

Interact with Markidy directly from your terminal. Search listings and profiles, send listing or profile requests, and manage conversations without leaving the command line.

Installation

Install the CLI globally using npm:

Install
npm install -g @markidy/cli

Or run it directly without installing:

npx
npx @markidy/cli <command>

Setup

Authenticate with your API key from your dashboard:

Login
markidy login

This stores your API key in ~/.markidy/config.json for all future commands.

Commands

Account

markidy login

Save your API key locally.

No options
markidy logout

Remove saved credentials.

No options
markidy channels Read

List your connected channels. The markidy channel enables API-based automation and AI-assisted messaging. Other channels include telegram and discord.

No options
markidy webhooks Read

List your registered webhooks.

No options

Profiles

markidy profiles search [query] Read

Search verified public profiles.

--sortrelevance | trust | recent | posts
--countryCountry code, comma-separated for multiple values
--has-careerOnly return profiles with career entries
--open-toRecruiting open-to values, comma-separated
--rolesDesired role tags, comma-separated
--skillsSkill tags, comma-separated
--senioritySeniority values, comma-separated
--work-modeWork mode values, comma-separated
--availabilityAvailability values, comma-separated
--min-experience-monthsMinimum total career experience in months
--max-experience-monthsMaximum total career experience in months
--locationPreferred work location text match
--pagePage number
--page-sizeResults per page (max 50)

--roles and --skills use the recruiting tag index for formatting variants such as Node.js, nodejs, and node; semantic aliases such as PM and Product Manager are not automatically expanded.

Enums: --sort = relevance|trust|recent|posts; --open-to = actively_looking|open_to_offers|not_looking|hiring_only; --seniority = intern|junior|mid|senior|lead|executive; --work-mode = remote|hybrid|onsite|flexible; --availability = immediately|one_month|three_months|not_specified.

markidy profiles get <user-id> Read

View public profile detail including recruitingPreferences, trustLinks, profileRequestPolicy, activeChannels, and myProfileRequest.

No options

Categories

markidy categories Read

Browse all categories and roles.

No options
markidy categories get <key> Read

Get category detail with required fields and value formats.

No options

Listings

markidy listings search [query] Read

Search listings. All parameters are optional.

--category Category key
--role Role key
--country Country codes, comma-separated (e.g. US,JP)
--verified Verification level (0, 1, 2)
--sort recent | views | requests | trust (default: trust)
--meta Field filters as key=value (repeatable). Use _min/_max for NUMBER/DATE range, _lat/_lng for GEO (use markidy geocode when starting from raw place text)
--page Page number (default: 1)
--page-size Results per page (default: 16, max: 50)
markidy listings get <id> Read

View listing details including profile.userId, which can be passed to markidy profiles get <user-id>.

No options
markidy listings mine Read

List your own listings.

--status ACTIVE, PAUSED, PENDING
--page Page number
markidy listings create Write

Create a new listing. Required: --category, --role, --meta, --channels. For complex fields, prefer structured JSON that matches markidy categories get and its acceptedValueFormats.

--category required Category key
--role required Role key
--meta required Field values as key=value (repeatable)
--channels required Connected channels (comma-separated)
--webhook-ids Webhook IDs (comma-separated)
markidy listings update <id> Write

Update a listing. Required: --meta, --channels. Complex fields can use structured JSON or legacy JSON strings.

--meta required Updated field values as key=value (repeatable)
--channels required Updated channels (comma-separated)
--webhook-ids Webhook IDs (comma-separated)
markidy listings status <id> <ACTIVE|PAUSED> Write

Pause or resume a listing.

No options
markidy listings delete <id> Write

Delete a listing permanently.

No options

Match Requests

markidy requests send <listing-id> Write

Send a match request. Required: --channels, --message

--channels required Channel types (comma-separated)
--message required Request message (max 500 chars)
markidy requests send-profile <profile-user-id> Write

Send a profile request. Required: --channels, --message

markidy requests mine Read

View your sent requests.

--subject LISTING or PROFILE
--status PENDING, ACCEPTED, REJECTED
--listing Filter by listing ID
--profile Filter by target profile owner user ID
--page Page number (default: 1)
--page-size Results per page (default: 16, max: 50)
markidy requests incoming-profile <profile-user-id> Read

View incoming requests on your profile.

markidy requests incoming <listing-id> Read

View incoming requests on your listing.

--status PENDING, ACCEPTED, REJECTED
--page Page number (default: 1)
--page-size Results per page (default: 16, max: 50)
markidy requests respond <id> <accept|reject> Write

Accept or reject a request.

--reason Rejection reason

Conversations

markidy conversations Read

List your conversations.

--subject LISTING or PROFILE
--listing Filter by listing ID
--profile Filter by profile owner user ID
markidy conversations get <id> Read

View conversation messages.

--limit Number of messages
--before Cursor for pagination
markidy conversations send <id> Write

Send a message. Required: --message

--message required Message content
markidy conversations delete <id> Write

Leave a conversation. The other party will see otherLeft: true and can no longer send messages.

No options

Tools

markidy geocode <query> Read

Convert an address or place name to lat/lng coordinates. Use it for GEO search filters or when you need to build a GEO field from raw text.

No options

Usage Flows

Listing Seeker Flow

1markidy categoriesBrowse available categories
2markidy geocodeOptional: convert raw address to lat/lng (for GEO fields)
3markidy listings searchSearch with filters (+ GEO meta)
4markidy listings get <id>View detail, profile.userId, and channels
->markidy profiles get <user-id>Optional: inspect the owner profile using listing.profile.userId
5markidy requests send <id>Send request to owner
6markidy requests minePoll for status
7markidy conversationsFind conversation (after accepted)
8markidy conversations send <id>Send a message

Profile Contact Flow

1markidy profiles searchSearch candidates with sourcing filters
2markidy profiles get <user-id>Check policy, channels, and existing request
3markidy requests send-profile <user-id>Send only when profileRequestPolicy.canRequest is true
4markidy requests mine --subject PROFILEPoll profile request status
5markidy conversations --subject PROFILEContinue after acceptance

Creator Flow

1markidy channelsCheck connected channels
2markidy categories get <key>Check required fields and value encoding
3markidy webhooksGet webhook IDs (optional)
4markidy listings createCreate listing with status PENDING
...Wait for admin approval and ACTIVE status

Management Flow

1markidy listings mineCheck listing statuses
2markidy requests incoming <id>View incoming requests
3markidy requests respond <id> acceptAccept or reject
4markidy conversationsFind conversation (after accepting)
5markidy conversations send <id>Reply to requester
6markidy conversations delete <id>Leave conversation
7markidy listings status <id> PAUSEDOptionally pause listing

Examples

Discovery — Browse & Search
# Browse all categories
markidy categories

# Get detail for a category (see available roles & input fields)
markidy categories get jobs

# Search by keyword
markidy listings search "mentor"

# Search with filters
markidy listings search --category jobs --role employer --country KR,JP --sort trust

# Filter by meta fields
markidy listings search --category housing --role host --meta monthly-rent_min=500 --meta monthly-rent_max=1500

# Pagination
markidy listings search --category jobs --page 2 --page-size 10

# View a specific listing
markidy listings get lst_abc123

# Inspect the listing owner profile from listing.profile.userId
markidy profiles get usr_123
Requesting — Send & Track
# Send a match request
markidy requests send lst_abc123 --channels telegram,discord --message "Hi, I'm interested"

# Check your sent requests
markidy requests mine
markidy requests mine --status PENDING --page 1 --page-size 5

# View incoming requests on your listing
markidy requests incoming lst_abc123 --status PENDING

# Accept or reject
markidy requests respond req_xyz789 accept
markidy requests respond req_xyz789 reject --reason "Not a good fit"
Publishing — Create & Manage Listings
# Step 1: Check your channels & webhooks
markidy channels
markidy webhooks

# Step 2: Find category keys and required fields
markidy categories
markidy categories get mentoring

# Step 3: Create a listing
markidy listings create \
  --category mentoring --role mentor \
  --channels markidy \
  --meta headline="Product mentor for early-stage founders" \
  --meta about-me="<p>I help teams ship faster with better product decisions.</p>" \
  --meta format=Remote \
  --meta rate="$50-$100 / hour" \
  --webhook-ids wh_abc123

# View your listings
markidy listings mine
markidy listings mine --status ACTIVE

# Update a listing
markidy listings update lst_abc123 --meta format=Hybrid --channels markidy

# Pause / Resume
markidy listings status lst_abc123 PAUSED
markidy listings status lst_abc123 ACTIVE

# Delete
markidy listings delete lst_abc123
Conversations
# List all conversations
markidy conversations

# Filter by listing
markidy conversations --listing lst_abc123

# Read messages (last 20)
markidy conversations get conv_xyz789 --limit 20

# Reply
markidy conversations send conv_xyz789 --message "Sounds great, let's connect!"

# Leave a conversation
markidy conversations delete conv_xyz789
Tools
# Convert address to coordinates (for GEO meta search)
markidy geocode "San Francisco, CA"

# Then use coordinates in search
markidy listings search --category jobs --role employer --meta work-location_lat=37.77 --meta work-location_lng=-122.42

Global Options

OptionDescription
--api-key <key>Override stored API key for this command
--jsonOutput raw JSON instead of formatted text
--helpShow help for any command