OpenAI API integration for web and mobile products

The OpenAI API gives your software access to OpenAI's current models for text, images, embeddings and speech. We build the product around those calls: tools the model can use, answers in a fixed data shape, search over your own content, safety checks, retries and the tests that tell you whether a prompt change made things better or worse.
OpenAI
  • Tool calling into your own systems and data
  • Structured outputs that match a JSON schema
  • Embeddings search, moderation and voice
  • Data controls, rate limits and evaluation handled

When OpenAI is the right choice

The OpenAI API suits products that call a model from their own back end:

  • You want one API for text, tool calling, embeddings, moderation and speech. The Responses API is OpenAI's recommended starting point for new projects.
  • The model has to act on your data, such as looking up an order. With tool calling, the model asks for a function, your code runs it and sends back the result.
  • Other code reads the model's answer. Structured Outputs makes the reply follow your JSON schema, not just produce valid JSON.
  • You want built-in tools such as web search and file search, which the Responses API offers and Chat Completions does not.

When OpenAI is not the right choice

Plan around these before you commit:

  • Your organization requires the model to run inside your own Azure tenant, network and identity setup. Azure OpenAI is built for that.
  • You need data kept in a particular region. OpenAI offers data residency per project in a limited set of regions, and regions other than the US need extra approval.
  • You need content kept out of abuse monitoring logs. Zero Data Retention exists, but it needs OpenAI's prior approval, and some endpoints are not eligible.
  • A wrong answer would cause real harm and no person reviews the output. OpenAI's safety guidance recommends human review wherever possible, especially in high-stakes uses.

What we build with the OpenAI API

Typical projects, described in general terms.

Tool calling

Assistants that look things up or take actions through functions you define, with strict schemas and your code doing the work.

Structured extraction

Fields pulled from emails, documents or listings into a fixed JSON schema your system can store and validate.

Classification

Products, tickets or messages sorted into your own categories, with a rules fallback when the model is unsure.

Search over your content

Embeddings that rank your documents or products by meaning, so answers can draw on your own material.

Chat assistants

Streaming chat back ends with conversation state, usage tracking and, where needed, routing across model providers.

Voice and transcription

Speech-to-text for recordings, text-to-speech for spoken replies and Realtime voice agents in the browser.

What the OpenAI API gives you

OpenAI recommends the Responses API for new projects. Chat Completions is still supported. With tool calling, the model returns a request to run one of your functions, and your code runs it and returns the result. Strict mode makes those calls follow the function's schema. Structured Outputs does the same for the model's reply, and a refusal comes back in its own field. Embeddings turn text into vectors for search, clustering, recommendations and classification. The moderation endpoint classifies text and images for harmful content. The audio endpoints transcribe recordings and turn text into speech, and the Realtime API runs speech-to-speech voice agents over WebRTC or WebSocket. The Batch API runs large jobs that can wait, within a 24-hour window, using limits separate from your normal ones.

What an OpenAI integration needs beyond the API

  • Keys stay on the server: API keys live in environment variables or a secret store, never in browser or app code. Browser voice sessions use short-lived client secrets that your server creates.
  • Separate projects: development and production run in separate projects, each with its own keys, rate limits and spend limits.
  • Rate limits: limits apply to requests and tokens per minute, per organization and project, and vary by model. We retry 429 and 503 errors with backoff, honor the Retry-After header and do not retry quota or billing errors.
  • Data controls: API data is not used for training by default. Abuse monitoring logs are kept for up to 30 days, and the Responses API stores state unless store is set to false. We set these to suit your data.
  • Safety: moderation checks, limits on input and output length, a safety identifier per user and a way for users to report bad answers, as OpenAI's safety guidance recommends.
  • Evaluation: a test set of real inputs with expected results, re-run whenever the prompt or model changes. OpenAI is retiring its own Evals platform, so we keep the test set in your codebase.
  • Disclosure: OpenAI's usage policies require telling listeners that a text-to-speech voice is AI-generated.

How we work

  1. Start with real examples: collect inputs and the answers you expect, so there is a test set before any prompt is written
  2. Build the smallest useful flow: one task, with tool calls and structured outputs, behind your own API
  3. Add the safety and cost controls: moderation, retries, rate-limit handling, data settings and per-user identifiers before real users arrive
  4. Hand over properly: prompts, schemas, the test set and the key and project setup documented, with notes on reading a failed request

Industries we have built for

The industries of our OpenAI projects. Each card opens the projects we show for it.

Articles

Guides from our team on the questions buyers ask about this service.

All articles

Related technologies

Technologies that appear alongside OpenAI in our case studies. Select one to see our work with it.

Frequently asked questions

Does OpenAI train its models on our API data?

Not by default. OpenAI says data sent to the API is not used to train or improve its models unless you opt in. Abuse monitoring logs are kept for up to 30 days unless the law requires longer.

Can the model call our own systems?

Yes, through tool calling. You describe your functions with a JSON schema, the model asks for one, your code runs it and sends back the result, and the model then writes its answer. The model never runs your code itself.

How do we get answers our code can rely on?

Use Structured Outputs, which makes the reply follow your JSON schema. Your code still has to handle refusals and replies cut short by a token limit, because those may not match the schema.

What happens when we hit a rate limit?

The API returns a 429 error. We wait for the time in the Retry-After header, or back off with a random delay, cap the number of attempts and grow traffic gradually. Failed requests still count toward the per-minute limit.

How can we work together?

There are three ways, on the same terms:

  • Dedicated team, best for ongoing work: interview the developers, then they work on your project full or part time.
  • Fixed scope, best when requirements are clear: we agree the scope and the price up front, and deliver against it.
  • Time and material, best when the scope will change: you pay for the time used and can change priorities as the work goes on.

Whichever you choose, we sign an NDA before work starts, you own the code we write, and every change is reviewed in your repository.

Can I interview the developers before we start?

Yes. For a dedicated team you meet the developers in an online call and interview them before they join your project.

Adding OpenAI to your product?

Tell us the task, the data it needs and who will read the answers. We will say what to test first and what the integration involves.

Tell us about your project

Tell us what you need built, fixed or improved. We come back with questions, a suggested approach and an estimate.