Concept renderVendors limit images by pixels, bytes and count, and audio by token rate and request size. Claude charges ceil(W/28) x ceil(H/28) visual tokens per image on its high-resolution tier and caps a base64 image at 10 MB. OpenAI rejects images over 30,000 patches. Gemini counts audio at 32 tokens per second with a 20 MB request. As of October 31, 2026.
A camera or microphone sends bytes. The model API counts pixels, patches, tokens and megabytes. This guide puts the official limits side by side, turns them into a budget you can check against a sensor mode, and lists what to measure on your own board. It covers Claude and OpenAI image input and Gemini audio input. It does not cover Gemini image limits or OpenAI audio limits. It contains no Duobay price and no measured result.
What are the published limits?
Each row comes from the vendor's own documentation, read on October 31, 2026. Limits change, so re-read the page before you decide.
| Path | Published limits | Source |
|---|---|---|
| Claude (first-party API) | Image: 8000 x 8000 px maximum. 10 MB per image, measured after base64 encoding. Formats JPEG, PNG, GIF, WebP. Animated GIF uses the first frame only. Request limit 128 MB. Above 20 image and document blocks, keep each image at or under 3,000 px per side. | Anthropic vision page, as of October 31, 2026 |
| Claude on Amazon Bedrock | Same 8000 x 8000 px maximum. 5 MB per image, measured after base64 encoding. | Anthropic vision page, as of October 31, 2026 |
| OpenAI | Up to 512 MB total payload and up to 1,500 images per request. An image over the 30,000-patch limit after processing is rejected and is not resized for you. Detail level low fits within 512 x 512 px. Resizing keeps the aspect ratio and never enlarges a smaller image. | OpenAI images and vision guide, as of October 31, 2026 |
| Gemini audio | 32 tokens per second of audio (1 minute is 1,920 tokens). Up to 9.5 hours of audio per prompt. Audio is downsampled to 16 Kbps. Multi-channel audio is combined into one channel. Maximum request size is 20 MB total, including the prompt and all files. | Google audio page, as of October 31, 2026 |
How many tokens or patches is one frame?
Claude counts ceil(W / 28) x ceil(H / 28) visual tokens per image (Anthropic vision page, as of October 31, 2026). OpenAI rejects an image that exceeds 30,000 patches after processing, and the patch size depends on the model, so this guide gives no OpenAI patch table (OpenAI images and vision guide, as of October 31, 2026). We did the arithmetic below ourselves. The 2,691 figure for 1920 x 1080 matches the Anthropic page only for the high-resolution tier, which applies to Claude 4.7 and later models. Other models resize that frame first and the vision page lists about 1,560 tokens for it, so a budget built on 2,691 over-counts on those models.
| Frame size | Claude visual tokens |
|---|---|
| 640 x 480 | 23 x 18 = 414 |
| 1280 x 720 | 46 x 26 = 1,196 |
| 1920 x 1080 | 69 x 39 = 2,691 on the high-resolution tier (Claude 4.7 and later). About 1,560 on the standard tier, where this frame is resized first. |
These counts apply to the frame as the API sees it after any resize on the vendor side. For OpenAI, look up the patch size for your model on the OpenAI page and keep ceil(W / p) x ceil(H / p) at or below 30,000.
How do you check a request against the byte limits?
raw_limit_bytes = Limit_img × 3 / 4 (base64 turns 3 bytes into 4)
frame_fits = S ≤ raw_limit_bytes
tokens_per_request = K × ceil(W/28) × ceil(H/28) (Claude)
patches_per_frame = ceil(W/p) × ceil(H/p) (OpenAI, must be ≤ 30,000; p = patch size for your model, from the OpenAI page)
audio_bytes_per_sec = B / 8
audio_seconds_inline = (20,000,000 − P − image_bytes) / audio_bytes_per_sec (Gemini)
gemini_audio_tokens = 32 × secondsUnits: W and H in pixels. S, P and image_bytes in bytes. B in bits per second. K is a count. The 3/4 factor is a general encoding rule, and it is our assumption that the vendor MB is 1,000,000 bytes. If it is 1,048,576, the real limit is slightly higher, so the check stays safe.
Worked example with assumed inputs. Suppose a wearable sends K = 6 frames at 1280 x 720 in one Claude request. That is 6 x 1,196 = 7,176 visual tokens. On the 5 MB Bedrock path, raw_limit_bytes is 5,000,000 x 3 / 4 = 3,750,000 bytes per frame. A frame passes if S is at or below 3,750,000. The values K = 6 and the frame size are assumptions for illustration, and S is yours to measure. For audio, 1 hour is 3,600 x 32 = 115,200 tokens, and the 9.5-hour prompt limit is 9.5 x 115,200 = 1,094,400 tokens.
How much audio fits inline in 20 MB?
The Gemini request limit is 20 MB total including the prompt and all files. The table shows the ceiling when audio is the only file and the prompt is negligible. The bitrates are example choices of ours. They are not recommendations, and the vendor page does not say whether the 20 MB is measured before or after any encoding of the upload.
| Upload bitrate (our example) | Bytes per second | Audio in 20,000,000 bytes |
|---|---|---|
| 16 Kbps | 2,000 | 10,000 seconds, about 166 minutes |
| 64 Kbps | 8,000 | 2,500 seconds, about 41 minutes |
| 256 Kbps (16-bit mono PCM at 16 kHz) | 32,000 | 625 seconds, about 10 minutes |
Source of the 20 MB limit: Google audio page, as of October 31, 2026. The vendor states that audio is downsampled to 16 Kbps on its side.
Inputs, and which are yours to replace
Only the limits come from a source. Every other input is yours. We do not supply a typical frame size, because a made-up number would look like a fact. The vendor does not publish one, so it needs a test on your board.
| Variable | Meaning | Status | What to do |
|---|---|---|---|
| W, H | Frame width and height in pixels, as sent | Your design choice | Take from the sensor mode and any crop or scale you apply before encoding. |
| S | Bytes per encoded frame | Your measurement | Vendor pages do not give it. Measure on real scenes from your sensor at your JPEG quality setting, and use the largest frames, not the average. |
| K | Frames per request | Your design choice | Set from your product behavior, such as one frame per trigger or a burst. |
| B | Bits per second of the audio you upload | Your design choice | Set by the codec and sample rate you pick on the device. |
| P | Bytes taken by the prompt and any other files in the same request | Your measurement | Gemini counts the prompt and all files toward the 20 MB request. |
| Limit_img | Per-image byte limit | Published limit | 10 MB on the Claude API, 5 MB on Bedrock, both after base64. Use the one for the path you ship. |
What are the common input traps?
These follow from the published limits above. They come from engineering reasoning about how the numbers behave. None describes an incident at any company.
- One firmware, two byte limits. Claude allows 10 MB per base64 image on the first-party API and 5 MB on Amazon Bedrock. A frame budget tuned to the larger limit fails on the smaller one. If your backend might move between the two paths, budget for 5 MB.
- Base64 inflates the file. The limits are stated after base64 encoding. Base64 turns every 3 bytes into 4 characters, which is a general encoding rule and not a number from the vendor page. A 5 MB base64 limit holds about 3.75 MB of raw JPEG, and 10 MB holds about 7.5 MB. The vendor page does not say whether MB means 1,000,000 or 1,048,576 bytes, so keep a margin.
- More than 20 images changes the pixel rule. Claude guidance says that above 20 image and document blocks, each image should stay at or under 3,000 px per side. A device that sends a burst of full-resolution frames can cross that line without any change to a single frame.
- Rejection instead of resizing. OpenAI rejects an image that exceeds 30,000 patches after processing. It does not shrink it for you. A sensor upgrade late in development can turn working uploads into errors unless the device checks size before sending. How the pre-processing step counts for your model is a question for the vendor page and a test.
- Animated formats lose frames. Claude uses only the first frame of a GIF. A short animated capture sent as GIF delivers one still. Send separate frames if the model needs motion.
- A microphone array collapses to one channel. Gemini combines multi-channel audio into one channel and downsamples to 16 Kbps. Any beamforming or channel selection must happen on the device before upload. Sending a high sample rate and more channels adds bytes without adding what the model hears.
- Image and audio share one request budget. The Gemini 20 MB request limit counts the prompt and all files together. Audio plus a few frames can pass it while each part looks small.
- Token count grows with pixels. The Claude formula charges per 28 px block, so doubling both dimensions roughly quadruples the visual tokens. The vision page also lists a high-resolution tier at 2,576 px with 4,784 tokens for Claude 4.7 and later models. Read the page for what happens to larger frames before you choose a sensor mode.
What should you measure on your own board?
The vendor pages give limits and formulas. They give no latency, image quality or accuracy results for your sensor, and we have not measured these for you. No result appears in this article. Fix every pass line before you run the test.
| What to measure | How | How to set the pass line |
|---|---|---|
| Encoded frame size, worst case | Capture a set of frames from your real sensor in bright sun, a dim room, and a busy textured scene at your target resolution and JPEG quality. Record bytes per frame and take the maximum and the 99th percentile. Apply the 4/3 base64 factor. | The pass line is the per-image limit of the path you ship, with a margin you write down first. Use 5 MB if Bedrock is possible. |
| Recognition quality against resolution and JPEG quality | Build a labeled set from real prototype captures. Send the same set at three or more resolutions and quality settings. Score each with a rubric fixed before scoring. Report accuracy and the count of failures per setting. | Set the minimum accuracy from your product need. Pick the cheapest setting that clears it on the hard cases as well as the easy ones. |
| Token and patch count per request | Log the usage the API returns for real requests, and compare with the formula in this article. Record the 95th percentile of tokens per request. | The measured count replaces the formula estimate. Investigate any gap before you size a budget. |
| Audio quality at the uploaded bitrate | Record the same speech at your microphone, in quiet and in noise, and encode at two or three candidate bitrates. Send each to the model and score the transcript against a human reference with word error rate. | Set the maximum word error rate from your product need. Pick the lowest bitrate that stays under it in your noisiest case. |
| Upload time on the real link | Time the full upload of a worst-case request on your target network, such as Wi-Fi at the edge of range or a cellular link. Record median and 95th percentile from many runs. | Set the limit from the longest wait a user will tolerate, and write it down before the test. |
| Device cost of capture and encode | Measure current on the battery rail during capture, JPEG encode and audio encode, and note buffer memory used. Compare each setting. | Compute the battery cost per request from your real usage profile and compare with your battery promise. |
| Channel handling | Record from the array, run your on-device channel selection or beamforming, then compare the mono result against a single raw channel on the same transcription test. | Keep the on-device step only if it beats the raw channel by an amount you set in advance. |
What should you ask before you commit?
Take this list to your team, and to any supplier who proposes a sensor or encoding choice.
- Which API path does the firmware call, first-party or a cloud marketplace, and what is the per-image byte limit on that path?
- What is the largest encoded frame our sensor can produce, and does it fit the smaller limit with the base64 factor applied?
- How many frames can one request carry before the pixel rule changes?
- Does our pipeline check size on the device before upload, and what happens to the user when a request is rejected?
- What bitrate does the audio leave the device at, and has a person scored transcripts at that bitrate in noise?
- Where is the multi-channel to single-channel step done, on the device or at the provider?
- Does the request size include the prompt and every other file, and have we added them up?
- Which limits did we read from the vendor pages, on what date, and who rechecks them before launch?
- Gemini image limits and OpenAI audio limits are not covered here. Have we read those pages for the models we plan to use?
- If the device records people, how does the product show that recording is on, and where is that written in the spec?
Questions about image and audio input limits
How do I estimate the Claude token cost of one frame?
The vision page gives the formula ceil(width / 28) x ceil(height / 28) visual tokens (source, as of October 31, 2026). A 1280 x 720 frame is 46 x 26, which is 1,196 tokens. Confirm against the usage the API returns, because tiers and caps can change the count.
What is the largest frame I can send to OpenAI?
The limit is 30,000 patches after processing, and a larger image is rejected (source, as of October 31, 2026). The patch size depends on the model, so take it from the OpenAI page and keep ceil(W / p) x ceil(H / p) at or below 30,000. This article does not compute a maximum side length.
How long can the audio be in one Gemini request?
A prompt can hold up to 9.5 hours of audio at 32 tokens per second, and the whole request is limited to 20 MB (source, as of October 31, 2026). At an upload bitrate of 64 Kbps, 20 MB is about 41 minutes before the prompt and other files take their share. Longer recordings need splitting or a different upload path, which you should confirm on the page.
Does this article say which encoding gives the best recognition?
No. The vendor pages give limits and formulas. The effect of resolution, JPEG quality or audio bitrate on accuracy depends on your sensor, your scenes and your model, so the measurement table above tells you how to test it.
Can Duobay choose the sensor and encoding for my device?
Sensor and microphone integration are part of our electronics scope. We do not publish prices. Tell us about your device and we will explain how a Gate 0 Feasibility study handles this choice.
If you want help choosing the sensor, microphone and encoding for your device, tell us about your device. You can also read about our AI recording wearable development and how our engineering gates work.
Sources
All pages accessed October 31, 2026. Limits and model lists change, so re-read them before you decide.
- Anthropic, Claude vision documentation: https://platform.claude.com/docs/en/build-with-claude/vision (accessed 2026-10-31)
- Google, Gemini API audio understanding: https://ai.google.dev/gemini-api/docs/audio (accessed 2026-10-31)
- OpenAI, images and vision guide: https://developers.openai.com/api/docs/guides/images-vision (accessed 2026-10-31)
Planning an AI recording wearable? Tell us what it needs to do. A Duobay engineer replies within 1 business day. Send a project brief →