# O.J. Agent Development Kit (ADK) > Offer small-business financing in your product without becoming a lender or a broker. - [Overview](https://developers.meet-oj.com/index.md): Offer small-business financing in your product without becoming a lender or a broker. - [Quickstart](https://developers.meet-oj.com/api-quickstart.md): Create a referral in the sandbox and follow it to funding. - [Core concepts](https://developers.meet-oj.com/how-it-works.md): The objects you work with. - [O.J. Embed](https://developers.meet-oj.com/embed.md): Drop-in financing screens for your web app, opened with a short-lived token. - [Webhooks and events](https://developers.meet-oj.com/webhooks.md): Receive signed events, stream them live, or poll. - [Agents](https://developers.meet-oj.com/agents.md): Connect an AI agent over MCP or A2A. - [Sandbox](https://developers.meet-oj.com/sandbox.md): Test every path with scripted businesses. - [Security](https://developers.meet-oj.com/security.md): How O.J. protects partner and borrower data. - [Standards](https://developers.meet-oj.com/standards.md): The open standards the API follows. - [Changelog](https://developers.meet-oj.com/changelog.md) - [List referrals](https://developers.meet-oj.com/api-reference/referrals/list-referrals.md): Returns your referrals, newest first, one page at a time. Filter by `status` to build a work queue (for example, everything in `needs_partner`), or by `external_id` to find the referral for one of your own customer records. To page, pass the last id you received as `starting_after`. - [Hand O.J. a business](https://developers.meet-oj.com/api-reference/referrals/hand-oj-a-business.md): Creates a referral for one business. Behind it, O.J. opens a deal and starts working. - [Retrieve a referral](https://developers.meet-oj.com/api-reference/referrals/retrieve-a-referral.md): Returns one referral with its current status, the one-line fit summary, how many document requests are open, which lenders it has been sent to, how many offers are available, and the payout state. This is the object to poll if you are not using webhooks. For the full gate-by-gate detail, call `/fit`… - [Retrieve the latest fit snapshot](https://developers.meet-oj.com/api-reference/fit/retrieve-the-latest-fit-snapshot.md): Returns the full detail behind the referral's one-line `fit` summary. Most integrations never need this; the summary on the referral is the same conclusion in one sentence. - [Screen a business from structured data without creating a referral](https://developers.meet-oj.com/api-reference/fit/screen-a-business-from-structured-data-without-creating-a-referral.md): Checks a business against every program's rules using numbers only, without creating a referral. This is how a processor or a bank screens a whole book of customers before approaching any of them. - [List what is still needed](https://developers.meet-oj.com/api-reference/documents/list-what-is-still-needed.md): Returns every document request on the referral, open and closed. Each one says what is needed, for which months, why, and whether O.J. is waiting on you (`requested_from: partner`) or on the borrower (`requested_from: borrower`). Requests you are responsible for are what put a referral into `needs_p… - [Upload a document on the borrower's behalf](https://developers.meet-oj.com/api-reference/documents/upload-a-document-on-the-borrowers-behalf.md): Uploads a document you already hold, such as bank statements from your own ledger or a confidential information memorandum from a data room. If the document has to come from the borrower, you do not need this endpoint: the referral's `next_action` gives you a hosted upload page to show them instead. - [List offers](https://developers.meet-oj.com/api-reference/offers/list-offers.md): Returns the offers on a referral. Real offers from lenders have `binding: true` and name the lender. For programs that publish sizing rules, O.J. can also compute indicative terms before any lender has replied; those have `binding: false` so they are never mistaken for a real offer. - [Record the borrower's acceptance of an offer](https://developers.meet-oj.com/api-reference/offers/record-the-borrowers-acceptance-of-an-offer.md): Records that the borrower accepted an offer. Only partners using `intent: work_this_deal`, who collected the borrower's acceptance themselves, call this. For `just_refer` referrals, the borrower accepts on an O.J.-hosted page and you do not need to do anything. - [Mint a hosted-session link](https://developers.meet-oj.com/api-reference/sessions/mint-a-hosted-session-link.md): Creates a session that unlocks one O.J. screen. Call it from your server, never from a browser. The response contains a `client_token` for the O.J. Embed library and a hosted `url` for partners that would rather redirect. Both expire after fifteen minutes. - [List events (webhook replay and polling)](https://developers.meet-oj.com/api-reference/events/list-events-webhook-replay-and-polling.md): Every event O.J. delivers by webhook is also kept here for 30 days, in the order it happened. Use it two ways. If your webhook endpoint was down, list events with `created_after` set to the last one you processed and catch up. If you would rather not run a webhook endpoint at all, poll this endpoint… - [Stream events as they happen](https://developers.meet-oj.com/api-reference/events/stream-events-as-they-happen.md): Opens a server-sent events stream of every event on your account, in the order they happen. The response is `text/event-stream`. Each event's `id` is the event id and its `data` is the same `Event` object a webhook would deliver. If the connection drops, reconnect with the `Last-Event-ID` header set… - [Stream one referral's events](https://developers.meet-oj.com/api-reference/events/stream-one-referrals-events.md): The same stream, limited to one referral. This is what the Embed status card and conversation component subscribe to, and what the A2A `tasks/{id}:subscribe` binding relays. The stream closes when the referral reaches `funded`, `declined` or `closed`. - [List payouts (your statement)](https://developers.meet-oj.com/api-reference/payouts/list-payouts-your-statement.md): Returns your payouts, newest first, one page at a time. Filter by `status` to see what is held or scheduled, by `paid_after` and `paid_before` to build a monthly statement, or by `referral_id` to find one deal's share. - [List webhook endpoints](https://developers.meet-oj.com/api-reference/webhooks/list-webhook-endpoints.md): Returns the endpoints you have registered. The signing secret is not included; it is shown only once, when the endpoint is created. - [Register a webhook endpoint](https://developers.meet-oj.com/api-reference/webhooks/register-a-webhook-endpoint.md): Registers a URL on your server that O.J. will send events to. The response includes the signing secret for this endpoint. It is shown once, so store it. Deliveries follow the Standard Webhooks specification, are retried with increasing delays for up to 72 hours if your server does not respond, and c… - [List a referral's webhooks](https://developers.meet-oj.com/api-reference/webhooks/list-a-referrals-webhooks.md) - [Register a webhook for one referral](https://developers.meet-oj.com/api-reference/webhooks/register-a-webhook-for-one-referral.md): Registers a URL that receives events for this referral only. Account-level endpoints receive everything. A per-referral webhook is for an agent or a serverless function that is working one deal and wants to be called back, with its own token, when that deal moves. - [Remove a referral webhook](https://developers.meet-oj.com/api-reference/webhooks/remove-a-referral-webhook.md) - [Retrieve the conversation](https://developers.meet-oj.com/api-reference/conversation/retrieve-the-conversation.md): Returns the referral's conversation with its most recent messages, oldest first. Use it to render a thread in your product, or to catch up after time away: the borrower may have answered O.J. by text on a channel you never see, and it is here. - [List messages](https://developers.meet-oj.com/api-reference/conversation/list-messages.md): Returns the referral's messages, oldest first, one page at a time. Filter by `author` or `channel`, or use `after` to fetch only what is new since a message you already have. - [Send a message into the conversation](https://developers.meet-oj.com/api-reference/conversation/send-a-message-into-the-conversation.md): Adds a message to the referral's conversation. There are two uses. - [List channel connectors](https://developers.meet-oj.com/api-reference/channels/list-channel-connectors.md): Returns the connectors you have registered. Credentials are never included. - [Register a channel connector](https://developers.meet-oj.com/api-reference/channels/register-a-channel-connector.md): Registers a channel you own so O.J. can reach your borrowers through it. Four types are supported. - [Remove a channel connector](https://developers.meet-oj.com/api-reference/channels/remove-a-channel-connector.md): Removes the connector and its stored credential. Messages already in flight are delivered. Nothing new is sent through it. - [Retrieve the partner policy](https://developers.meet-oj.com/api-reference/policy/retrieve-the-partner-policy.md): Returns the rules O.J. follows for your referrals. - [Replace the partner policy](https://developers.meet-oj.com/api-reference/policy/replace-the-partner-policy.md): Replaces the policy. Send the whole object. Fields you leave out return to their defaults. Changes apply to new actions immediately and to in-flight referrals at their next step. Changing `require_send_approval` never recalls a submission that has already gone to a lender. - [List submissions to your program](https://developers.meet-oj.com/api-reference/programs/list-submissions-to-your-program.md): For a bank running a program. Returns the referrals O.J. has submitted to your program, newest first. Filter by `status` to build your reviewer's queue: `awaiting_review` is the work list. Each submission links to the package (documents, calculations, evidence receipts) and to a hosted review page y… - [Retrieve a submission and its package](https://developers.meet-oj.com/api-reference/programs/retrieve-a-submission-and-its-package.md) - [Record your credit decision](https://developers.meet-oj.com/api-reference/programs/record-your-credit-decision.md): Records the outcome of your review. An `offer` creates an Offer on the referral, named for your bank, and the borrower is asked to accept it, on a hosted page or inside the partner's product. A `decline` records the reasons against the gates they relate to, so the partner and O.J. can see why. O.J.… - [Report that the loan funded](https://developers.meet-oj.com/api-reference/programs/report-that-the-loan-funded.md): Tells O.J. that the loan was booked and funded in your system. This moves the referral to `funded` and starts the partner's payout. It is the only thing O.J. needs from your loan system. Send it from your loan system, or record it on the hosted review page. - [Oj accepted the referral and opened a deal](https://developers.meet-oj.com/api-reference/oj-accepted-the-referral-and-opened-a-deal.md) - [Fit changed new data new documents or a playbook version](https://developers.meet-oj.com/api-reference/fit-changed-new-data-new-documents-or-a-playbook-version.md) - [Someone at the partner has to act; `datanext action` says what and links to the page](https://developers.meet-oj.com/api-reference/someone-at-the-partner-has-to-act;-`datanext_action`-says-what-and-links-to-the-page.md) - [The borrower has to act; oj has sent them the page also in `datanext action`](https://developers.meet-oj.com/api-reference/the-borrower-has-to-act;-oj-has-sent-them-the-page-also-in-`datanext_action`.md) - [A document request was opened](https://developers.meet-oj.com/api-reference/a-document-request-was-opened.md) - [A document request was satisfied](https://developers.meet-oj.com/api-reference/a-document-request-was-satisfied.md) - [Oj submitted the file to lenders after partner approval if the partner requires it](https://developers.meet-oj.com/api-reference/oj-submitted-the-file-to-lenders-after-partner-approval-if-the-partner-requires-it.md) - [A lender returned an offer](https://developers.meet-oj.com/api-reference/a-lender-returned-an-offer.md) - [The borrower accepted an offer](https://developers.meet-oj.com/api-reference/the-borrower-accepted-an-offer.md) - [Money reached the business](https://developers.meet-oj.com/api-reference/money-reached-the-business.md) - [No program fits or every lender passed gate reasons in data](https://developers.meet-oj.com/api-reference/no-program-fits-or-every-lender-passed-gate-reasons-in-data.md) - [Closed without funding reason in data](https://developers.meet-oj.com/api-reference/closed-without-funding-reason-in-data.md) - [Oj sent the borrower or the partner a message `data` is the message including its channel](https://developers.meet-oj.com/api-reference/oj-sent-the-borrower-or-the-partner-a-message-`data`-is-the-message-including-its-channel.md) - [The borrower or the partner said something to oj on any channel `data` is the message](https://developers.meet-oj.com/api-reference/the-borrower-or-the-partner-said-something-to-oj-on-any-channel-`data`-is-the-message.md) - [A next action is overdue and oj has no channel of its own to nudge the person; `datanext action` says what to nudge about](https://developers.meet-oj.com/api-reference/a-next-action-is-overdue-and-oj-has-no-channel-of-its-own-to-nudge-the-person;-`datanext_action`-says-what-to-nudge-about.md) - [For banks running a program a package is ready for your reviewer `data` is the submission](https://developers.meet-oj.com/api-reference/for-banks-running-a-program-a-package-is-ready-for-your-reviewer-`data`-is-the-submission.md) - [A decision was recorded on a submission `data` is the submission](https://developers.meet-oj.com/api-reference/a-decision-was-recorded-on-a-submission-`data`-is-the-submission.md) - [The partners payout moved state](https://developers.meet-oj.com/api-reference/the-partners-payout-moved-state.md) ## OpenAPI Specs - [openapi](/api-reference/openapi.yaml)