Security & Compliance

Article 50 compliance for Azure OpenAI apps: a guide

By Technspire TeamJuly 22, 20269 views

On 20 July 2026 the European Commission published the final version of its guidelines on the AI Act's Article 50 transparency obligations, replacing the May consultation draft. The guidelines land on top of two earlier July decisions: on 8 July the Commission issued its opinion finding the Code of Practice on Transparency of AI-generated Content an adequate voluntary tool for demonstrating compliance with Articles 50(2), 50(4) and 50(5), and on 9 July the AI Board adopted its own adequacy assessment. The interpretive framework is now settled, and it is settled less than two weeks before Article 50 starts to apply on 2 August 2026. For most Swedish enterprises this is the first AI Act obligation that lands on ordinary engineering teams rather than on legal departments. A customer-facing chatbot, an internal copilot that drafts documents, a marketing tool that generates images: all of these are Article 50 systems, and compliance means shipping code, not filing paperwork.

This guide maps the obligations onto a typical Azure OpenAI application portfolio and shows concrete implementation patterns for the three duties that matter most in practice: chatbot disclosure, machine-readable marking of generated content, and deployer labels for deepfakes and public-interest text.

What the Commission actually published, and when

Three documents now define the compliance landscape. The Code of Practice on Transparency of AI-generated Content, published in final form on 10 June 2026, is the practical rulebook: one section for providers on marking and detection, one section for deployers on labelling deepfakes and certain AI-generated text. The Commission opinion of 8 July confirms the Code as adequate, meaning adherence is a recognised way to demonstrate compliance, although the opinion is explicit that signing does not constitute conclusive evidence of compliance. The guidelines of 20 July are the interpretive layer: they clarify who counts as a provider or deployer under Article 50, what qualifies as synthetic content or a deepfake, and how the exemptions work. National market surveillance authorities will use the guidelines as their primary reference when they assess your systems.

The Code is voluntary. If you do not adhere to it, you must demonstrate compliance through alternative, equivalently adequate means, and you carry the burden of showing your approach works. For a mid-sized Swedish organisation without a standards team, following the Code's measures is the lower-effort path even without formally signing. The AI Office will review the Code at least every two years, so the technical bar will keep rising as marking techniques mature.

The penalty frame is worth stating plainly: non-compliance with Article 50 can draw fines of up to EUR 15 million or 3% of worldwide annual turnover, whichever is higher. That is the AI Act's middle penalty tier, and it applies to transparency failures specifically.

Which obligations hit which of your apps

Article 50 contains distinct duties for providers and deployers, and a single application can trigger several of them at once. Start by classifying every GenAI-touching system in your portfolio.

Classification framework. For each system, answer four questions:

  • 1. Does it interact directly with people? Chat UIs, voice bots, AI agents that email or message humans. If yes: Article 50(1) disclosure applies, unless the AI nature is obvious to a reasonably well-informed, observant person.
  • 2. Does it generate or manipulate content? Text, images, audio, video that leaves the system. If yes: Article 50(2) machine-readable marking applies to the provider. If you built the app on Azure OpenAI and offer it under your own name, that provider is you.
  • 3. Does it produce deepfakes? AI-generated or manipulated image, audio or video content resembling real persons, places or events. If yes: Article 50(4) requires the deployer to disclose the content is artificial. The guidelines make clear photorealism is not the test, and the artistic-works accommodation is narrow.
  • 4. Does it publish text on matters of public interest? If AI-generated text is published to inform the public and no human editorial review with responsibility takes place, the deployer must disclose the AI origin.

Two scope clarifications from the guidelines change the size of the job. First, AI-generated summaries and substantive rewrites are in scope for marking: a copilot that condenses a report into an executive summary is generating synthetic content. Second, short assistive outputs fall outside Article 50(2): captions, alt-text and similar minor outputs do not need marking, and translations sit within the standard-editing exemption. Content generated before 2 August 2026 does not need retroactive marking, so there is no backfill project over your document archive. For generative systems already on the market before 2 August, the Commission's materials describe a transition running to 2 December 2026 for the marking obligation, but new systems must comply from day one.

