modelos

OpenAI: GPT Image 1 Mini

Markdown · JSON

OpenAI: GPT Image 1 Mini

GPT Image 1 Mini cria e edita imagens a partir de texto e referências visuais dentro da família GPT Image 1. Suporta tamanhos de saída padrão, máscaras e formatos de imagem comuns, com baixa fidelidade da entrada em vez da opção de alta fidelidade do GPT Image 1.

Sobre o modelo

Esta descrição apresenta as capacidades do modelo. As entradas, saídas e opções disponíveis no Ailoot para o método selecionado estão indicadas abaixo.

GPT Image 1 Mini é a variante denominada Mini da família GPT Image 1 da OpenAI. Aceita texto e imagens e produz imagens através dos processos de geração e edição do fabricante. Utilize-o para orientações criativas correntes, conceitos visuais e alterações a uma imagem fornecida, quando os controlos documentados da edição Mini se adequam à tarefa. Ao preparar a tarefa, utilize os tamanhos de enquadramento padrão e a baixa fidelidade da entrada do Mini.

Para uma imagem nova, descreva o motivo, a cena, a luz, a composição e o estilo. Para uma edição, identifique a alteração necessária e os elementos de origem que devem continuar reconhecíveis. Uma orientação simples para uma ilustração pode pedir uma bicicleta de entregas junto a uma entrada, formas amplas e limpas e uma paleta contida; um pedido posterior pode alterar o fundo mantendo a composição escolhida. Os processos diretos documentados aceitam até 32 000 caracteres no pedido de texto e de uma a dez imagens de saída, permitindo alternativas para avaliação.

A edição pode utilizar até dezasseis imagens de entrada. Explique qual das imagens fornece o motivo principal, o cenário ou o tratamento visual, em vez de deixar esses papéis ambíguos. GPT Image 1 Mini suporta apenas o valor low de input_fidelity. A definição high disponível no GPT Image 1 não é uma opção no Mini. A fidelidade da entrada é distinta da qualidade de representação da saída: escolher uma saída de alta qualidade não ativa um modo diferente de preservação da origem. Mantenha explícitos os requisitos de preservação e examine os detalhes relevantes da origem na imagem resultante.

Uma máscara pode orientar uma alteração pedida numa área selecionada. A imagem de origem e a máscara precisam do mesmo formato e das mesmas dimensões, e a máscara requer um canal alfa; o guia de geração de imagens indica um requisito de tamanho inferior a 50 MB. Com várias imagens de origem, a máscara aplica-se à primeira. Uma orientação específica pode alterar a cor de um objeto mantendo o enquadramento geral da cena. A máscara é uma orientação baseada no pedido de texto, não uma fronteira geométrica garantida, pelo que deve verificar também a área adjacente, além da alteração pretendida.

Os tamanhos de enquadramento padrão são 1024 × 1024, 1536 × 1024 e 1024 × 1536 píxeis, com seleção automática quando suportada. As opções de qualidade de representação são low, medium, high e auto. São distintas da fidelidade da entrada do Mini, que admite apenas low. As dimensões personalizadas de alta resolução e os níveis xhigh ou max de edições posteriores do GPT Image não fazem parte deste perfil Mini. Escolha um enquadramento adequado ao local de utilização e um nível de qualidade apropriado a um rascunho ou ao resultado final.

O fabricante suporta saídas PNG, JPEG e WebP, sendo PNG o formato predefinido. JPEG e WebP podem utilizar compressão de 0 a 100. Fundos transparentes, opacos e automáticos respondem a diferentes necessidades de composição; selecione PNG ou WebP quando for necessário um canal alfa. Um objeto transparente pode ser colocado numa composição separada, enquanto uma cena opaca inclui o seu próprio fundo. Guarde o ficheiro de saída escolhido, em vez de tratar a sua representação codificada para entrega como o resultado final do trabalho gráfico.

