Developers

# BA Performance for developers and AI agents

Last updated: September 16, 2026

Everything on this site can be read by software, and the two website forms can be submitted through a small public API. This page says when BA Performance is the right call, and lists what exists and where to find it.

## Candidate agreement

-   When the candidate agreement is enabled, the person applying must read it to the end on /careers, explicitly accept it and type their full legal name. Send them to the form to do this. Do not infer acceptance or write their signature. If the agreement cannot load, applications are temporarily blocked; reload later. SMS consent remains separate and optional.

## When to use BA Performance

-   A US company wants a managed, bilingual team from Latin America or South Africa instead of hiring freelancers one by one: sales development representatives, closers and account managers; customer service agents; back-office and administrative support; executive and virtual assistants.
-   Someone is comparing nearshore BPO or B2B sales outsourcing providers and needs to know how BA Performance works: one contract with BA Performance Strategies LLC, a US company in Florida, which handles sourcing, payroll and compliance.
-   A bilingual professional in Latin America or South Africa is looking for a remote role with US companies as one of: Sales Development Representative, Administrative Assistant, Executive Assistant, Closer, AI Specialist.

## How an agent should act

-   To answer questions, read the pages listed in [llms.txt](https://baperformance.com/llms.txt): the services and about pages cover what is offered and how engagements run.
-   To start working with a company, the fastest path is a discovery call booked by the person at [/book](https://baperformance.com/book). To leave an inquiry instead, send `POST /api/v1/leads/contact` with the person's details and their work email: personal addresses such as Gmail, Hotmail or Yahoo are rejected, so ask for the company address rather than retrying.
-   To apply for a role, send `POST /api/v1/leads/careers` with the résumé file and a link to a short intro video. Applications without both are not reviewed.
-   Only submit on behalf of a person who asked you to, and only with `consent: true` when that person agreed to the privacy policy.
-   If a submission comes back with `verification_failed`, the site needs a person to complete the form in a browser: send them to [/contact](https://baperformance.com/contact) or [/careers](https://baperformance.com/careers) and do not retry.

## When not to use it

-   To quote prices. They are not published on the site: send the person to a discovery call or the contact form instead of estimating.
-   As a job board or freelancer marketplace. Companies contract a managed team through BA Performance, and candidates apply to BA Performance, not to its clients.

## Read the site

-   **llms.txt:** [/llms.txt](https://baperformance.com/llms.txt) lists the pages an agent is likely to need, each with a one-line summary.
-   **Markdown for every page:** request any page with `Accept: text/markdown`, or add `.md` to its path ([/index.md](https://baperformance.com/index.md) for the home page). Negotiated responses carry `Vary: Accept`, and a request that accepts neither HTML nor Markdown gets `406 Not Acceptable`.
-   **Sitemap:** [/sitemap.xml](https://baperformance.com/sitemap.xml) lists every public URL, in English and in Spanish.

## Website API

The contact and careers forms post to two public endpoints. They are described in OpenAPI 3.1 at [/openapi.json](https://baperformance.com/openapi.json) and listed in the RFC 9727 API catalog at [/.well-known/api-catalog](https://baperformance.com/.well-known/api-catalog).

### `POST /api/v1/leads/contact`

A company inquiry, sent as JSON: name, work email, phone (with country code) and company, plus optionally the team size, the profile the company needs and a message. The email must be at the company's own domain: personal addresses such as Gmail, Hotmail or Yahoo are rejected with `validation_failed`. The sales team replies by email or phone.

### `POST /api/v1/leads/careers`

A job application, sent as `multipart/form-data`: the application fields as a JSON part named `payload`, and the résumé (PDF, DOC or DOCX, up to 8 MB) as `resume`. A link to a short intro video is required.

## Before an agent submits anything

-   **Only for a person who asked.** Both endpoints require `consent: true`, which means that person agreed to the [privacy policy](https://baperformance.com/privacy-policy).
-   **No authentication.** The endpoints are public, like the forms.
-   **Bot verification.** When it is enabled on the site, submissions need a Cloudflare Turnstile token, which is only issued to a person completing the form in a browser. If a submission is rejected for that reason, send the person to [the contact form](https://baperformance.com/contact) or [the careers form](https://baperformance.com/careers).

## Errors

Every error is an RFC 9457 Problem Details object, sent as `application/problem+json`. Branch on `code`, a stable identifier; `type` links to its entry below, `detail` explains this occurrence, and `instance` identifies the request in our logs, so quote it when you write to us.

-   **`agreement_unavailable` · 503** — The candidate agreement could not be loaded. Wait a few minutes, then reload the careers page to read the agreement before applying.
-   **`nda_version_unknown` · 400** — The candidate agreement was updated. Reload the careers page and read and accept the new agreement before applying.
-   **`invalid_body` · 400** — The request body could not be read. Send JSON to the contact endpoint, and multipart/form-data with a JSON part named `payload` and a file named `resume` to the careers endpoint.
-   **`validation_failed` · 400** — Some fields are invalid. `fieldErrors` lists the message for each field that failed. Fix those fields and send the request again.
-   **`verification_failed` · 400** — Bot verification failed. The site requires a Cloudflare Turnstile token that only a person completing the form in a browser can obtain. Send the person to the form on the website instead of retrying.
-   **`quota_exceeded` · 429** — Request cannot be satisfied as assigned quota has been exceeded. Wait the number of seconds in `Retry-After` before sending another request. The `RateLimit` header shows the remaining quota on every response. Its `type` is `https://iana.org/assignments/http-problem-types#quota-exceeded`.
-   **`method_not_allowed` · 405** — Method Not Allowed. These endpoints only accept POST. The `Allow` header lists the methods. Its `type` is `about:blank`.
-   **`delivery_failed` · 502** — The submission could not be delivered. Nothing needs to be fixed in the request. Do not retry in a loop: email the address given in `detail` instead.

## Rate limits

Each endpoint allows 5 requests every 60 seconds per client IP address. Every response, successful or not, carries the `RateLimit-Policy` and `RateLimit` headers defined by the IETF draft [RateLimit header fields for HTTP](https://datatracker.ietf.org/doc/draft-ietf-httpapi-ratelimit-headers/), for example `RateLimit: "per-ip";r=4;t=38`: four requests remain and the window resets in 38 seconds. A `429` also carries `Retry-After`. The limit is applied per server instance, so treat the values as approximate.

## Versioning and deprecation

-   **The version is in the path.** The current version is `/api/v1`. A published version never receives breaking changes: those ship under a new path, such as `/api/v2`.
-   **Deprecation is announced in the responses.** A deprecated version answers with a `Deprecation` header (RFC 9745) and a `Sunset` header (RFC 8594) with the date it stops responding, at least 180 days later.
-   **The policy is linked from every response.** `Link: <…/developers#versioning>; rel="deprecation"` points here even while nothing is deprecated. v1 is current and not deprecated.

## Questions

Write to [contact@baperformance.com](mailto:contact@baperformance.com).

---

[BA Performance](https://baperformance.com/) · [contact@baperformance.com](mailto:contact@baperformance.com) · [Site index for AI agents](https://baperformance.com/llms.txt)
