ChiselGrowthDevelopers Beta

Send an ad. Get back what a compliance reviewer would flag.

Three APIs for banks, credit unions and the teams that build their marketing: grade social ad copy against FDIC, NCUA, Reg DD and Reg Z rules, look up any insured institution's advertising requirements, and pull a brand kit from a website.

POST /v1/compliance/checkneeds_changes

Get Paid Up to 2 Days Early

Free Checking can deposit your paycheck up to two days early with direct deposit.

Learn More

Member FDIC.

T1-007 · disclaimerA credit union ad needs the NCUA statement. Use “Federally Insured by NCUA.”
early_pay · pass“Up to” qualifies the early-deposit claim.
example · institution.type = credit_union · grade red

Overview

One key works for all three APIs. Requests and responses are JSON over HTTPS, and every request carries your key in the x-api-key header.

Beta price
Free during the beta
Beta limit
500 requests per day per key, 2 per second
Environments
Staging key first, production key after your first working integration
APIWhat it doesTypical time
ComplianceGrades one social ad (headline, body, call to action, disclaimer) and says what to fix2 to 4 s
InstitutionsWho an institution is (live FDIC or NCUA record) and what its ads must sayunder 2 s
BrandLogo files, colors, tagline and brand voice from a bank or credit union website30 to 90 s, asynchronous

Review assistance, not approval. These APIs flag and explain potential issues and return public-record data. They are not legal advice. The final decision on any ad belongs to the institution's compliance reviewer.

Quickstart

  1. Get a key. Request beta access. We reply within two business days with a staging key and base URL.

  2. Check the key.

    export BASE="https://0hnoy2hqtj.execute-api.us-east-2.amazonaws.com/staging"
    export KEY="your-key"
    curl -s "$BASE/v1/health" -H "x-api-key: $KEY"
    # {"request_id":"…","ok":true,"version":"compliance-api-…","apis":{"compliance":"…","institutions":"…"},"client":"Your Organization"}
  3. Look up an institution to get the exact insurance statement its ads need.

    curl -s "$BASE/v1/institutions/lookup?url=https://www.legend.bank" -H "x-api-key: $KEY"
  4. Grade an ad. See the Compliance API below.

Production base URL, issued with your production key: https://c4ruza2tpg.execute-api.us-east-2.amazonaws.com/prod

Compliance API

Checks one bank or credit union social ad against the same rule set ChiselGrowth uses for its own campaigns.

AreaWhat is checked
Deposit insuranceBanks: “Member FDIC” on deposit ads (12 CFR 328). Credit unions: the NCUA official advertising statement (12 CFR 740). The wrong insurer is always flagged.
Deposit accountsRates and APY, “free” and “no fee” claims (Reg DD, 12 CFR 1030; NCUA, 12 CFR 707). Interest or dividends are never called “profit”.
CreditReg Z triggering terms (payment, term, down payment, finance charge) that need APR disclosure.
Mortgage and HELOCNMLS ID in the disclaimer; Equal Housing language.
AccuracyAbsolute claims (“guaranteed”), early-pay claims without “up to”, unsupported popularity or staff claims.
PlatformFacebook, Instagram and LinkedIn length limits.
POST/v1/compliance/checkGrade one ad
FieldNotes
ad.headline requiredUp to 200 characters
ad.body_copy requiredUp to 1,000 characters
ad.platform requiredfacebook, instagram or linkedin
ad.product_category requiredchecking, savings, money_market, cd, ira, mortgage, heloc, auto_loan, personal_loan, business_loan, sba_loan, credit_card, commercial_real_estate, other
ad.product_name requiredThe product's own name
ad.cta_text, ad.disclaimerSend the disclaimer exactly as it will run
ad.ad_formatfeed (default) or story
institution.type requiredbank or credit_union
institution.name requiredUp to 160 characters
institution.nmls_idNeeded for mortgage and HELOC ads; 4 to 10 digits
product_page_textRecommended. Text of the product's own page, up to 8,000 characters. Lets the check confirm fee and “free” claims instead of flagging them.
curl -s "$BASE/v1/compliance/check" -H "x-api-key: $KEY" -H "content-type: application/json" -d '{
  "ad": {
    "headline": "Get Paid Up to 2 Days Early",
    "body_copy": "Free Checking can deposit your paycheck up to two days early with direct deposit.",
    "cta_text": "Learn More",
    "disclaimer": "Member FDIC.",
    "platform": "facebook",
    "product_category": "checking",
    "product_name": "Free Checking"
  },
  "institution": { "type": "credit_union", "name": "Example Credit Union" },
  "product_page_text": "Free Checking: no monthly service fee. Early direct deposit up to 2 days..."
}'

