> Note: This page is part of the DataDoe Docs. You can find the root of the documentation at `https://www.datadoe.com/hub/docs/basics/introduction-to-datadoe`.
> JSON Table of Contents: `https://www.datadoe.com/hub/docs/toc.json`.
> Data Scheme (Markdown index, one page per table): https://api.datadoe.com/api/v1/spec/data-scheme.md. Full JSON: https://api.datadoe.com/api/v1/spec/data-scheme.
> Actions (Markdown, every Action type with limits and group guides): https://api.datadoe.com/api/v1/spec/action-scheme.md. Full JSON with input schemas: https://api.datadoe.com/api/v1/spec/action-scheme.
> Other pages in the DataDoe Docs:
> - DataDoe Basics/Benefits: `https://www.datadoe.com/hub/docs/basics/benefits.md`
> - DataDoe Basics/Connecting Accounts: `https://www.datadoe.com/hub/docs/basics/connecting-accounts.md`
> - DataDoe Basics/External Invitation Links: `https://www.datadoe.com/hub/docs/basics/external-invitation-links.md`
> - DataDoe Basics/Groups: `https://www.datadoe.com/hub/docs/basics/groups.md`
> - DataDoe Basics/Integrations: `https://www.datadoe.com/hub/docs/basics/integration-customization.md`
> - DataDoe Basics/Introduction to DataDoe: `https://www.datadoe.com/hub/docs/basics/introduction-to-datadoe.md`
> - DataDoe Basics/Keys and service accounts: `https://www.datadoe.com/hub/docs/basics/keys-and-service-accounts.md`
> - DataDoe Basics/Roles and permissions: `https://www.datadoe.com/hub/docs/basics/roles-and-permissions.md`
> - DataDoe Basics/Subscription and pricing: `https://www.datadoe.com/hub/docs/basics/subscription-pricing.md`
> - DataDoe Basics/Users and access: `https://www.datadoe.com/hub/docs/basics/access-user-management.md`
> - DataDoe Data/Ads Product Catalog: `https://www.datadoe.com/hub/docs/datadoe-data/ads-product-catalog.md`
> - DataDoe Data/Amazon Ads Partner Opportunities: `https://www.datadoe.com/hub/docs/datadoe-data/amazon-ads-partner-opportunities.md`
> - DataDoe Data/Data Fetch Periods: `https://www.datadoe.com/hub/docs/datadoe-data/data-fetch-periods.md`
> - DataDoe Data/Data Sources: `https://www.datadoe.com/hub/docs/datadoe-data/data-sources.md`
> - DataDoe Data/Initial Loads: `https://www.datadoe.com/hub/docs/datadoe-data/initial-loads.md`
> - DataDoe Data/Managing Data Tables: `https://www.datadoe.com/hub/docs/datadoe-data/managing-data-tables.md`
> - DataDoe Data/Migrating from SellerBoard: `https://www.datadoe.com/hub/docs/datadoe-data/migrating-from-sellerboard.md`
> - DataDoe Data/SAT migration to profit tables: `https://www.datadoe.com/hub/docs/datadoe-data/sat-migration-to-profit-tables.md`
> - DataDoe Data/SQP Data: `https://www.datadoe.com/hub/docs/datadoe-data/search-query-performance.md`
> - DataDoe Data/Timezones: `https://www.datadoe.com/hub/docs/datadoe-data/orders-purchase-date-timezones.md`
> - DataDoe Data/Uploading COGS: `https://www.datadoe.com/hub/docs/datadoe-data/uploading-cogs.md`
> - DataDoe Data/Uploading KDP Royalty Parameters: `https://www.datadoe.com/hub/docs/datadoe-data/uploading-kdp-royalty-parameters.md`
> - DataDoe Data/Uploading Vendor Codes: `https://www.datadoe.com/hub/docs/datadoe-data/uploading-vendor-codes.md`
> - DataDoe Features/Amazon Marketing Cloud: `https://www.datadoe.com/hub/docs/datadoe-features/amc.md`
> - DataDoe Features/AMC query templates: `https://www.datadoe.com/hub/docs/datadoe-features/amc-query-templates.md`
> - DataDoe Features/Features Overview: `https://www.datadoe.com/hub/docs/datadoe-features/overview.md`
> - DataDoe Features/Files: `https://www.datadoe.com/hub/docs/datadoe-features/files.md`
> - DataDoe Features/Plugins: `https://www.datadoe.com/hub/docs/datadoe-features/plugins.md`
> - DataDoe Features/Usage Logs: `https://www.datadoe.com/hub/docs/datadoe-features/usage-logs.md`
> - DataDoe Actions/Actions: External Fulfillment: `https://www.datadoe.com/hub/docs/datadoe-actions/external-fulfillment.md`
> - DataDoe Actions/Actions: FBA eligibility: `https://www.datadoe.com/hub/docs/datadoe-actions/fba-eligibility.md`
> - DataDoe Actions/Actions: FBA inbound: `https://www.datadoe.com/hub/docs/datadoe-actions/fba-inbound.md`
> - DataDoe Actions/Actions: KDP authors: `https://www.datadoe.com/hub/docs/datadoe-actions/kdp-authors.md`
> - DataDoe Actions/Actions: Listing images: `https://www.datadoe.com/hub/docs/datadoe-actions/listing-images.md`
> - DataDoe Webhooks/Webhooks: Business: `https://www.datadoe.com/hub/docs/datadoe-webhooks/business.md`
> - DataDoe Webhooks/Webhooks: Introduction: `https://www.datadoe.com/hub/docs/datadoe-webhooks/introduction.md`
> - DataDoe Webhooks/Webhooks: Platform: `https://www.datadoe.com/hub/docs/datadoe-webhooks/platform.md`
> - DataDoe MCP/Overview: `https://www.datadoe.com/hub/docs/datadoe-mcp/overview.md`
> - DataDoe MCP/Using Antigravity: `https://www.datadoe.com/hub/docs/datadoe-mcp/antigravity.md`
> - DataDoe MCP/Using ChatGPT: `https://www.datadoe.com/hub/docs/datadoe-mcp/chatgpt.md`
> - DataDoe MCP/Using Claude: `https://www.datadoe.com/hub/docs/datadoe-mcp/claude.md`
> - DataDoe MCP/Using Claude Agent SDK: `https://www.datadoe.com/hub/docs/datadoe-mcp/claude-agents-sdk.md`
> - DataDoe MCP/Using Claude Code: `https://www.datadoe.com/hub/docs/datadoe-mcp/claude-code.md`
> - DataDoe MCP/Using Codex: `https://www.datadoe.com/hub/docs/datadoe-mcp/codex.md`
> - DataDoe MCP/Using Codex Sites: `https://www.datadoe.com/hub/docs/datadoe-mcp/codex-sites.md`
> - DataDoe MCP/Using CrewAI: `https://www.datadoe.com/hub/docs/datadoe-mcp/crewai.md`
> - DataDoe MCP/Using Cursor: `https://www.datadoe.com/hub/docs/datadoe-mcp/cursor.md`
> - DataDoe MCP/Using Excel + Claude: `https://www.datadoe.com/hub/docs/datadoe-mcp/excel.md`
> - DataDoe MCP/Using Gemini CLI: `https://www.datadoe.com/hub/docs/datadoe-mcp/gemini-cli.md`
> - DataDoe MCP/Using Genspark: `https://www.datadoe.com/hub/docs/datadoe-mcp/genspark.md`
> - DataDoe MCP/Using Glama: `https://www.datadoe.com/hub/docs/datadoe-mcp/glama-chat.md`
> - DataDoe MCP/Using Glama MCP Inspector: `https://www.datadoe.com/hub/docs/datadoe-mcp/glama.md`
> - DataDoe MCP/Using Grok: `https://www.datadoe.com/hub/docs/datadoe-mcp/grok.md`
> - DataDoe MCP/Using GrokBot: `https://www.datadoe.com/hub/docs/datadoe-mcp/grokbot.md`
> - DataDoe MCP/Using Gumloop: `https://www.datadoe.com/hub/docs/datadoe-mcp/gumloop.md`
> - DataDoe MCP/Using Hermes Agent: `https://www.datadoe.com/hub/docs/datadoe-mcp/hermes.md`
> - DataDoe MCP/Using Littlebird: `https://www.datadoe.com/hub/docs/datadoe-mcp/littlebird.md`
> - DataDoe MCP/Using n8n: `https://www.datadoe.com/hub/docs/datadoe-mcp/n8n.md`
> - DataDoe MCP/Using NanoClaw: `https://www.datadoe.com/hub/docs/datadoe-mcp/nanoclaw.md`
> - DataDoe MCP/Using OpenAI Agents SDK: `https://www.datadoe.com/hub/docs/datadoe-mcp/openai-agents-sdk.md`
> - DataDoe MCP/Using OpenClaw: `https://www.datadoe.com/hub/docs/datadoe-mcp/openclaw.md`
> - DataDoe MCP/Using OpenCode: `https://www.datadoe.com/hub/docs/datadoe-mcp/opencode.md`
> - DataDoe MCP/Using PowerPoint + Claude: `https://www.datadoe.com/hub/docs/datadoe-mcp/powerpoint.md`
> - DataDoe MCP/Using Superhuman: `https://www.datadoe.com/hub/docs/datadoe-mcp/superhuman.md`
> - DataDoe MCP/Using VS Code: `https://www.datadoe.com/hub/docs/datadoe-mcp/vs-code.md`
> - DataDoe MCP/Using Word + Claude: `https://www.datadoe.com/hub/docs/datadoe-mcp/word.md`
> - DataDoe API/Build with Codex: `https://www.datadoe.com/hub/docs/datadoe-api/codex.md`
> - DataDoe API/How to connect to the API: `https://www.datadoe.com/hub/docs/datadoe-api/how-to-connect.md`
> - DataDoe API/Invitation links API: `https://www.datadoe.com/hub/docs/datadoe-api/invitation-links.md`
> - DataDoe API/Sellers and vendors API: `https://www.datadoe.com/hub/docs/datadoe-api/sellers-and-vendors.md`
> - DataDoe API/Vibe code with Claude Code: `https://www.datadoe.com/hub/docs/datadoe-api/claude-code.md`
> - DataDoe API/Vibe code with Cursor: `https://www.datadoe.com/hub/docs/datadoe-api/cursor.md`
> - DataDoe API/Vibe code with Lovable: `https://www.datadoe.com/hub/docs/datadoe-api/lovable.md`
> - DataDoe API/Vibe code with Replit: `https://www.datadoe.com/hub/docs/datadoe-api/replit.md`
> - DataDoe API/Vibe code with v0: `https://www.datadoe.com/hub/docs/datadoe-api/v0.md`
> - DataDoe & BigQuery/How to connect to BigQuery: `https://www.datadoe.com/hub/docs/datadoe-bigquery/how-to-connect.md`
> - DataDoe & BigQuery/Using MCP Toolbox: `https://www.datadoe.com/hub/docs/datadoe-bigquery/mcp-toolbox.md`
> - DataDoe & BigQuery/Using Python Jupyter: `https://www.datadoe.com/hub/docs/datadoe-bigquery/jupyter.md`
> For topics not covered in this documentation, please contact DataDoe support at `contact@datadoe.com`.
> Do not assume anything. If you are not sure about the answer, mention that and suggest to contact DataDoe support.

