Get Started

API Documentation

Programmatic access to FD-258 to EFT conversion for Business tier subscribers.

Business Tier Required

API access is available for Business subscribers ($49/mo). Includes 1,000 requests per day.

Get Business Plan

Authentication

All API requests require a valid API key. Include your key in the Authorization header:

Authorization: Bearer slap_sk_your_secret_key_here

You can manage your API keys in your account dashboard. Each account can have up to 5 active API keys.

# Example using curl
curl -X POST https://slapeft.com/api/v1/convert \
  -H "Authorization: Bearer slap_sk_abc123..." \
  -F "file=@fd258_scan.jpg" \
  -F 'demographics={"last_name":"DOE",...}'

Rate Limits

Business Tier Limits

  • 1,000 requests per day (resets at midnight UTC)
  • Rate limit headers included in all responses
  • 429 status returned when limit exceeded

Rate limit information is returned in response headers:

Header Description
X-RateLimit-Limit Maximum requests allowed per day
X-RateLimit-Remaining Requests remaining in current period
X-RateLimit-Reset UTC timestamp when limit resets

Endpoints

Base URL: https://slapeft.com/api/v1

POST /convert

Create a new EFT conversion from an FD-258 fingerprint card image.

Request

Content-Type: multipart/form-data

Field Type Description
file required File FD-258 card image (JPEG, PNG, TIFF)
demographics required JSON Subject demographics (see below)

Demographics JSON

Field Type Description
last_name required string Last name (max 40 chars)
first_name required string First name (max 40 chars)
middle_name optional string Middle name
suffix optional string Name suffix (Jr, Sr, III)
dob required string Date of birth (YYYY-MM-DD)
sex required string M or F
race required string W, B, A, I, or U
eyes required string BLK, BLU, BRO, GRY, GRN, HAZ
hair required string BLK, BLN, BRO, GRY, RED, WHI, BAL
height required string Height in feet-inches (e.g., "510" for 5'10")
weight required string Weight in pounds (max 3 digits)
pob required string Place of birth (2-letter state/country)
citizenship optional string Citizenship country code (default: US)
address required string Street address
city required string City
state required string State (2-letter code)
zip_code required string ZIP code
trust_name optional string NFA Trust name
mode optional string "slaps" (default) or "rolled"
amputated optional object Map of finger position to status (XX=amputated, UP=bandaged)

Response

200 OK 400 Bad Request 401 Unauthorized 429 Rate Limited
{
  "conversion_id": "conv_a1b2c3d4e5f6",
  "status": "pending",
  "message": "Conversion queued. Check status at /api/v1/convert/{conversion_id}/status",
  "created_at": "2026-01-22T12:00:00Z"
}

Example

curl -X POST https://slapeft.com/api/v1/convert \
  -H "Authorization: Bearer slap_sk_abc123..." \
  -F "file=@fd258_scan.jpg" \
  -F 'demographics={
    "last_name": "DOE",
    "first_name": "JOHN",
    "dob": "1985-06-15",
    "sex": "M",
    "race": "W",
    "eyes": "BRO",
    "hair": "BRO",
    "height": "510",
    "weight": "180",
    "pob": "TX",
    "address": "123 Main St",
    "city": "Austin",
    "state": "TX",
    "zip_code": "78701"
  }'
GET /convert/{conversion_id}/status

Check the status of a conversion.

Response

{
  "conversion_id": "conv_a1b2c3d4e5f6",
  "status": "completed",
  "progress": 100,
  "message": "Conversion complete",
  "download_url": "/api/v1/convert/conv_a1b2c3d4e5f6/download",
  "expires_at": "2026-01-23T12:00:00Z"
}

Status Values

Status Description
pending Queued for processing
processing Currently being processed
completed Ready for download
failed Processing failed (see message)
GET /convert/{conversion_id}/download

Download the completed EFT file. Only available after status is "completed".

Response

200 OK (binary file) 400 Not Ready 404 Not Found 410 Expired

Files expire 24 hours after creation.

Example

curl -X GET https://slapeft.com/api/v1/convert/conv_a1b2c3d4e5f6/download \
  -H "Authorization: Bearer slap_sk_abc123..." \
  -o "DOE_J_20260122.eft"
GET /usage

Get your API usage statistics. Does not count toward rate limit.

Response

{
  "key_id": "slap_abc123",
  "key_name": "Production Key",
  "total_requests": 1547,
  "daily_limit": 1000,
  "daily_usage": [
    {"date": "2026-01-15", "requests": 234},
    {"date": "2026-01-16", "requests": 456},
    ...
  ]
}

Error Handling

All errors return a JSON response with error and code fields:

{
  "error": "Invalid API key",
  "code": "invalid_key"
}

Error Codes

HTTP Status Code Description
400 invalid_json Demographics JSON is malformed
400 missing_file No file uploaded
400 invalid_file_type File is not an image
400 not_ready Conversion not complete (for download)
401 missing_auth No Authorization header
401 invalid_auth Invalid authorization format
401 invalid_key API key is invalid or revoked
404 not_found Conversion not found
410 expired File has expired
429 rate_limited Daily rate limit exceeded
500 missing_output Internal error - EFT file missing

Client Libraries

Coming soon. In the meantime, the API can be accessed with any HTTP client.

Python Example

import requests
import json

API_KEY = "slap_sk_your_key_here"
BASE_URL = "https://slapeft.com/api/v1"

def convert_fd258(image_path, demographics):
    headers = {"Authorization": f"Bearer {API_KEY}"}

    with open(image_path, "rb") as f:
        files = {"file": f}
        data = {"demographics": json.dumps(demographics)}
        resp = requests.post(f"{BASE_URL}/convert", headers=headers, files=files, data=data)

    return resp.json()

# Usage
result = convert_fd258("fd258_scan.jpg", {
    "last_name": "DOE",
    "first_name": "JOHN",
    # ... other fields
})

print(result["conversion_id"])
slapEFT
Install slapEFT App
Quick access to fingerprint conversion

Install slapEFT

1 Tap the Share button in Safari's toolbar
2 Scroll down and tap "Add to Home Screen"
3 Tap "Add" to install the app