# Make and Zapier

> Call FluentC from Make scenarios and Zapier Zaps with a plain HTTP step. Request settings, a real-time pattern, a batch pattern with polling, and tips for avoiding duplicate work.

Source: https://www.fluentc.ai/docs/integrations/make-zapier/

Make and Zapier don't need a dedicated app to use FluentC. Both can send an HTTP request, and that is all the [REST API](https://www.fluentc.ai/docs/api/translate.md) needs.

## The request

Every step uses the same settings:

| Setting | Value |
| --- | --- |
| Method | `POST` |
| URL | `https://api.fluentc.ai/ai_agent/translate` |
| Header `Authorization` | Your API key, exactly as the dashboard shows it. No `Bearer`. |
| Header `Content-Type` | `application/json` |
| Body | JSON, as below |

Body for real-time mode:

```json
{
  "input": "{{your text from the previous step}}",
  "input_format": "text",
  "target_language": "es",
  "mode": "real-time"
}
```

Map your own text into `input` with the tool's field picker. The `{{ }}` above stands for that mapping. The response has the translation in `translation`. See [Translate](https://www.fluentc.ai/docs/api/translate.md) for every field and [Authentication](https://www.fluentc.ai/docs/authentication.md) for the key.

> **Note:** Real-time mode needs the Real-time plan. On a Batch plan key use `"mode": "batch"` and the polling pattern below.

## Make

1. Add the **HTTP → Make a request** module.
2. Set **URL**, **Method** (`POST`) and the two **Headers** from the table.
3. Set **Body type** to **Raw**, **Content type** to **JSON (application/json)**, and paste the body into **Request content**.
4. Turn on **Parse response**. The fields `translation`, `status` and `source_language_detected` are then available to later modules.
5. If a request can fail, add an error handler route so one bad item doesn't stop the scenario.

## Zapier

1. Add an action: **Webhooks by Zapier → Custom Request**.
2. Set **Method** to `POST` and **URL** to the translate URL.
3. In **Data**, paste the JSON body and map your fields into it.
4. In **Headers**, add `Authorization` and `Content-Type` as pairs.
5. Later steps can use `translation` from the response.

## Example: translate form submissions

1. **Trigger:** a Google Form response is submitted.
2. **Request:** translate the answer into your team's language (real-time).
3. **Deliver:** add the translation to a Google Sheet row, or post it to Slack.

The same shape works for CRM records, support tickets and chat messages.

## Batch with polling

Use batch for large or scheduled work, or when your key is on the Batch plan. It takes two requests.

**1. Submit.** The same request with `"mode": "batch"`. The response is `{ "job_id": "..." }`.

**2. Wait, then fetch.** Add a delay (10 seconds is a good start), then send:

| Setting | Value |
| --- | --- |
| Method | `POST` |
| URL | `https://api.fluentc.ai/ai_agent/results` |
| Body | `{ "job_id": "<job_id from step 1>" }` |

The response `status` is `processing`, `complete` or `failed`. Branch on it with a filter or a router: if `complete`, use `translation`; if `processing`, wait and repeat; if `failed`, handle the error. Cap the repeats, because an unknown `job_id` also reports `processing`. See [Batch results](https://www.fluentc.ai/docs/api/batch-results.md).

> **Tip:** If you'd rather not build the polling loop, n8n does it for you. See the [n8n node](https://www.fluentc.ai/docs/integrations/n8n.md).

## Avoiding duplicate work

FluentC answers repeated text from [translation memory](https://www.fluentc.ai/docs/concepts.md#translation-memory), so sending the same string twice is cheap. Plan limits still count the calls: the Batch plan allows 20 calls per hour. Send several strings in one batch request instead of one request per string, where your content allows it.

## Troubleshooting

| Symptom | Cause |
| --- | --- |
| `401` | The key is missing or wrong, or has a `Bearer` prefix. |
| `422` with "not enabled for this site" | The language isn't enabled for your key. See [Languages](https://www.fluentc.ai/docs/api/languages.md). |
| `422` with "not supported for this agent" | Real-time mode on a Batch plan key. Use batch. |
| The body arrives as one string | The tool sent the JSON as text. Set the content type to JSON. |

More in [Errors](https://www.fluentc.ai/docs/api/errors.md).
