PowerKitPro

Quick start

1. Create a key on your Account page (API keys). It starts with pk_live_ and is shown once.

2. Send it as a Bearer token. Read-only endpoints are GET with arguments in the query string; everything else is POST with a JSON body (POST also works for read endpoints).

curl "https://powerkitpro.com/api/v1/qr/list?limit=5" -H "Authorization: Bearer pk_live_..."

curl -X POST https://powerkitpro.com/api/v1/qr/create \
  -H "Authorization: Bearer pk_live_..." -H "Content-Type: application/json" \
  -d '{"name":"Front window","target_url":"https://example.com/menu"}'

3. Read the answer. Success is 200 {"ok":true,"text":"...","data":{...}}: text is a readable summary (Markdown), data the same thing as JSON. Lists carry total, count, offset, has_more and items.

401 {"ok":false,"error":"unauthorized","message":"Invalid API key. Create one on your Account page."}
400 {"ok":false,"error":"invalid_input","message":"...","issues":[{"path":"target_url","message":"Required"}]}
400 {"ok":false,"error":"tool_error","message":"This plan allows 3 codes and all are used. ..."}
404 {"ok":false,"error":"not_found","message":"..."}
429 {"ok":false,"error":"rate_limited","message":"...","retryAfter":3600}   (also a Retry-After header, seconds)

Limits. 100 calls a day per key on free plans, 5,000 a day on any paid PowerKit Pro plan. Every call runs as you and keeps to your plan's limits, so a tool can answer with tool_error when a plan is full. Responses are never cached and the API sends no CORS headers: call it from a server, a script or the CLI, not from a browser page.

Any tool by name. POST /api/v1/call with {"name":"powerkit_qr_create","arguments":{...}} runs any endpoint below by its tool name. GET /api/v1/tools returns this whole reference as JSON (name, method, path, JSON Schema input, hints), which is what the CLI reads.

Command line

npm i -g powerkit-pro
powerkit login                      # paste your key once; it is kept in the system keychain
powerkit tools                      # every command, grouped by product
powerkit qr create --name "Flyer" --target-url https://example.com
powerkit booking list --limit 20 --json
powerkit import certs issue --csv people.csv    # one call per row, headers map to flags
powerkit call powerkit_qr_stats --json '{"id":"..."}'

Endpoint names map to commands: powerkit_qr_create is powerkit qr create, and each argument is a flag (target_url is --target-url). --help on any command lists its flags with the descriptions below. Exit codes: 0 ok, 1 tool error, 2 usage, 3 not authorized, 4 rate limited. POWERKIT_API_KEY and POWERKIT_BASE_URL work in CI.

Zapier and Make

Use a Webhooks by Zapier (or Make HTTP) step: method POST, URL from the table below, header Authorization: Bearer pk_live_..., JSON body with the arguments. For lists, use GET with the arguments as query string parameters. Forms and waivers can also push each response to your own webhook URL from their settings on Pro and up, with no key needed.

Endpoints

Account

EndpointArguments
GET/api/v1/me
My account (powerkit_me)
Who is connected: name, email, time zone, admin flag, the plan on each PowerKit tool with its limits, unused event credits, and whether Google Calendar and Contacts are connected. Call this first when you need to know what the account can do.
none
GET/api/v1/list/products
List PowerKit products (powerkit_list_products)
The twelve PowerKit Pro tools with what each does, its public path, pricing and plan limits, plus the plan this account has on each. Use it to explain options or pick the right tool.
none
GET/api/v1/my/apps
My Power User apps (powerkit_my_apps)
Lists every app in the family the person can use with their Power User Pro Account (PowerKit Pro, Inkstand, FlipbookWow, Round Robin Pro), whether they use it yet, and their plan in each. Tools for apps they use appear in this connector with the app's name as a prefix.
none

QR codes

EndpointArguments
GET/api/v1/qr/list
List QR codes (powerkit_qr_list)
The dynamic QR codes on this account with where each points, total scans, folder and the URL printed in the code. Filter by a search word or a folder.
q? string
Match on the name or the target link.
folder? string
folder
limit? integer, default 50
How many to return (1 to 200).
offset? integer, default 0
How many to skip, for the next page.
POST/api/v1/qr/create
Create a QR code (powerkit_qr_create)
Creates a dynamic QR code that points at a web address. The address can be changed later without reprinting. Counts against the plan's code limit. Returns the id, the URL printed in the code and where to download the SVG or PNG.
name string
A label only the owner sees, like "Front window flyer".
target_url string
Where a scan should go. https:// is added when missing.
folder? string
Optional folder name to group codes.
POST/api/v1/qr/update/target
Change where a QR code goes (powerkit_qr_update_target)
Points an existing dynamic QR code at a new web address. Every printed copy follows at the next scan.
id string
The id as returned by a list tool.
target_url string
The new destination.
GET/api/v1/qr/stats
QR code scan stats (powerkit_qr_stats)
Scans for one QR code: total, last 7 days, by day, by device, by city and by country. The number of days of history depends on the plan (30 on Free).
id string
The id as returned by a list tool.
days? integer
How many days back. Capped by the plan's history window.