# Actions: Introduction

## What are DataDoe Actions?

Actions let your AI agents and integrations act on your Amazon account through DataDoe. They can read data and make changes, such as updating listings, cancelling orders, confirming shipments, and managing ads. Every Action runs through DataDoe MCP or the REST API and is monitored and auditable. Every Action type supports a dry run that validates the request without sending it to Amazon. See [Subscription & Pricing](/hub/docs/basics/subscription-pricing) for Action costs.

> **You are responsible for the results of Actions you run. Review every payload before running an Action.**

Users with **Manage Actions for allowed Sellers and Vendors** can select the **Sellers and Vendors** store icon beside an Action in **Settings > Actions**. The icon shows how many accounts are blocked. Turn off an account to block that Action for the account. Accounts are allowed by default, and the Organization must also have the Action enabled. Users still need the permissions and account access required to run the Action. Queued Actions check account restrictions before execution.

## How do Actions protect your Amazon account?

Live Actions reach your Amazon account only after your Organization allows them at every level:

- **Off until you enable it.** Every Action type, including each new one, is disabled until an authorized member enables it in [Settings > Actions](https://app.datadoe.com/settings?tab=actions).
- **Write access per account.** Write Actions run only on Sellers and Vendors whose access level is **Read and write**. Accounts with **Read only** access accept only read Actions.
- **Permissions per user and Action.** The user or service account needs the **Execute Actions** permission, access to the Action type, and access to the Seller or Vendor. You can also block an Action for selected Sellers and Vendors.
- **Gated personal data.** PII Actions require Amazon PII Data Access for your Organization and the **Access PII data** permission.
- **Test before you run.** Every Action type supports a dry run. Listing, A+ Content, and Multi-Channel Fulfillment changes also have previews that Amazon validates without applying the change. See [How to test an Action before it changes Amazon?](#how-to-test-an-action-before-it-changes-amazon)
- **Safe retries.** With an optional `idempotencyKey`, a retried request returns the original Action instead of running or charging again. See [How to retry a live Action safely?](#how-to-retry-a-live-action-safely)
- **Limits and history.** Live Action limits cap how much can run at the same time. Every live Action is recorded in your Action history, which you can read with `actions_list` or `GET /actions`.

`dryRun` is optional and defaults to `false`. Existing integrations and AI agents send live requests without this field, and a dry-run default would silently turn their Actions into validations. Live writes are protected by the settings above instead, and we recommend a dry run before every live write.

## How to test an Action before it changes Amazon?

Set `"dryRun": true` on the same request that you plan to run live. Every Action type supports it, read and write.

A dry run checks the request the same way as a live start:

- the `details` schema and the item limit
- the **Execute Actions** permission, access to the Action type, and access to the Seller or Vendor, including account restrictions
- whether the Seller or Vendor's connection supports the Action type
- PII access, for PII Actions
- for listing changes with a `productType`, the current product-type schema for that seller and marketplace

A dry run does not send the Action to Amazon or create an Action. It does not spend AI Tokens and does not count toward live Action limits. It also works while the Action type is still disabled for your Organization. A dry run of a write Action needs only **Read only** for **Execute Actions** and does not need **Read and write** access for the account. You can build and test a flow before anyone allows live writes.

A valid request returns `"status": "VALIDATED"` with `"actionId": null`. A request that fails a check returns the same error as a live start, such as HTTP 400 for invalid `details` or HTTP 403 for missing access. Product-type schema and some Amazon Ads checks return `"status": "BLOCKED_INVALID_INPUT"` with the problems in `validation.issues`.

```json
{
    "type": "AMAZON_LISTINGS_PRICING_UPDATE",
    "sellerOrVendorId": "<authorized-seller-or-vendor-id>",
    "dryRun": true,
    "details": {
        "changes": [{ "sku": "MY-SKU-001", "price": 24.99 }]
    }
}
```

A dry run checks the request in DataDoe. To have Amazon check a change without applying it, run its preview Action. Previews are read Actions: the Action type must be enabled, and they cost the same as other read Actions.

| Change                                                                                                                 | Preview with Amazon                                                                                                                                                                                                               |
| ---------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `AMAZON_LISTINGS_CREATE`, `AMAZON_LISTINGS_UPDATE`, `AMAZON_LISTINGS_DETAILS_UPDATE`, `AMAZON_LISTINGS_PRICING_UPDATE` | The matching `_VERIFY` Action, such as `AMAZON_LISTINGS_UPDATE_VERIFY`. Amazon validates the change in `VALIDATION_PREVIEW` mode and returns its issues without changing the listing.                                             |
| A+ Content before publishing                                                                                           | `AMAZON_APLUS_CONTENT_VALIDATE`                                                                                                                                                                                                   |
| `AMAZON_MCF_ORDERS_ADD`                                                                                                | `AMAZON_MCF_ORDERS_PREVIEW` and `AMAZON_MCF_DELIVERY_OFFERS_PREVIEW`                                                                                                                                                              |
| `AMAZON_ORDERS_CREATE_SHIPMENT`                                                                                        | `AMAZON_ORDERS_GET_SHIPPING_RATES` returns the available rates before you buy a label. When a rate has `requiresAdditionalInputs` true, call `AMAZON_ORDERS_GET_SHIPPING_ADDITIONAL_INPUTS` and send matching `additionalInputs`. |

We recommend this flow for every write:

1. Run the request with `"dryRun": true` and fix any issues.
2. If the Action has a preview, run the preview and review Amazon's response.
3. Start the Action with `"dryRun": false` and an `idempotencyKey`.
4. Poll the Action until it finishes and review its `result`.

## How to enable Actions?

All Action types are disabled by default for every Organization. You can enable specific Action types in [Settings > Actions](https://app.datadoe.com/settings?tab=actions). When an Action type is disabled, MCP and API reject requests to run Actions of this type, but `dryRun` is still possible. New Action types are disabled by default.

To start a write Action for a Seller or Vendor, set its access level to **Read and write** on the [Accounts page](https://app.datadoe.com/sellers-and-vendors). Read Actions can run when the access level is **Read only**.

Actions marked **PII** require Amazon PII Data Access for your Organization and your role's **Access PII data** permission to run, including for `dryRun`, and to read their history, results, and shipping-label Files. These Actions can contain personal data in requests, results, or generated documents. Some other Actions can also process personal data without requiring PII access. DataDoe removes personal data from both groups 30 days after the Action is created. The Action stays in history without its request, result, or generated documents. In the API and MCP, `details` is `{"piiRedacted": true}` and `result` is null. A null result means DataDoe removed that personal data, so leave the completed Action as it is. An Action that is still running keeps that data until it finishes.

`AMAZON_ORDERS_FIND` requires PII access when `includedData` contains `BUYER`, `RECIPIENT`, or `TAX`. FBA inbound, MCF, MCF delivery-offer previews, and FBA removal-order Actions do not require PII access. DataDoe still removes personal data from these Action records and related logs and files after 30 days.

## Who can run an Action?

Enabling an Action for the Organization and granting access to it are separate settings. To run an Action, the user or service account needs:

- **Execute Actions** at the required level: Read only for read Actions and validation previews, or Read & write for live write Actions
- access to the specific Action type
- access to the selected Seller or Vendor

Admins choose **All** or **Selected** Actions for roles and service accounts in **Settings > Permissions**. Use **Access** beside an Action in **Settings > Actions** to assign users, roles, or service accounts. An assignment applies to every Seller and Vendor the recipient can access.

Admins can delegate **Manage Action access**. Delegates can assign users and roles only to Actions they can access. Only Admins can change service account assignments. These grants do not enable the Action or grant permission to execute it.

Catalog names and payload schemas remain visible. MCP schema responses include `accessAllowed` to show whether the caller has access to that Action type. This does not replace the execution permission or account checks. Dry runs require Action and account access too, even when the Action is disabled for live execution.

Action access is independent of table access. An allowed Action can return results even if the caller cannot access a table containing similar data. History, results, and generated documents require access to the Action and its account. Queued work rechecks its execution owner's access before running.

Changing which Actions are enabled for the Organization requires **Enabled Actions: Read & write** and All Sellers and Vendors access. See [Manage roles and access](/hub/docs/basics/roles-and-permissions) for more about these controls.

## How to run Actions?

### Using MCP

1. Connect DataDoe to [Claude](/hub/docs/datadoe-mcp/claude), [ChatGPT](/hub/docs/datadoe-mcp/chatgpt), or [another MCP-capable agent](/hub/docs/datadoe-mcp/overview).
2. Get the payload schema, access mode (`READ` or `WRITE`), whether the Action type needs PII access (`requiresPii`), whether the Action type is enabled for the Organization (`enabled`), and the start tool (`actions_start`) with `actions_details_schema_get`. When `enabled` is false, an authorized Organization member turns the type on in [Settings > Actions](https://app.datadoe.com/settings?tab=actions).
3. Use the payload schema, data from DataDoe, and other inputs to build your Action payload.
4. Validate the payload with `dryRun=true` using `actions_start` for both Read and Write Actions. See [How to test an Action before it changes Amazon?](#how-to-test-an-action-before-it-changes-amazon)
5. Start the Action with the same tool, `dryRun=false`, and an `idempotencyKey`, so you can retry it safely.
6. Poll for the Action status using the `actions_get` tool. While the Action is processing, the response summary gives the recommended poll interval: 2 seconds for small requests that usually finish within seconds, such as listing lookups and previews, and 30 seconds for the others.
7. Read the Action result in the `result` field of the Action response.

Read Actions and write Actions appear in the same Action history. A standard read Action costs less than a write Action. A live write Action needs **Read and write** access. A live read Action can run with **Read only** access. The schema tool returns `access` (`READ` or `WRITE`), `requiresPii`, and `startTool` (`actions_start`) alongside the payload schema. See [Subscription & Pricing](/hub/docs/basics/subscription-pricing).

DataDoe uses the `/mcp/v1` endpoint for all MCP clients.

You can also get past Actions within your current access using the `actions_list` tool.

### Using API

> The easiest way to run Actions with the API is to paste [this page URL](/hub/docs/datadoe-actions/introduction.md) into your coding AI agent and ask it to generate the code for you.

Authenticate every REST request with the `datadoe-api-key` header. Do not use `X-Api-Key` or `Authorization`.

```http
POST /api/v1/actions
Content-Type: application/json
datadoe-api-key: YOUR_API_KEY
```

1. Set up [your DataDoe API connection](/hub/docs/datadoe-api/how-to-connect).
2. Check the payload schema for the Action type you want to run in the [request body schema](https://api.datadoe.com/api/v1/docs#/Actions/ActionsApiController_startAction) for the `POST /actions` resource.
3. Use the payload schema, data from DataDoe, and other inputs to build your Action payload.
4. Validate the Action payload using the `POST /actions` resource with `dryRun=true`.
5. Start the Action using the `POST /actions` resource with `dryRun=false` and an `idempotencyKey`, so you can retry it safely.
6. Poll for the Action status using the `GET /actions/<action_id>` resource.
7. Read the Action result in the `result` field of the Action response.

You can also get past Actions within your current access using the `GET /actions` resource.

All details about the API are available in the [DataDoe API docs](https://api.datadoe.com/api/v1/docs/json).

## How to retry a live Action safely?

Without a key, every live request starts a new Action. If a request times out and you send it again, the operation can run twice. To prevent this, add an optional `idempotencyKey` to any read or write Action. It is recommended for writes and automatic retries. The key is optional so that clients that omit it keep their existing behavior.

Use a UUID or a stable ID for one business operation. A key accepts 1 to 128 case-sensitive ASCII letters, digits, periods, underscores, colons, or hyphens. Do not include credentials or personal data. Keys are scoped to your Organization and user or service account, including across API and MCP and credential rotation.

```json
{
    "type": "AMAZON_ADS_CAMPAIGNS_FIND",
    "sellerOrVendorId": "<authorized-seller-or-vendor-id>",
    "dryRun": false,
    "idempotencyKey": "campaign-check:97b79f95-9dfe-4d23-a253-1cb2f89a1a77",
    "details": {
        "campaignQuery": {
            "adProductFilter": { "include": ["SPONSORED_PRODUCTS"] }
        }
    }
}
```

After a timeout, repeat the entire original request with the same key. DataDoe returns the original Action's current status and result, with `idempotency.replayed` set to `true`. The first accepted request returns `false`. A replayed read returns the original data. Use a new key when you need fresh data or intend a different operation.

Using the same key for a different request returns HTTP 409 with `ACTION_IDEMPOTENCY_CONFLICT`. Keys remain consumed after failed or partially completed Actions. If the original result was removed under data retention, a matching retry returns HTTP 410 with `ACTION_IDEMPOTENCY_RESULT_EXPIRED`. Receipts do not expire automatically. Current permissions still apply to every retry.

A dry run validates the key without reserving it. This protection prevents duplicate DataDoe submissions, charges, and worker starts. It cannot determine whether Amazon accepted a write that timed out. Review the original Action before starting another operation with a new key.

## What are the live Actions limits?

DataDoe limits how many live Actions you can have at the same time:

- up to **500** per organization,
- and up to **25** per Seller or Vendor connection.

If you exceed a limit, starting a new Action is rejected (HTTP 429 for the API). A live Action is any Action that is `PENDING`, `IN_PROGRESS`, or `WAITING_EXTERNAL_PROCESSING`. Actions sent in `dryRun` mode are not counted toward these limits.

Wait for existing Actions to complete or combine multiple operations into a single Action request to stay within the limits.

## What are the available operation types?

The following operation types are available:

- **Write**: Create, update, or delete an entity.
- **Read**: Read an entity to verify its state before or after an operation.

> Read operations in Actions are only for verification steps in flows built with Actions. They should not be used for analysis, planning changes, or reporting. For these tasks, use our data tables.

## How much does an Action cost?

Group items into one Action. A standard read Action costs 0.5 AI Tokens for up to 100 items, then 0.25 AI Tokens for each additional 100 items. A standard write Action costs 3 AI Tokens for up to 100 items, then 1 AI Token for each additional 100 items. Each separate Action pays the starting price again. A dry run does not spend AI Tokens. FBA inbound Actions have fixed prices of 0.1 AI Token per read Action and 0.3 AI Token per write Action, regardless of item or shipment count. Campaign, ad group, target, ad, ad association, ad extension, portfolio, brand, and communication FIND Actions count as 1 item per call. Per-audience AMC prices and free AMC audience Actions stay the same.

When a FIND Action's entity is in the DataDoe data scheme, use an Export or a BigQuery query. Use FIND only when you need live Amazon data that the warehouse does not have yet. One standard Export costs 2 AI Tokens. One integrated BigQuery query costs 0.2 AI Tokens. Compare the total cost of repeated FIND Actions with one Export or query.

See [Subscription & Pricing](/hub/docs/basics/subscription-pricing).

## What are the available Actions?

Browse every Action type in the [Actions explorer](/hub/actions). For each Action it shows the access mode, which accounts can run it, item limits, the result, and the JSON Schema of its `details`. Guides for Action groups, such as budget rules or AMC audiences, are in the same explorer, next to their Actions.

Before you plan an inbound shipment or a listing change, check [FBA eligibility and listing restrictions](/hub/docs/datadoe-actions/fba-eligibility). Call those checks yourself. A listing write does not run them.

AI agents can read the same list as [Markdown](https://api.datadoe.com/api/v1/spec/action-scheme.md) or [JSON](https://api.datadoe.com/api/v1/spec/action-scheme).

These guides cover specific workflows:

- [Actions: FBA eligibility](/hub/docs/datadoe-actions/fba-eligibility) for FBA eligibility and listing restriction checks
- [Actions: FBA inbound](/hub/docs/datadoe-actions/fba-inbound) for inbound shipments to Amazon fulfillment centers
- [Actions: External Fulfillment](/hub/docs/datadoe-actions/external-fulfillment) for Seller Flex, Easy Ship and Self Delivery orders
- [Actions: Listing images](/hub/docs/datadoe-actions/listing-images) for listing images on create and update

## How long does an Action take to complete?

DataDoe runs the Action on Amazon within 15 minutes of the Action starting.

Seller Central and Vendor Central listing changes may take 5 minutes to a few hours for Amazon to process. Amazon Ads changes are processed in real time.

## FBA inbound shipments

See the [FBA inbound shipment guide](/hub/docs/datadoe-actions/fba-inbound) for live plans, packing, placement, transport, documents, tracking and receiving reads. These Action types start disabled.

## Buy Shipping labels

From 1 November 2026, a business-to-consumer item shipped from outside the European Union into the European Union needs product identifiers. The United Kingdom counts as outside the European Union. A shipment inside the European Union does not.

Amazon adds the ASIN. You supply a manufacturer part number or a model number for each item. If the item has neither, use its barcode. Add an EAN, GTIN, UPC, ISBN, or ISSN when you have one. Do not invent identifiers or placeholders.

1. Get rates with `AMAZON_ORDERS_GET_SHIPPING_RATES`. A rate that needs more inputs stays available.
2. Load that rate's schema with `AMAZON_ORDERS_GET_SHIPPING_ADDITIONAL_INPUTS`, using the same `requestToken` and `rateId`. The token expires in about 10 minutes.
3. Buy the label with `AMAZON_ORDERS_CREATE_SHIPMENT`. Set `requiresAdditionalInputs` to true and send `additionalInputs` in the form the schema describes, including plain text when the schema asks for text. DataDoe does not buy the label when those values are missing or do not match.
4. Leave both fields out when the rate does not need them.

The same steps are in the [Actions explorer](/hub/actions), in the Buy Shipping group.

## External Fulfillment shipping

See the [External Fulfillment shipping guide](/hub/docs/datadoe-actions/external-fulfillment) for Seller Flex, Easy Ship and Self Delivery shipments, packages, invoices and labels. These Actions are separate from Buy Shipping, FBA inbound, Multi-Channel Fulfillment (MCF) and Vendor Direct Fulfillment. They start disabled.