Pattern 1: chatbot disclosure that survives an audit

The disclosure duty in Article 50(1) is a product requirement, not a prompt requirement. Telling the model to introduce itself as an AI is not a control: the disclosure must be guaranteed by the application, delivered clearly at the start of the interaction, and it cannot depend on the model deciding to comply. The guidelines also expect AI agents that act on someone's behalf to identify whose behalf that is.

A robust implementation has three layers. The UI shows a persistent, unmissable notice. The conversation opens with a fixed, application-injected message that no prompt injection can suppress. And the disclosure state is logged, so you can later prove every session started with it.

// Disclosure is application logic, never model output.
const DISCLOSURE = {
  sv: 'Du chattar med en AI-assistent som drivs av [foretag]. ' +
      'Svaren genereras automatiskt och kan innehalla fel.',
  en: 'You are chatting with an AI assistant operated by [company]. ' +
      'Replies are generated automatically and may contain errors.'
};

function startSession(locale, userId) {
  const session = createSession(userId);
  // 1. Fixed first message, injected by the app, not the model
  session.messages.push({ role: 'system-notice', text: DISCLOSURE[locale] });
  // 2. Audit trail: prove disclosure happened before any user turn
  auditLog.write({
    event: 'ai_disclosure_shown',
    sessionId: session.id,
    locale: locale,
    timestamp: new Date().toISOString()
  });
  return session;
}

The exemption for obviousness is tempting and should be used sparingly. A tool labelled "AI Assistant" in your intranet may qualify; a voice bot answering your customer-service number does not. When in doubt, disclose. The cost of the banner is near zero and the cost of arguing obviousness with a market surveillance authority is not.

Pattern 2: machine-readable marking on Azure

Article 50(2) requires providers to ensure outputs are marked in a machine-readable format and detectable as artificially generated. The Code of Practice takes a layered approach because, in the Commission's assessment, no available technique is simultaneously effective, interoperable, robust and reliable, which is the bar the regulation itself sets. In practice that means combining digitally signed metadata with imperceptible watermarking where feasible, with interoperable detection solutions expected on a horizon of February 2027.

Images: mostly solved for you

If your image generation runs through Azure OpenAI, the platform already attaches C2PA content credentials to generated images: signed provenance metadata identifying the content as AI-generated, which Microsoft has shipped since 2024. Your job is to not break it. Audit your pipeline for steps that strip metadata: image resizing libraries, CDN optimisers and social-media re-encoders commonly discard C2PA manifests. Where a processing step is unavoidable, re-attach a manifest after processing, and keep the original signed asset in storage as evidence.

Text: the part you must build yourself

There is no watermark you can switch on for text coming out of an Azure OpenAI chat completions call. For text, the workable marking layer is signed provenance metadata attached at the point where your application assembles the deliverable: the generated report, the drafted email, the published article. You control that surface, so mark it there.

// Provenance record attached to every generated document.
// Sign with a Key Vault key so the record is verifiable.
const provenance = {
  claim: 'ai-generated',
  generator: 'azure-openai',
  application: 'report-writer',
  generatedAt: new Date().toISOString(),
  contentHash: sha256(documentBody)
};
const signature = await keyVaultClient.sign(
  'RS256', Buffer.from(JSON.stringify(provenance))
);

// Delivery: embed where the format allows
// - DOCX/PDF: custom document properties + embedded manifest
// - HTML: meta tags plus a visible notice where 50(4) applies
// - API responses: X-AI-Generated header set at APIM policy level

For HTML output, pair the machine-readable layer with markup a crawler can read:

<meta name="ai-generated" content="true">
<meta name="ai-generator" content="azure-openai via [application]">
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Article",
  "creator": { "@type": "SoftwareApplication", "name": "[application]" }
}
</script>

