canonical: https://jentic.com/apis/kardow.com/kardow

# Kardow Public API

The Kardow Public API runs a Kardow job board from outside the dashboard: posting and updating jobs, reading the applications they receive, and managing the members who pay for access. It creates jobs with salary range, job type, location, and apply method, lists applications by job and status such as shortlisted or hired, and syncs members along with their subscription access and payments. The same key also manages the board's content, including custom pages and blog posts, CMS collections and items, the media library, authors, categories, and geocoded locations, and subscribes webhooks to events such as job.created or application.received with delivery to a URL, Slack, or Discord.

## For AI agents

Post and update jobs on a Kardow job board, list applications by status, sync paying members and their subscription access, publish pages and CMS items, and subscribe webhooks to job and application events.

## Scope

Does not handle payroll, interview scheduling, or charging cards directly. Use for running a Kardow job board's jobs, applications, members, content, and webhooks only.

## Capabilities

- Post a job with title, description, company_name, job_type, salary_min and salary_max, and an apply method such as website, email, or form
- Search and filter the board's jobs by search text, job_types, locations, is_remote, and posted_within windows such as 7d or 30d
- Take a job offline by patching its status to expired, or delete it permanently
- List applications for a job filtered by status such as pending, shortlisted, rejected, or hired
- Sync a member by email with optional access and payment, and apply access actions such as activate, cancel_at_period_end, or expire_now
- Subscribe webhooks to events such as job.created, application.received, or payment.received, delivered to a URL, Slack, or Discord
- Publish blog posts and pages, upsert CMS collections and items, and upload images to the media library

## Use cases

### Job Board Operations Through Jentic

An AI agent running a niche job board imports jobs from an employer's feed, posts each with its salary range and apply method, and expires roles once they are filled. Through Jentic the agent finds these Kardow operations by intent and calls them with the board's API key, while the developer chooses which writes it may make, for example posting and updating jobs but not deleting them.

Example prompt: Create a job with title 'Senior Backend Engineer', company_name 'Acme', job_type 'full-time', is_remote true, salary_min 120000, salary_max 150000, salary_currency 'USD', and apply_type 'website' with an apply_url

### Application Triage Alerts

A board owner wants new applications to reach the hiring team without opening the dashboard. The agent subscribes a Slack webhook to application.received, and on request lists a job's applications filtered by status so the team can review pending ones and see who was shortlisted.

Example prompt: Create a webhook subscription with event 'application.received', target_type 'slack', and a Slack target_url, then list applications for a job_id with status 'pending'

### Paid Membership Sync

A board that sells access to job seekers or employers keeps Kardow in step with its billing system. The agent syncs a member by email with their plan and payment, and applies access actions such as reactivate, mark_past_due, or cancel_now when billing events arrive, then reads the member's subscriptions and paywall summary by email.

Example prompt: Sync a member with email 'jane@example.com' and role 'employer', then apply the access action 'cancel_at_period_end' with her stripeSubscriptionId, and fetch the member to confirm

### Board Content Publishing

An agent keeps a job board's SEO content fresh. It uploads a cover image to the media library, creates a blog post with meta_title and meta_description, and adds items to a CMS collection such as a salary guide, with each item's data validated against the collection's schema.

Example prompt: Upload an image by source_url, create a page with kind 'blog_post', status 'draft', the image as cover_image, and a meta_description, then add an item to the CMS collection with slug 'salary-guides'

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | `/jobs` | Create a job |
| GET | `/jobs` | Search and list jobs |
| PATCH | `/jobs/{id}` | Update a job's status or fields |
| GET | `/applications` | List applications |
| POST | `/members/sync` | Create or update a member |
| POST | `/members/access` | Apply a member access action |
| POST | `/webhooks` | Subscribe to webhook events |
| POST | `/pages` | Create a page or blog post |

## Key resources

- **Jobs** — Board job listings: search, post, fetch, update status or fields, and delete.
- **Applications** — Applications to the organization's jobs, filtered by job and status.
- **Members and users** — Member sync with access and payments, access lifecycle actions, and job board user listings.
- **Webhooks** — Event subscriptions delivered to a URL, Slack, or Discord.
- **Content** — Pages and blog posts, CMS collections and items, media assets, authors, categories, and locations.

## AI readiness