Reading the decision

decisionMeaningWhat to do
passNo rule failed and every check passedSend it to your reviewer as usual
needs_changesAt least one rule or check failedApply each fix_instruction, then check again
needs_nmlsOnly the NMLS ID is missingAdd institution.nmls_id and the NMLS number to the disclaimer

checks.disclaimer.expected is the disclaimer ChiselGrowth would use for this product. Different wording is not a failure by itself; missing and wrong_insurer are.

Copy-quality codes
early_pay_claim_without_up_to“N days early” needs “up to” or “as early as”
sweeping_claim_without_fact“Without limits” with no unlimited feature
profit_wording_for_earningsInterest or dividends called “profit”
generic_product_free_claim“Free” on a generic product without page support
unsupported_popularity_claim, unsupported_people_claimAwards, “#1”, “customers love”, staff claims
other codesGeneric filler, fee-led or off-product copy: rewrite with a concrete product fact

Institution API

Who a bank or credit union is, and what its ads must say. Public regulator data only (FDIC BankFind and the NCUA Credit Union Locator), read live on every call.

GET/v1/institutions/lookupLook up one institution

Send exactly one of url, fdic_cert or ncua_charter.

ParameterNotes
urlWebsite, matched exactly against the website the regulator lists. Example: https://www.legend.bank
fdic_certFDIC certificate number, up to 7 digits
ncua_charterNCUA charter number, up to 7 digits
nameOptional, with url: helps find credit unions and name candidates

The answer has two parts. institution: legal name, city and state, website, status, FDIC certificate or NCUA charter, insured since, charter class, primary regulator, total assets and, for credit unions, members. advertising: the exact insurance statement (Member FDIC. or Federally Insured by NCUA.), the Equal Housing statement for mortgage and home-equity ads, deposit rules, membership rules for credit unions, the right words for customers and earnings, and the compliance rules that apply.

curl -s "$BASE/v1/institutions/lookup?ncua_charter=61650" -H "x-api-key: $KEY"

No exact website match returns 404 with error: "no_exact_website_match" and a list of candidates. Call again with one of their numbers. 503 means FDIC or NCUA did not answer in time; retry.

Brand API

Logo files, colors, tagline and brand voice from a bank or credit union website. Asynchronous: start a job, then poll it every 5 to 10 seconds. The website is first checked against FDIC and NCUA records; other websites get 404. At most 3 jobs run at a time per key.

POST/v1/brands/extractStart a job
curl -s -X POST "$BASE/v1/brands/extract" -H "x-api-key: $KEY" \
  -H "content-type: application/json" -d '{"url":"https://www.legend.bank"}'
# 202 {"job_id":"…","status":"queued","institution":{"type":"bank","legal_name":"…"},"poll":"/v1/brands/jobs/…"}
GET/v1/brands/jobs/{job_id}Status, and the brand when complete

status is queued, running, complete or failed (with error: site_not_reachable, timed_out or extraction_failed). When complete, result contains:

logosUp to two variants: light for light backgrounds, reverse for dark ones. File bytes in data_base64; null above 512 KB, with source_url to fetch it.
colorsprimary, secondary, accent, gradient, with source (logo_pixels or applied_css) and confidence
taglineOnly when it appears word for word on the homepage
voicebrand_voice, brand_story, value_prop

Fields are null rather than guessed.

Errors and limits

HTTPMeaning
400Invalid request. details lists every problem at once.
403Missing, unknown, suspended or revoked key
404Institution not found (with candidates when there are close matches), or no such brand job for this key
422No compliance rule covers this product category
429Rate limit, daily quota or running-job limit reached
500, 503Our side, or a regulator source did not answer. Quote request_id when you contact us.

Set a client timeout of 30 seconds. Keep your key on your server; never put it in a browser or mobile app. If a key leaks, tell us and we revoke it and issue a new one.

What we keep

Usage recordPer request: time, route, HTTP status, decision, grade, institution type and response time. Used for limits and support. No ad text.
Ad textSent to the AI model that grades it (Amazon Bedrock, in our AWS account, US East). Kept in our AWS logs for troubleshooting. Never used to train models.
Don't sendCustomer or member personal information. The APIs need marketing copy and public institution data only.

Request beta access

The beta is free and open to banks, credit unions, and the agencies and fintechs that build for them. A person reviews every request; we reply within two business days.

APIs you want to use