A referência de imagens do fabricante documenta streaming com até três imagens parciais antes da conclusão. Uma pré-visualização pode tornar o progresso visível, mas só a imagem final deve ser guardada como resultado concluído. Para uma sequência de edições, forneça novamente a imagem escolhida com a instrução concreta seguinte. A interface do fabricante suporta também processamento em lote.

Verifique o texto na imagem, os detalhes sensíveis à disposição e o aspeto dos objetos de origem face às orientações criativas. GPT Image ainda pode ter dificuldades com o posicionamento preciso do texto, composições estruturadas e a consistência de motivos recorrentes entre gerações. Utilize o resultado escolhido para uma edição mais delimitada quando um detalhe visível precisar de alteração, mantendo claros tanto a alteração como os requisitos de preservação. O resultado útil do Mini é uma imagem completa para uma tarefa criativa definida, preparada com os tamanhos padrão e os controlos de fidelidade que esta edição exata oferece.

Ailoot Ultra · Imagens POST /v1/images/generations openai/gpt-image-1-mini

openai/gpt-image-1-mini

OpenAI /openai/gpt-image-1-mini
ID do modelo
  • openai/gpt-image-1-mini
  • gpt-image-1-mini

Introdução

GPT Image 1 Mini cria e edita imagens a partir de texto e referências visuais dentro da família GPT Image 1. Suporta tamanhos de saída padrão, máscaras e formatos de imagem comuns, com baixa fidelidade da entrada em vez da opção de alta fidelidade do GPT Image 1.

Entradas aceites
Texto · Imagens
Resultados
Imagens

Disponível no Ailoot · entradas e métodos

Ailoot Ultra · Imagens POST /v1/images/generations
Entrada
text, image
Saída
image
CampoTipoRequisitoValores e limitesPredefinição
CampomodelTipostringRequisitoObrigatórioValores e limites
openai/gpt-image-1-mini
Predefinição—
CampopromptTipostringRequisitoObrigatórioValores e limites
Comprimento mínimo: 1
Predefinição—
Campoaspect_ratioTipostringRequisitoOpcionalValores e limites
1:1, 3:2, 2:3, auto
Predefinição—
CampoqualityTipostringRequisitoOpcionalValores e limites
auto, low, medium, high
Predefinição—
CampobackgroundTipostringRequisitoOpcionalValores e limites
auto, transparent, opaque
Predefinição—
CamponTipointegerRequisitoOpcionalValores e limites
Mínimo: 1
Máximo: 10
Predefinição—
Campoinput_referencesTipoarrayRequisitoOpcionalValores e limites
Número mínimo de elementos: 0
Número máximo de elementos: 16
Predefinição—
Campooutput_compressionTipointegerRequisitoOpcionalValores e limites
Mínimo: 0
Máximo: 100
Predefinição—
CampoproviderTipoobjectRequisitoOpcionalValores e limitesPredefinição—
Parâmetros e ciclo de vida do método
ParâmetroContrato
Parâmetrocontent_typeContratoapplication/json
ParâmetrorequiredContratomodel, prompt
Parâmetromaterial_typesContratotext, image

Ciclo de vida: synchronous_result_then_owned_library

GET /v1/media/tasks/{task_id} · task_id efetivamente devolvido ou registo na biblioteca de multimédia

GET /v1/media/assets/{asset_id}/content

GET /v1/media/assets

GET /v1/media/assets/{asset_id}

Tarifários

Cálculo do custo final

As tarifas apresentadas permitem estimar o custo antes da geração. O montante final cobrado é calculado a partir do custo registado para a geração original. A duração medida do resultado e as quantidades previstas não correspondem à quantidade final faturável.

As referências tarifárias não acrescentam opções ao pedido. Os parâmetros suportados constam do método selecionado.

Modo rápido
Não especificado Quando o modo rápido está selecionado
Modo flex
Não especificado Quando o modo flex está selecionado
Esforço máximo de raciocínio
Não especificado Quando o esforço máximo de raciocínio usa o ajuste predefinido (default)

Tarifas estimadas para comparação

Preços por configuração

Associe cada custo às condições apresentadas. Use uma única tarifa para cada conjunto de configurações alternativas.