Centralise the marking step. If every app team invents its own provenance format, you will spend 2027 harmonising them. A shared internal library, or an Azure API Management outbound policy that stamps responses from your GenAI backends, gives you one place to update when the Code's technical measures evolve.

Pattern 3: deployer labels for deepfakes and public-interest text

Marking under 50(2) is invisible plumbing. The deployer duties in 50(4) are visible labels aimed at humans. If your organisation publishes AI-generated or manipulated image, audio or video content depicting real people, places or events, the publication must carry a clear disclosure that the content is artificial. The guidelines interpret the exceptions narrowly: advertising rarely qualifies for reduced labelling, and whether the output looks obviously synthetic is not decisive.

For AI-generated text published to inform the public on matters of public interest, the label is required unless the text has undergone human review and a natural or legal person holds editorial responsibility. For most enterprises the practical answer is an editorial gate: AI-drafted public communications flow through a named human approver, and your CMS records who approved what. That both removes the labelling duty for text and gives you the audit trail. Where no human review happens, ship the label.

Implementation is unglamorous: a content-type flag in the CMS, a rendering rule that outputs the notice in the reader's language, and a publishing checklist item. The engineering effort is a week; the process change is the real work.

The Swedish and EU angle

Enforcement will be guideline-driven. The 20 July guidelines are the reference document market surveillance authorities across the EU will apply. For a Swedish organisation this cuts both ways: you get a single interpretive text to build against rather than 27 national readings, and you lose the argument that requirements were unclear. Map your controls to specific guideline sections in your compliance documentation now, while the mapping is cheap.

The Code of Practice is a procurement signal. Expect Swedish public-sector buyers and regulated enterprises to start asking vendors whether they adhere to the Code or how they otherwise demonstrate Article 50 compliance. If you sell GenAI-powered software, having a documented answer ready before the question arrives in an upphandling questionnaire is worth a day of preparation. If you buy, add the question to your vendor assessments.

Disclosure texts are a localisation task. Article 50 disclosures must actually inform the people exposed to the system. For a workforce or customer base in Sweden that means Swedish-language notices, not an English banner bolted onto a Swedish UI. Treat disclosure strings like any other i18n resource, and review the Swedish phrasing with someone who will defend it in front of a regulator, not just a translator.

GDPR work transfers. Teams that built GDPR transparency notices already have the muscle for this: an inventory of systems, a register of disclosures, a review cadence. Extend the existing register with an Article 50 column instead of standing up a parallel process. The overlap is deliberate and the AI Act rewards organisations that treat transparency as one programme.

Your checklist before 2 August

  • 1. Inventory and classify. List every system that generates content or talks to humans, including internal copilots, and run each through the four-question framework above.
  • 2. Ship chatbot disclosure. Application-injected notice, localised to Swedish where relevant, logged per session. Do not rely on the system prompt.
  • 3. Verify image provenance end to end. Confirm C2PA credentials from Azure OpenAI survive your resizing, storage and CDN pipeline. Fix the steps that strip them.
  • 4. Stand up text marking. One shared provenance library or APIM policy, signed via Key Vault, applied to every generated deliverable. Summaries and rewrites are in scope; captions and alt-text are not.
  • 5. Gate public-interest text. Either a named human editor takes responsibility, recorded in the CMS, or the published text carries a visible AI label.
  • 6. Label deepfakes. If you produce synthetic media of real people, places or events, build the visible disclosure into the publishing flow and read the narrow exceptions before assuming they cover you.
  • 7. Decide your Code of Practice position. Adhere, or document your equivalently adequate alternative. Not deciding is the worst option, because the burden of proof then lands on you unprepared.
  • 8. Skip the backfill. Content generated before 2 August 2026 needs no retroactive marking. Spend the saved effort on the pipeline going forward.

None of the individual patterns above is hard. What makes Article 50 dangerous is portfolio breadth: every chat UI and generator in the organisation is in scope at once, and the deadline is days away. Classify this week, ship disclosure first, and let the marking pipeline mature during the transition window.

Sources