> ## Documentation Index
> Fetch the complete documentation index at: https://developer.9squid.com/llms.txt
> Use this file to discover all available pages before exploring further.

# FAQ

> Frequently asked questions about integrating with the 9Squid API.

## Authentication

### How do I get an API token?

Contact [support@9squid.com](mailto:support@9squid.com) with your organization name and intended use case. The team will provision your token and confirm your role (Originator or Investor).

### My token stopped working. What do I do?

Tokens can be revoked or expired. Contact [support@9squid.com](mailto:support@9squid.com) to have a new one issued. Include your organization name and the environment (dev, staging, or production).

### Can I use the same token across environments?

No. Each environment (Development, Staging, Production) has its own token. Contact support to request tokens per environment.

***

## Deals and Loan Tapes

### What file formats does the loan tape upload accept?

CSV (`.csv`) and Excel (`.xlsx`). Use the correct `Content-Type` header when uploading:

* CSV: `Content-Type: text/csv`
* XLSX: `Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`

### I'm getting a 409 — "A DRAFT deal already exists for this loan type." What do I do?

You already have an open draft for that loan type. Either:

1. Use `PATCH /originator/loans/:dealId` to regenerate the upload URL for the existing draft and continue with it, or
2. Delete the existing draft and initiate a new one.

### My upload URL expired before I could use it. What do I do?

Upload URLs are valid for 1 hour. Call `PATCH /originator/loans/:dealId` to regenerate a fresh URL. The deal remains in `DRAFT` status.

### How do I know when my deal has been approved?

Poll `GET /originator/loans/:dealId` and watch the `deal_status` field, or subscribe to the `loan.approved` webhook event to receive a real-time notification. See the [Webhooks](/workflows/webhooks) guide.

### What loan types are supported?

`Auto`, `Personal`, `Mortgage`, `Student`, `Business`, `Credit Card`.

***

## Selection Criteria

### What is a Selection Criteria run?

A Selection Criteria (SC) run validates your loan tape against the underwriting eligibility rules configured for your deal. It identifies which loans pass, which fail, and why. See the [Run Selection Criteria](/workflows/run-selection-criteria) guide.

### How long does an SC run take?

Typically a few seconds for small tapes, up to a few minutes for large ones. Subscribe to the `sc.completed` webhook event rather than polling to know when results are ready.

***

## Investors

### How do I browse available deals?

Use `GET /investor/deals` to list deals available in the marketplace. Filter by status, loan type, or tranche details. See the [Investor Deal Subscription](/workflows/investor-deal-subscription) guide.

### What is an IOI?

An Indication of Interest (IOI) is a non-binding expression of intent to invest in a deal. Submit one via `POST /investor/deals/:dealId/ioi` before committing to a full subscription.

***

## Webhooks

### Is my webhook endpoint required to respond within a specific time?

Yes. Your endpoint must return a `2xx` response within **10 seconds**. If it times out or returns a non-2xx, the delivery is marked `FAILED` and can be replayed manually. See [Webhooks](/workflows/webhooks).

### How do I verify a webhook is genuinely from 9Squid?

Every delivery includes an `X-9Squid-Signature` header. Verify it using the HMAC-SHA256 secret returned when you created the subscription. See the [Webhooks signature verification](/workflows/webhooks#verifying-webhook-signatures) section.

***

## Errors and Debugging

### I'm getting a 403 on an endpoint I think I should have access to.

Your token is scoped to a role. Originators cannot call Investor endpoints and vice versa. Check the [Role-Based Access](/getting-started#role-based-access) table. If the access should be valid, contact [support@9squid.com](mailto:support@9squid.com).

### I'm getting a 500 error. What do I do?

First check **[status.9squid.com](https://status.9squid.com)** for any ongoing incident. If the platform shows healthy, capture the full request (endpoint, headers, body — redact your token), the full response body, and the timestamp, then email [support@9squid.com](mailto:support@9squid.com).

### Where can I test without affecting production data?

Use the Development or Staging base URLs. Ensure your token is provisioned for the target environment.

| Environment | Base URL                                |
| ----------- | --------------------------------------- |
| Sandbox     | `https://sandbox.api.9squid.com/v1/api` |
| Production  | `https://api.9squid.com/v1/api`         |