Business cards

EndpointArguments
GET/api/v1/card/list
List business cards (powerkit_card_list)
The digital business cards on this account with their public links, views, contact saves and lead counts.
limit? integer, default 50
How many to return (1 to 200).
offset? integer, default 0
How many to skip, for the next page.
POST/api/v1/card/create
Create a business card (powerkit_card_create)
Creates a digital business card and returns its public link. Counts against the plan's card limit. Lead capture (a "share your info" form) only shows on Pro and Team.
full_name string
full name
title? string
Job title.
company? string
company
phone? string
phone
email? string
email
website? string
website
address? string
Office address, shown with a Directions button.
bio? string
bio
links? array
Up to 8 links such as LinkedIn or a booking page.
lead_capture? boolean, default true
Show the "share your info" form on the card.
GET/api/v1/card/leads
Leads from a business card (powerkit_card_leads)
People who filled in the "share your info" form on a card: name, email, phone, note and when. Newest first.
card_id string
The id as returned by a list tool.
limit? integer, default 50
How many to return (1 to 200).
offset? integer, default 0
How many to skip, for the next page.

Proposals

EndpointArguments
GET/api/v1/bid/list
List proposals (powerkit_bid_list)
Proposals (bids and quotes) on this account with client, status (draft, sent, viewed, approved, declined), total and share link.
status? string: draft | sent | viewed | approved | declined
status
limit? integer, default 50
How many to return (1 to 200).
offset? integer, default 0
How many to skip, for the next page.
GET/api/v1/bid/get
Get a proposal (powerkit_bid_get)
One proposal in full: intro, packages, line items (with which are optional), discount, tax, deposit, terms, status history and totals.
id string
The id as returned by a list tool.
POST/api/v1/bid/create
Create a proposal (powerkit_bid_create)
Creates a proposal as a draft with line items, optional packages (Good, Better, Best), discount, tax and terms. Prices are in dollars. Counts against the Free plan's monthly limit. Returns the id and the share link; use powerkit_bid_share_link to mark it sent.
title string
title
client_name? string
client name
client_email? string
client email
client_company? string
client company
intro? string
Opening paragraph the client reads first.
line_items? array, default []
line items
packages? array
Mutually exclusive options; the client picks one.
discount? object
discount
tax_rate? number
Percent, e.g. 7.5.
deposit? object
Deposit asked for on approval.
notes? string
Terms and conditions.
valid_until? string
YYYY-MM-DD. Defaults to 30 days from now.
POST/api/v1/bid/share/link
Proposal share link (powerkit_bid_share_link)
The public link a client opens to review, choose options and approve a proposal. Set mark_sent to move a draft to "sent" so the dashboard shows when the client opens it.
id string
The id as returned by a list tool.
mark_sent? boolean, default false
Also mark a draft as sent.

Booking pages

EndpointArguments
GET/api/v1/booking/pages
List booking pages (powerkit_booking_pages)
Booking pages on this account with their public links, time zones, services (ids, durations, prices) and upcoming booking counts. Service ids are needed for availability.
none
GET/api/v1/booking/list
List bookings (powerkit_booking_list)
Appointments on this account. Defaults to upcoming confirmed bookings across every page; filter by page, date range or status (confirmed, pending_payment, cancelled, expired), or set upcoming=false for history.
page_id? string
The id as returned by a list tool.
upcoming? boolean, default true
Only bookings that start from now on.
from? string
Earliest date (in the page time zone).
to? string
Latest date, inclusive.
status? string: confirmed | pending_payment | cancelled | expired
status
limit? integer, default 50
How many to return (1 to 200).
offset? integer, default 0
How many to skip, for the next page.
GET/api/v1/booking/availability
Open times on a date (powerkit_booking_availability)
The start times a client could book for one service on one date, after hours, overrides, buffers, existing bookings and synced calendars. Times are in the page time zone. Get page and service ids from powerkit_booking_pages.
page_id string
The id as returned by a list tool.
service_id string
The id as returned by a list tool.
date string
A date as YYYY-MM-DD.
POST/api/v1/booking/canceldestructive
Cancel a booking (powerkit_booking_cancel)
Cancels an appointment as the owner. The client gets a cancellation email and the time opens up again. Cannot be undone; ask before calling it.
page_id string
The id as returned by a list tool.
booking_id string
The id as returned by a list tool.

