Every API call is authenticated with an API key passed in the x-api-key header. Keys are bound to an account or an organization and inherit that owner's plan and balance.
RFCCheck and CURPCheck share accounts: one key calls the RFC endpoints and the CURP endpoints, on rfccheck.com or curpcheck.com, and every call draws from the same plan and balance.
Generating a key
Open API Keys in your dashboard and click Create key. Give the key a label so future-you can tell apart your CI key from your production key.
Keys are shown only once at creation time. Copy yours into a secret manager (1Password, AWS Secrets Manager, Doppler, .env, your CI provider's secrets) before navigating away. If you lose a key, delete it and create a new one. There is no way to recover it.
Using a key
Pass the key in the x-api-key header on every request:
curl -X POST https://inecheck.com/v1/ine/verify \
-H "x-api-key: rfc_your_api_key" \
-H "Content-Type: application/json" \
-d '{"cic": "123456789", "id_ciudadano": "987654321"}'
await fetch("https://inecheck.com/v1/ine/verify", {
method: "POST",
headers: {
"x-api-key": process.env.INECHECK_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({ cic: "123456789", id_ciudadano: "987654321" }),
});
import os, requests
requests.post(
"https://inecheck.com/v1/ine/verify",
headers={"x-api-key": os.environ["INECHECK_API_KEY"]},
json={"cic": "123456789", "id_ciudadano": "987654321"},
)
Rotating keys
Rotate keys whenever a teammate leaves or a key may have been exposed. The recommended pattern: create the new key, deploy it to your secret store, switch traffic over, then delete the old key from the dashboard.
Organization keys
Keys created inside an organization (under /org/:slug/api-keys) bill against the organization's plan and balance, not the creator's personal account. Use organization keys whenever the cost should be attributed to a team rather than an individual.
Error responses
-
401 Unauthorized: the key is missing, malformed, or has been deleted. -
402 Payment Required: the key authenticated, but the owner has no remaining credits or prepaid balance. -
429 Too Many Requests: rate limit exceeded. Back off and retry.