ConfiguraçãoTabela de tarifasQuantidade previstaCusto
ConfiguraçãoTarifas base por tokenTabela de tarifasTarifa baseQuantidade prevista—Custo
Entrada · Tokens de entrada · Estimativa apenas para comparação — / 1K tokens
Saída · Tokens de saída · Estimativa apenas para comparação — / 1K tokens
Entrada · Leitura da cache · Estimativa apenas para comparação — / 1K tokens
Entrada · Escrita na cache · Estimativa apenas para comparação — / 1K tokens
Entrada · Escrita na cache, 1 hora · Estimativa apenas para comparação — / 1K tokens
ConfiguraçãoCusto estimado de geraçãoTabela de tarifas—Quantidade previstaestimativa para uma geraçãoCusto
Saída · Custo estimado de geração · Estimativa apenas para comparação $0.065536 estimativa antes da geração

Esta estimativa não é um encargo adicional nem uma tarifa fixa para a geração concluída.

O Ailoot reserva um montante estimado antes de um pedido. Após o resultado, liquida o custo final com base na utilização medida. No streaming, a liquidação usa o registo final de utilização. Como funcionam a reserva e a liquidação →

Exemplos de pedidos

Ailoot Ultra · Imagens

curl
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
export AILOOT_API_KEY
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p={'model': 'openai/gpt-image-1-mini', 'prompt': 'a red panda astronaut floating in space, studio lighting'}

Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/images/generations \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import base64, json, os, subprocess
from pathlib import Path
from urllib.parse import urlsplit, urljoin

def save_images(items):
    if not items: raise SystemExit("No completed images; retain the full response")
    for index, item in enumerate(items):
        encoded=item.get("b64_json")
        uri=item.get("url", "")
        if not encoded and uri.startswith("data:image/"):
            header, separator, encoded=uri.partition(",")
            if not separator or ";base64" not in header: raise SystemExit("Unsupported image data URI")
        if encoded:
            raw=base64.b64decode(encoded,validate=True)
        elif uri:
            uri=urljoin("https://api.ailoot.ai",uri)
            parsed=urlsplit(uri)
            if parsed.scheme!="https" or not parsed.netloc or parsed.username or parsed.password:
                raise SystemExit("Invalid returned image URL")
            owned=parsed.netloc=="api.ailoot.ai" and parsed.path.startswith("/v1/media/assets/") and parsed.path.endswith("/content")
            args=["curl","--fail-with-body","--silent","--show-error",uri]
            if owned: args += ["-H","Authorization: Bearer "+os.environ["AILOOT_API_KEY"]]
            temporary=Path(f"image-{index}.bin")
            subprocess.run(args+["-o",str(temporary)],check=True)
            raw=temporary.read_bytes()
            temporary.unlink()
        else: raise SystemExit("Image has neither bytes nor URL")
        if not raw: raise SystemExit("Empty image result")
        ext="png" if raw.startswith(b"\x89PNG") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else "svg" if raw.lstrip().startswith((b"<svg",b"<?xml")) else "bin"
        Path(f"image-{index}.{ext}").write_bytes(raw)
    print("Every returned image saved; complete response metadata retained")
save_images(json.loads(Path("result.json").read_text())["data"])
PY_RESULT

Receber e guardar os resultados

Ailoot Ultra · Imagens

Descarregue cada imagem devolvida ou guarde o respetivo conteúdo Base64

  • GET /v1/media/tasks/{task_id}
  • GET /v1/media/assets/{asset_id}/content
  • GET /v1/media/assets
  • GET /v1/media/assets/{asset_id}
Outras leituras de conteúdo
Ler os recursos existentes de que é titular
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \
  -H "Authorization: Bearer $AILOOT_API_KEY" -o owned-assets.json
# Preserve every returned asset and follow its exact signed content URL. Do not construct a signed token.
Guardar todos os resultados concluídos

Guarde cada imagem concluída; obtenha cada URL devolvido ou descodifique o respetivo conteúdo Base64.

