canonical: https://jentic.com/apis/getsmileapi/getsmileapi-getsmileapi-main

# Getsmileapi Smile API

This is the trimmed, developer-docs-aligned cut of the Smile API surface, focused on the core employment and income verification primitives an integrator typically needs. It exposes 30 endpoints covering users, providers, accounts, employments, identities, incomes, transactions, documents, contributions, liabilities, and webhooks. It is the right starting point for fintech, lending, and HR-tech teams that want a leaner integration surface than the full v1.14 spec while still receiving normalised, user-permissioned payroll data.

## For AI agents

Verify income, retrieve employment and identity records, and read transactions and liabilities through user-permissioned account linking under HTTP basic auth.

## Scope

Does not handle KYC document checks, credit-bureau lookups, or payment disbursement - use for user-permissioned employment and income data retrieval only.

## Capabilities

- Create users and drive the Smile Link account-linking flow via session payloads
- Fetch normalised employment and identity records on a linked account
- Retrieve income, transactions, contributions, and liabilities on a per-user basis
- List and inspect supported data providers for filter UIs
- Trigger an account export and disable monitoring when a user closes their account
- Subscribe to webhooks for linkage and refresh lifecycle events

## Use cases

### Lender income verification

Digital lenders ask the applicant to link their payroll provider through Smile Link, then pull income and employment records to underwrite the loan. This trimmed surface gives the underwriting service exactly the endpoints it needs without the full webhooks-and-consent administrative footprint.

Example prompt: Create user, request session payload, then once linked fetch the last 6 months of incomes for risk scoring

### Liability snapshot for credit decisioning

Credit teams pull a borrower's liabilities - contributions, recurring deductions, and outstanding obligations - alongside income to compute affordability. The /liabilities and /contributions endpoints expose this in normalised form across providers, removing the need to parse provider-specific schemas.

Example prompt: List liabilities and contributions for user usr_123 and compute monthly committed outflows

### Document retrieval for compliance

Onboarding flows need source documents like payslips for KYC and audit trails. The /documents endpoint returns paged document records linked to a user, and the per-document GET retrieves metadata and download references for downstream archival.

Example prompt: List documents for user usr_123, filter to payslips from the last 3 months, and stage them in compliance storage

### AI agent for end-user data download

An AI agent connected through Jentic accepts a user's request to export their data, calls the export endpoint on each linked account, and returns the resulting URLs. Jentic injects the basic-auth credential so the agent never holds the raw secret.

Example prompt: For user usr_123, list accounts and call POST `/accounts/{id}/export` on each, returning the download URLs

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | `/users` | Create a Smile user |
| GET | `/users/{id}/payload` | Get session payload for Smile Link |
| GET | `/providers` | List supported data providers |
| GET | `/incomes` | List income records |
| GET | `/employments` | List employment records |
| GET | `/transactions` | List transaction records |
| POST | `/accounts/{id}/export` | Trigger account data export |

## Key resources

- **Users** — End users who authorise account linking
- **Providers** — Supported payroll and employment data sources
- **Accounts** — Per-user linked accounts with payload, export, and monitor controls
- **Employments and identities** — Normalised employment status and identity records
- **Incomes and transactions** — Earnings and granular transactions across linked accounts
- **Documents, contributions, liabilities** — Source documents and additional financial records
- **Webhooks** — Event subscriptions for linkage lifecycle

## Why Jentic

- **Setup:** Wiring the Smile API by hand means encoding your client id and secret into a basic-auth header, pointing at the open smileapi.io host, and managing user-permissioned income and employment linking yourself. Through Jentic you install once, import the Smile API from the API Directory, store the client id and secret once, and your agent calls it.
- **Permission scoping:** Smile puts the user and account id in the URL path (`/users/{id}/payload`, `/accounts/{id}/export`), so a rule can pin your agent to one user's linked records: it can read that payload and its income, employment, and transaction data and nothing else. You choose the operations it may call, so account exports are not included unless you add them.
- **Credential handling:** Your Smile client id and secret are stored once, encrypted, by your own Jentic One instance and injected at execution time. They never enter the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'verify a user's income' or 'list employment records', and Jentic returns the matching Smile operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Plaid API** — Bank-account aggregation widely used for income and balance verification in North America and Europe
- **Smile API (full v1.14 surface)** — The full 103-endpoint surface including consent templates, invites, tasks, and admin endpoints
- **Onfido API** — Identity verification via document and biometric checks alongside Smile's income data

## FAQ

### What authentication does the Smile API use?

Smile uses HTTP basic authentication with your client id as the username and client secret as the password. Through Jentic the credentials are vaulted and the basic-auth header is constructed per request so the raw secret never enters the prompt.

### Can I fetch a user's transactions through the API?

Yes. GET /transactions returns paged transaction records for a user across their linked accounts, and GET `/transactions/{id}` retrieves a single record. The same listing pattern applies to /incomes, /employments, /identities, /documents, /contributions, and /liabilities.

### What are the rate limits for the Smile API?

The OpenAPI spec does not encode explicit rate limits. Practical guidance is to subscribe to webhooks for change-driven flows rather than polling /accounts or /incomes in tight loops, and to back off exponentially on any 429 response.

### How do I trigger an account data export through Jentic?

Search Jentic for 'export smile account', load the POST `/accounts/{id}/export` schema, and execute with the account id. Jentic injects the basic-auth header automatically and returns the export URL.

### What is the difference between this surface and the v1.14 surface at sandbox.smileapi.io?

This 30-endpoint surface is the developer-docs-aligned cut focused on retrieval and core lifecycle. The 103-endpoint v1.14 surface adds consent-template management, invites, tasks, and admin-tier endpoints - useful when you operate the platform end-to-end rather than only consuming verification data.

### Is the Smile API free?

Smile offers a sandbox environment for development; production access is metered and requires a commercial agreement. Check getsmileapi.com for current tiers and reach the team via the contact details listed in the API documentation.

### Can I limit what my agent is allowed to do with the Smile API?

Yes. Because you run Jentic One yourself, your own rules decide which Smile operations and credentials the agent may use, and Smile puts the user and account id in the URL path (`/users/{id}/payload`, `/accounts/{id}/export`) so a rule can pin the agent to a single user's linked records. Scoped that way, the agent can read that user's payload, income, employment, and transaction data and nothing else. You also choose the operations it may call, so account exports via POST `/accounts/{id}/export` stay off the list unless you add them.