QR menus

EndpointArguments
GET/api/v1/menu/list
List menus (powerkit_menu_list)
QR menus on this account with restaurant name, public link, item count, views and whether each is live.
none
GET/api/v1/menu/items
Menu items (powerkit_menu_items)
Every section and item on one menu with ids, prices, dietary tags, sold-out and hidden flags.
menu_id string
The id as returned by a list tool.
POST/api/v1/menu/update/item
Update a menu item (powerkit_menu_update_item)
Changes the price, sold-out or hidden flag, name, description or price note of one item. Only the fields given change. Guests see it on the next load. Price is in dollars.
menu_id string
The id as returned by a list tool.
item_id string
The id as returned by a list tool.
price? number
New price in dollars, e.g. 12.5.
sold_out? boolean
true to 86 it, false to bring it back.
hidden? boolean
hidden
name? string
name
description? string
description
price_note? string
Shown instead of a price, like "market price".

Reviews

EndpointArguments
GET/api/v1/reviews/list
List testimonials (powerkit_reviews_list)
Testimonials collected by the review pages on this account, with status (pending, approved, hidden). Leave page_id out to see every page; pass status=pending to see what is waiting for approval.
page_id? string
The id as returned by a list tool.
status? string: pending | approved | hidden
status
limit? integer, default 50
How many to return (1 to 200).
offset? integer, default 0
How many to skip, for the next page.
POST/api/v1/reviews/approve
Approve or hide a testimonial (powerkit_reviews_approve)
Moderates one testimonial: approve (shows on the wall and widget), hide, feature (approve and pin first) or unfeature.
page_id string
The id as returned by a list tool.
item_id string
The id as returned by a list tool.
action? string: approve | hide | feature | unfeature, default "approve"
action
EndpointArguments
GET/api/v1/links/pages
List link pages (powerkit_links_pages)
Link-in-bio pages on this account with their public links, every button (id, title, URL, on or off) and social profiles.
none
POST/api/v1/links/add
Add a link to a page (powerkit_links_add)
Appends a button to a link page. Free allows unlimited links; the page itself caps at 100. Returns the new link.
page_id string
The id as returned by a list tool.
title? string
Button text. Defaults to the address.
url string
url
icon? string
An emoji shown before the title.
GET/api/v1/links/stats
Link page stats (powerkit_links_stats)
Views and clicks for a link page over the last 30 days: totals, click-through rate, clicks by link, devices, cities, referrers. Click analytics need Pro; Free gets the view count only.
page_id string
The id as returned by a list tool.
days? integer, default 30
days

Certificates

EndpointArguments
GET/api/v1/certs/templates
List certificate templates (powerkit_certs_templates)
Certificate templates on this account (ids, names, titles, organization, signers, layout) and how many certificates can still be issued this month.
none
GET/api/v1/certs/list
List issued certificates (powerkit_certs_list)
Certificates issued on this account, newest first, with verification links. Filter by template or search a recipient name.
template_id? string
The id as returned by a list tool.
q? string
Part of a recipient name or course.
limit? integer, default 50
How many to return (1 to 200).
offset? integer, default 0
How many to skip, for the next page.
POST/api/v1/certs/issue
Issue certificates (powerkit_certs_issue)
Issues one certificate per recipient from a template. Each gets a unique verification code and a PDF link. Stops at the plan's monthly limit and says how many did not fit. Defaults (course, date, hours, custom) fill any recipient that leaves them blank.
template_id string
The id as returned by a list tool.
recipients array
recipients
course? string
Default course name.
date? string
Default date.
hours? string
hours
custom? string
custom

Event programs