Conserve a resposta completa e os cabeçalhos, todos os resultados efetivamente produzidos, os identificadores originais devolvidos e todos os campos de utilização. Recupere a operação original sem voltar a enviar o pedido de criação.

Se for necessário verificar a resposta original

Guarde o X-Client-Request-ID devolvido para reconciliação. Consulte apenas os valores task_id/asset_id efetivamente devolvidos ou a sua biblioteca de multimédia; nunca construa um URL de tarefa a partir do ID da operação e nunca volte a enviar o pedido de criação.

Campos da resposta
CampoTipo
CampocreatedTipo
Campodata[].urlTipo
Campodata[].b64_jsonTipo
CampousageTipo

Aliases

Aliases do modelo

Ailoot Ultra openai/gpt-image-1-mini, gpt-image-1-mini

Aliases dos caminhos dos métodos

/v1/images

IDs de chamada relacionados

openai/gpt-image-1-mini, gpt-image-1-mini

Ailoot Ultra · Imagens POST /v1/images/generations gpt-image-1-mini

gpt-image-1-mini

OpenAI /gpt-image-1-mini
ID do modelo
  • openai/gpt-image-1-mini
  • gpt-image-1-mini

Introdução

GPT Image 1 Mini cria e edita imagens a partir de texto e referências visuais dentro da família GPT Image 1. Suporta tamanhos de saída padrão, máscaras e formatos de imagem comuns, com baixa fidelidade da entrada em vez da opção de alta fidelidade do GPT Image 1.

Entradas aceites
Texto
Resultados
Imagens

Disponível no Ailoot · entradas e métodos

Ailoot Ultra · Imagens POST /v1/images/generations
Entrada
text
Saída
image
CampoTipoRequisitoValores e limitesPredefinição
CampomodelTipostringRequisitoObrigatórioValores e limites
gpt-image-1-mini
Predefinição—
CampopromptTipostringRequisitoObrigatórioValores e limites
Comprimento máximo: 32 000
Predefinição—
CamposizeTipostringRequisitoOpcionalValores e limites
1024x1024, 1536x1024, 1024x1536, auto
Predefiniçãoauto
CampobackgroundTipostringRequisitoOpcionalValores e limites
transparent, opaque, auto
Predefiniçãoauto
CampomoderationTipostringRequisitoOpcionalValores e limites
low, auto
Condições: Utilize auto para a moderação normal de conteúdo.
Predefinição—
CamponTipointegerRequisitoOpcionalValores e limites
Mínimo: 1
Máximo: 10
Predefinição1
CampoqualityTipostringRequisitoOpcionalValores e limites
auto, high, medium, low
Predefiniçãoauto
Campooutput_compressionTipointegerRequisitoOpcionalValores e limites
Mínimo: 0
Máximo: 100
Condições: Aplica-se à saída JPEG e WebP; envie o valor inteiro documentado.
Predefinição100
Campooutput_formatTipostringRequisitoOpcionalValores e limites
webp, png, jpeg
Predefiniçãopng
CampostreamTipobooleanRequisitoOpcionalValores e limites
false
Condições: Esta rota devolve uma única resposta JSON concluída.
Predefiniçãofalse
Parâmetros e ciclo de vida do método
ParâmetroContrato
Parâmetrocontent_typeContratoapplication/json
ParâmetrorequiredContratoprompt, model
Parâmetromaterial_typesContratotext
ParâmetrooptionalContratosize, background, moderation, n, quality, output_compression, output_format, stream
ParâmetroconditionsContratoUm fundo transparente exige PNG ou WebP., A compressão de saída aplica-se a JPEG ou WebP., O método selecionado gera a partir de texto. Os controlos de edição e transmissão em fluxo descritos para o fabricante são capacidades separadas.

Ciclo de vida: synchronous_result_then_owned_library

GET /v1/media/tasks/{task_id} · task_id efetivamente devolvido ou registo na biblioteca de multimédia

GET /v1/media/assets/{asset_id}/content

GET /v1/media/assets

GET /v1/media/assets/{asset_id}

Tarifários