This API is usable in Jentic One now. Its AI-readiness score against Jentic's framework shows where it stands today and where improvements would make it even easier for agents to use.

- **Score:** 60 / 100
- **Maturity:** Foundational
- **Dimensions:**
  - Foundational Compliance: 52 / 100
  - Developer Experience & Jentic Compatibility: 64 / 100
  - AI-Readiness & Agent Experience: 49 / 100
  - Agent Usability: 94 / 100
  - Security: 50 / 100
  - AI Discoverability: 74 / 100
- **View full report:** https://jentic.com/apis/kardow.com/kardow/scorecard
- **How the score is calculated:** https://docs.jentic.com/reference/api-readiness-framework/overview/
- **More about the dimensions:** https://docs.jentic.com/reference/api-readiness-framework/specification/#dimensional-model-overview

### Score it yourself

Every API in the directory is allowlisted, so you can re-score it with no key required.

- **Score your own API:** https://jentic.com/scorecard.md
- **Scoring CLI agent skill:** https://github.com/jentic/jentic-api-scorecard/blob/main/skills/jentic-api-scorecard/SKILL.md

```sh
npx @jentic/api-scorecard-cli score <openapi-url>
```

## Why Jentic

- **Setup:** Wiring Kardow by hand means sending the x-api-key header with the right scopes, learning its job, member access, and webhook enums, and handling multipart uploads for assets. Through Jentic you install once, import the Kardow Public API from the API Directory, store the key once, and your agent calls it.
- **Permission scoping:** Kardow puts job, page, and webhook ids and the CMS collection slug in the URL path (`/jobs/{id}`, `/cms/{slug}/{id}`), so a rule can pin your agent to one job or one CMS collection, while member actions carry the email in the body. You choose the operations it may call, so destructive ones like DELETE `/jobs/{id}` or DELETE `/cms/{slug}` are not included unless you add them.
- **Credential handling:** Your Kardow API key is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'post a job to my board' or 'list shortlisted applicants', and Jentic returns the matching Kardow operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Workable** — Workable is an applicant tracking system for an employer's own hiring, not a multi-employer job board.
- **Recruitee** — Recruitee covers employer-side recruiting with candidates and pipelines.
- **Zapier NLA** — Zapier connects Kardow webhook events and user fields to other apps.

## FAQ

### What authentication does the Kardow Public API use?

Per its OpenAPI spec, the Kardow Public API authenticates with an API key sent in the x-api-key header, created under Settings > API Keys in the Kardow dashboard. Some operations need a scope on the key, for example listing users requires members:read. Through Jentic the key is stored encrypted by your own Jentic One instance and injected at call time.

### Is there a Kardow MCP server?

You don't need an MCP server to give your agent the Kardow Public API. Jentic connects it directly from the API Directory: import it, store your API key once, and your agent calls it, finding job, application, and member operations on demand instead of loading a server's tool definitions into its context.

### Can I limit what my agent is allowed to do with the Kardow Public API?

Yes. Write a rule that allows only listing jobs, creating jobs, patching jobs, and listing applications, so a posting agent can publish and expire listings and read applicants but cannot delete jobs, touch member access, or remove CMS collections. Every call it makes is logged.

### How do I take a Kardow job offline without deleting it?

Call PATCH `/jobs/{id}` with status set to expired. DELETE `/jobs/{id}` removes the job permanently and cannot be undone, so the spec recommends expiring instead when you may want the listing back.

### What webhook events does the Kardow Public API support?

POST /webhooks subscribes to events including job.created, job.expired, application.received, application.status_changed, user.created, subscription.canceled, and payment.received, or * for all, with target_type set to webhook, slack, or discord. PATCH `/webhooks/{id}` enables or disables a subscription.

### What are the rate limits for the Kardow Public API?

The OpenAPI spec does not specify rate limits. Check https://kardow.com or contact Kardow support for current limits.

### How do I post a job to Kardow through Jentic?

Search Jentic for an intent like 'post a job to my job board', import the Kardow Public API from the API Directory, and store your API key. Your agent calls POST /jobs with title, description, and company_name, plus optional fields such as job_type and salary_min, and can resolve a free-text location first with POST /locations to get a location_id. To run it on your own infrastructure, install Jentic One from its GitHub repo.