EndpointArguments
GET/api/v1/event/list
List event programs (powerkit_event_list)
Event programs on this account: when and where, how many schedule items, whether published (needs PowerEvent Pro, Business or the Suite) and the public link.
limit? integer, default 50
How many to return (1 to 200).
offset? integer, default 0
How many to skip, for the next page.
GET/api/v1/event/get
Get an event program (powerkit_event_get)
One program in full: details, the schedule (with ids and speakers), speakers, sponsors by tier, ads and info pages, plus the days of a multi-day event.
id string
The id as returned by a list tool.
POST/api/v1/event/add/session
Add a schedule item (powerkit_event_add_session)
Appends a session to a program's schedule: title, a time label guests see (like "6:30 PM"), optional 24-hour start and end times for "happening now", location, description and speaker ids from powerkit_event_get. Guests see it immediately on a published program.
event_id string
The id as returned by a list tool.
title string
title
time_label? string
Free text shown to guests, e.g. "6:30 PM" or "After dinner".
start_time? string
HH:MM, 24-hour, event local time.
end_time? string
end time
day? string
For multi-day events: which day. Defaults to the first day.
description? string
description
location? string
Room or stage.
speaker_ids? array
speaker ids

Seating charts

EndpointArguments
GET/api/v1/seat/charts
List seating charts (powerkit_seat_charts)
Seating charts (events) on this account with date, venue, table count, how many guests are seated, the guest limit and the find-my-table link.
limit? integer, default 50
How many to return (1 to 200).
offset? integer, default 0
How many to skip, for the next page.
GET/api/v1/seat/tables
Tables on a chart (powerkit_seat_tables)
Every table on a seating chart with id, shape, capacity, how many guests are at it and who they are.
event_id string
The id as returned by a list tool.
GET/api/v1/seat/guests
Guests on a chart (powerkit_seat_guests)
The guest list for a seating chart with ids, party, meal, notes, table and check-in. Search by name or show only unseated guests.
event_id string
The id as returned by a list tool.
q? string
Part of a guest or party name.
unseated_only? boolean, default false
unseated only
limit? integer, default 50
How many to return (1 to 200).
offset? integer, default 0
How many to skip, for the next page.
POST/api/v1/seat/add/guests
Add guests to a chart (powerkit_seat_add_guests)
Adds guests to a seating chart (unseated). Party groups people who should sit together. Stops at the plan's guest limit per chart (50 on Free, 500 on Pro, unlimited on Business) and says how many did not fit.
event_id string
The id as returned by a list tool.
guests array
guests
POST/api/v1/seat/assign
Seat a guest (powerkit_seat_assign)
Moves a guest to a table (or unseats them with no table_id). Refuses a table that is already full unless allow_over_capacity is true.
event_id string
The id as returned by a list tool.
guest_id string
The id as returned by a list tool.
table_id? string
Leave out to unseat.
allow_over_capacity? boolean, default false
allow over capacity

Forms

EndpointArguments
GET/api/v1/forms/list
List forms (powerkit_forms_list)
PowerForms on this account: titles, public links, whether each is taking responses, and response counts.
none
GET/api/v1/form/responses
Form responses (powerkit_form_responses)
Responses to one form, newest first, with every answer. Pass the form id from powerkit_forms_list.
id string
The id as returned by a list tool.
limit? integer, default 50
How many to return (1 to 200).
offset? integer, default 0
How many to skip, for the next page.

Waivers

EndpointArguments
GET/api/v1/waivers/list
List waivers (powerkit_waivers_list)
PowerWaivers on this account: titles, signing links, whether each is taking signatures, and how many have been signed.
none
GET/api/v1/waiver/signatures
Signed waivers (powerkit_waiver_signatures)
Signed copies of one waiver, newest first: who signed, for which participant, when, and whether it is still valid.
id string
The id as returned by a list tool.
limit? integer, default 50
How many to return (1 to 200).
offset? integer, default 0
How many to skip, for the next page.
GET/api/v1/waiver/check
Check for a current waiver (powerkit_waiver_check)
Looks up whether someone has signed a waiver that is still valid, by name, email or phone. Use it at check-in: "does Marcus Bell have a waiver on file?"
who string
Name, email or phone.

Support and invites

EndpointArguments
GET/api/v1/invite/link
My invite link (powerkit_invite_link)
The invite-a-friend link and code for this account, with how many friends joined, how many went paid and how many free months were earned. Both sides get a free month when an invited friend starts a paid plan, up to 12 a year.
none
GET/api/v1/support/tickets
My support tickets (powerkit_support_tickets)
The support tickets on this account, newest first. Pass ticket_id to read one ticket with its whole message thread.
ticket_id? string
Read this ticket and its messages instead of listing.
POST/api/v1/support/open
Open a support ticket (powerkit_support_open)
Opens a support ticket with PowerKit Pro from this account. The team answers by email and on the Help page. Use when the person asks for help the tools cannot give.
subject string
A short subject.
message string
What happened and what they expected.
product? string: account | form | book | qr | link | card | review | quote | waiver | menu | cert | program | seat
Which tool it is about (a product key, or "account" for login and billing). Leave out for a general question.