Stakly
Logo
  • Home
  • About Us
  • FAQs
  • Pricing
  • Contact Us
  • Sign in

Stakly for developers

Your contacts. Your systems.

A simple, read-only API for the business cards you save in Stakly.

Manage API keys
Get startedEndpointsResponse fieldsFilters & paginationCode examplesErrors & limitsKey managementOpenAPI schema ↗

Public API · v1

Get started

Fetch your saved scanned and manually entered cards, including your corrections. The separate owner business card is not included. API reads work on every account plan and do not consume scanning quotas.

  1. Sign in to My account and open API access.
  2. Name your integration and select Generate API key.
  3. Save the key immediately; its full value is shown only once.
  4. Send it in the Authorization header on each data request.
Authorization: Bearer YOUR_API_KEY

Base URL

https://www.stakly.pro/api/public/v1/

Use the examples below from your server. Store the key in a secret manager or server environment variable, never in browser code or a distributed mobile app.

Endpoints

GET /cards/

List your saved cards. Supports search, category, updated_since, and page_size.

GET /cards/{id}/

Get one of your cards by ID. Missing cards and cards belonging to another account return 404.

GET /categories/

List shared default categories and your own categories. Each category contains id, name, and slug. Follow next for additional pages.

All data endpoints require a valid Bearer API key. Creating, changing, or deleting cards through this API is not supported.

Download the OpenAPI schema for the complete contract

Card response fields

FieldsDescription
idStable card ID. Use it to upsert records in your system.
full_name, title, companyContact name, job title, and company.
phone, phone_secondary, emailPrimary phone, secondary phone, and email address.
address, website, notesPostal address, website, and saved notes.
categoryAn object with id, name, and slug, or null when no category is assigned.
image_front, image_backImage URLs, or null when absent. URLs follow the existing storage configuration; availability and expiry depend on that storage.
created_at, updated_atISO 8601 timestamps for creation and the latest saved update.

Filters & pagination

search
Search saved contact details.
category
Filter by a category ID returned by the categories endpoint.
updated_since
Include cards updated at or after a timezone-aware ISO 8601 timestamp, for example 2026-09-17T10:00:00Z. Invalid filter values return 400.
page_size
50 records by default, up to 100 per page.

Follow the next link

List responses contain results, next, and previous. Cards use cursor pagination ordered by creation timestamp and ID. Request the exact next URL until it is null. Keep cursors opaque; do not construct page numbers.

{
  "next": null,
  "previous": null,
  "results": []
}

Poll for updates

Record the start time of each polling run, request updated_since using the previous run’s start time with a small overlap, and follow all next links. Upsert by id: the filter is inclusive, so overlapping results are expected. Only advance your checkpoint after all pages succeed.

This API does not provide deletion synchronization or a change-event feed. A missing card in an incremental response does not mean it was deleted.

Code examples

Set STAKLY_API_KEY in your server environment to the key you saved. These examples never require credentials in a URL.

cURL

curl --get "https://www.stakly.pro/api/public/v1/cards/" \
  --header "Authorization: Bearer ${STAKLY_API_KEY}" \
  --data-urlencode "updated_since=2026-09-17T10:00:00Z" \
  --data-urlencode "page_size=100"

This cURL request fetches one page. Follow the returned next URL for the rest.

Python

Uses the Python standard library. Run on your server.

import json
import os
from urllib.request import Request, urlopen

url = "https://www.stakly.pro/api/public/v1/cards/?page_size=100"
headers = {"Authorization": "Bearer " + os.environ["STAKLY_API_KEY"]}

while url:
    request = Request(url, headers=headers)
    with urlopen(request, timeout=30) as response:
        page = json.load(response)
    for card in page["results"]:
        print(card["id"], card["full_name"])
    url = page["next"]

JavaScript · server-side

Uses Node.js with built-in fetch. Run as an ES module on your server, never in a browser.

const key = process.env.STAKLY_API_KEY;
if (!key) throw new Error("Set STAKLY_API_KEY");
let url = "https://www.stakly.pro/api/public/v1/cards/?page_size=100";

while (url) {
  const response = await fetch(url, {
    headers: { Authorization: `Bearer ${key}` },
    signal: AbortSignal.timeout(30000),
  });
  if (!response.ok) throw new Error(`Stakly API: ${response.status}`);
  const page = await response.json();
  for (const card of page.results) {
    console.log(card.id, card.full_name);
  }
  url = page.next;
}

Errors & limits

The default limit is 120 requests per minute per owner, shared across all of that owner’s keys. Deployments may configure a different limit. On 429, wait for the number of seconds in Retry-After before trying again.

400
Invalid filter or request. Correct the reported value.
401
Missing, invalid, or revoked key, or an inactive account. Check your Bearer header and key status.
404
The requested card or cursor was not found or is not accessible to this account.
405
Unsupported HTTP method. Data endpoints are read-only.
429
Request limit reached. Respect the Retry-After response header.

Errors are JSON. Authentication and general request errors use a detail message; validation errors may be keyed by field. Do not rely on exact human-readable wording.

Manage and rotate keys

Create up to 10 active keys per account. Use a separate named key for each integration so you can identify and revoke it independently. The dashboard shows its masked prefix, creation date, last use, and status.

  1. Generate a replacement key and save it securely.
  2. Update your server integration and verify it can read your cards.
  3. Revoke the old key in My account. Access stops on the next authentication attempt.

If a key is exposed, revoke it and replace it. These keys grant read access only to the owner’s public API data; they do not authenticate app, billing, admin, or key-management requests.

Open API access
Stakly

Get Stakly

Scan. Stack. Connect. Download the app and turn business cards into contacts in one tap.

Download on the App Store Get it on Google Play

Download Stakly today!

Scan. Stack. Connect.

Download on App Store
Get it on Google Play
Stakly

Business card scanning, made simple. Turn cards into contacts in one tap.

Quick links

  • Home
  • About Us
  • FAQs
  • Pricing
  • Contact Us
  • API documentation
  • Privacy Policy
  • Terms of Service

Contact

  • Stakly Location1112 8th Street, North Bergen, NJ 07047, USA
  • Stakly Phone Number+964 (750) 475-6737
  • Stakly Phone Number+964 780 500 8833
  • Stakly Email Address[email protected]

© 2026 Stakly. All rights reserved.

  • Powered by Ronex Enterprises