Cálculo do custo final

As tarifas apresentadas permitem estimar o custo antes da geração. O montante final cobrado é calculado a partir do custo registado para a geração original. A duração medida do resultado e as quantidades previstas não correspondem à quantidade final faturável.

As referências tarifárias não acrescentam opções ao pedido. Os parâmetros suportados constam do método selecionado.

Modo rápido
Não especificado Quando o modo rápido está selecionado
Modo flex
Não especificado Quando o modo flex está selecionado
Esforço máximo de raciocínio
Não especificado Quando o esforço máximo de raciocínio usa o ajuste predefinido (default)

Tarifas estimadas para comparação

Preços por configuração

Associe cada custo às condições apresentadas. Use uma única tarifa para cada conjunto de configurações alternativas.

ConfiguraçãoTabela de tarifasQuantidade previstaCusto
ConfiguraçãoTarifas base por tokenTabela de tarifasTarifa baseQuantidade prevista—Custo
Entrada · Tokens de entrada · Estimativa apenas para comparação — / 1K tokens
Saída · Tokens de saída · Estimativa apenas para comparação — / 1K tokens
Entrada · Leitura da cache · Estimativa apenas para comparação — / 1K tokens
Entrada · Escrita na cache · Estimativa apenas para comparação — / 1K tokens
Entrada · Escrita na cache, 1 hora · Estimativa apenas para comparação — / 1K tokens
ConfiguraçãoCusto estimado de geraçãoTabela de tarifas—Quantidade previstaestimativa para uma geraçãoCusto
Saída · Custo estimado de geração · Estimativa apenas para comparação $0.065536 estimativa antes da geração

Esta estimativa não é um encargo adicional nem uma tarifa fixa para a geração concluída.

O Ailoot reserva um montante estimado antes de um pedido. Após o resultado, liquida o custo final com base na utilização medida. No streaming, a liquidação usa o registo final de utilização. Como funcionam a reserva e a liquidação →

Exemplos de pedidos

Ailoot Ultra · Imagens

curl
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
export AILOOT_API_KEY
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p={'prompt': 'A cute baby sea otter', 'model': 'gpt-image-1-mini', 'size': '1024x1024', 'n': 1, 'background': 'auto', 'moderation': 'auto', 'output_format': 'png'}

Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/images/generations \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import base64, json, os, subprocess
from pathlib import Path
from urllib.parse import urlsplit, urljoin

def save_images(items):
    if not items: raise SystemExit("No completed images; retain the full response")
    for index, item in enumerate(items):
        encoded=item.get("b64_json")
        uri=item.get("url", "")
        if not encoded and uri.startswith("data:image/"):
            header, separator, encoded=uri.partition(",")
            if not separator or ";base64" not in header: raise SystemExit("Unsupported image data URI")
        if encoded:
            raw=base64.b64decode(encoded,validate=True)
        elif uri:
            uri=urljoin("https://api.ailoot.ai",uri)
            parsed=urlsplit(uri)
            if parsed.scheme!="https" or not parsed.netloc or parsed.username or parsed.password:
                raise SystemExit("Invalid returned image URL")
            owned=parsed.netloc=="api.ailoot.ai" and parsed.path.startswith("/v1/media/assets/") and parsed.path.endswith("/content")
            args=["curl","--fail-with-body","--silent","--show-error",uri]
            if owned: args += ["-H","Authorization: Bearer "+os.environ["AILOOT_API_KEY"]]
            temporary=Path(f"image-{index}.bin")
            subprocess.run(args+["-o",str(temporary)],check=True)
            raw=temporary.read_bytes()
            temporary.unlink()
        else: raise SystemExit("Image has neither bytes nor URL")
        if not raw: raise SystemExit("Empty image result")
        ext="png" if raw.startswith(b"\x89PNG") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else "svg" if raw.lstrip().startswith((b"<svg",b"<?xml")) else "bin"
        Path(f"image-{index}.{ext}").write_bytes(raw)
    print("Every returned image saved; complete response metadata retained")
save_images(json.loads(Path("result.json").read_text())["data"])
PY_RESULT

Receber e guardar os resultados

Ailoot Ultra · Imagens

Descarregue cada imagem devolvida ou guarde o respetivo conteúdo Base64

  • GET /v1/media/tasks/{task_id}
  • GET /v1/media/assets/{asset_id}/content
  • GET /v1/media/assets
  • GET /v1/media/assets/{asset_id}
Outras leituras de conteúdo
Ler os recursos existentes de que é titular
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \
  -H "Authorization: Bearer $AILOOT_API_KEY" -o owned-assets.json
# Preserve every returned asset and follow its exact signed content URL. Do not construct a signed token.
Guardar todos os resultados concluídos

Guarde cada imagem concluída; obtenha cada URL devolvido ou descodifique o respetivo conteúdo Base64.

Conserve a resposta completa e os cabeçalhos, todos os resultados efetivamente produzidos, os identificadores originais devolvidos e todos os campos de utilização. Recupere a operação original sem voltar a enviar o pedido de criação.

Se for necessário verificar a resposta original

Guarde o X-Client-Request-ID devolvido para reconciliação. Consulte apenas os valores task_id/asset_id efetivamente devolvidos ou a sua biblioteca de multimédia; nunca construa um URL de tarefa a partir do ID da operação e nunca volte a enviar o pedido de criação.

Campos da resposta
CampoTipo
CampocreatedTipo
Campodata[].urlTipo
Campodata[].b64_jsonTipo
CampousageTipo

Aliases

Aliases do modelo

Ailoot Ultra openai/gpt-image-1-mini, gpt-image-1-mini

Aliases dos caminhos dos métodos

/v1/images

IDs de chamada relacionados

openai/gpt-image-1-mini, gpt-image-1-mini

FAQ · OpenAI: GPT Image 1 Mini
Que entradas e resultados estão disponíveis?

POST /v1/images/generations · openai/gpt-image-1-mini: text, image → image

POST /v1/images/generations · gpt-image-1-mini: text → image

Que campos utiliza o pedido?

POST /v1/images/generations · openai/gpt-image-1-mini: model, prompt, aspect_ratio, quality, background, n, input_references, output_compression, provider

POST /v1/images/generations · gpt-image-1-mini: model, prompt, size, background, moderation, n, quality, output_compression, output_format, stream

Que limites se aplicam?

POST /v1/images/generations · openai/gpt-image-1-mini: n.minimum: 1; n.maximum: 10; output_compression.minimum: 0; output_compression.maximum: 100

POST /v1/images/generations · gpt-image-1-mini: prompt.maximum_length: 32000; n.minimum: 1; n.maximum: 10; output_compression.minimum: 0; output_compression.maximum: 100

Mais detalhes

Ligue o Ailoot ao Claude Code, OpenCode, Hermes ou à sua aplicação.

A empresa e a sua carteira de projetos

A empresa e a sua carteira de projetos: milhões de clientes; vendas mensais na ordem dos milhares de milhões.

Compre tokens com desconto.

Desconto por subscrição para trabalho regular. Códigos promocionais — até 50% na compra de tokens.

Subscrição
Escolha um plano com desconto para os pedidos regulares.
Código promocional até 50%
Introduza o código na compra. O preço é recalculado conforme a campanha em vigor.
Custos no histórico
O modelo, os tokens e o montante são guardados para cada pedido.

Escolher subscrição · Ver preços dos modelos

Ligue a API ao produto que vende.

SaaS, aplicações e bots — ao abrigo da oferta e do contrato de licença Ailoot. Para revenda, peça uma licença de revendedor.

Aplicação comercial
Integre geração de texto, imagens, vídeo e som nas funcionalidades pagas do seu serviço.
Licença de revendedor
Envie uma descrição do projeto e do modelo de acesso. Peça condições escritas de utilização e revenda.
Documentos no site
A oferta, o contrato de licença e a política de tratamento de dados estão disponíveis antes da ligação.

Pedir licença de revendedor · Oferta e contrato de licença