SendGrid · Arazzo Workflow

SendGrid Upsert Contacts and Confirm

Version 1.0.0

Upsert contacts asynchronously and branch on whether they can be confirmed yet.

1 workflow 1 source API 1 provider
View Spec View on GitHub EmailEmail APIMarketing EmailSMTPT1Transactional EmailEmail MarketingDeliverabilityMarketingArazzoWorkflows

Provider

sendgrid

Workflows

upsert-contacts-and-confirm
Upsert a batch of contacts then confirm them by identifier.
Performs an asynchronous contact upsert and attempts an immediate confirmation by email identifiers, branching on the lookup result.
2 steps inputs: apiKey, contacts, identifiers outputs: jobId, result
1
upsertContacts
Upsert the supplied contacts. The request is queued and returns a 202 with a job_id that can be used to check import status.
2
confirmContacts
Attempt to confirm the upserted contacts by their email identifiers. Branches on whether the contacts were found.

Source API Descriptions

Arazzo Workflow Specification

Raw ↑
arazzo: 1.0.1
info:
  title: SendGrid Upsert Contacts and Confirm
  summary: Upsert contacts asynchronously and branch on whether they can be confirmed yet.
  description: >-
    SendGrid's contact upsert endpoint is asynchronous, so a successful call
    returns a 202 with a job_id rather than the finished contact records. This
    workflow upserts a batch of contacts and then immediately attempts to
    confirm them with the Get Contacts by Identifiers endpoint, branching on
    whether the contacts have already been processed (200) or were not yet found
    so the caller can decide to poll again later. Each step inlines its request,
    including the bearer token, so the flow is self-describing.
  version: 1.0.0
  x-realizes-capability-ids:
  - BC-420.10
  x-capability-derivation:
    method: 'deterministic join: sourceDescriptions -> per-tag OpenAPI -> tag/capability edge. No classification at this step.'
    min_confidence: 0.7
    sources:
    - capability_id: BC-420.10
      capability_name: Customer Data Management
      spec: sendgrid-contacts-api-openapi.yml
      confidence: 0.72
    model: Turbo EA Capabilities by Vincent Verdet — Turbo EA, https://github.com/vincentmakes/turbo-ea-capabilities, CC BY 4.0
sourceDescriptions:
- name: contactsApi
  url: ../openapi/sendgrid-contacts-api-openapi.yml
  type: openapi
workflows:
- workflowId: upsert-contacts-and-confirm
  summary: Upsert a batch of contacts then confirm them by identifier.
  description: >-
    Performs an asynchronous contact upsert and attempts an immediate
    confirmation by email identifiers, branching on the lookup result.
  inputs:
    type: object
    required:
    - apiKey
    - contacts
    - identifiers
    properties:
      apiKey:
        type: string
        description: SendGrid API key sent as a bearer token.
      contacts:
        type: array
        description: Array of contact objects to upsert.
        items:
          type: object
      identifiers:
        type: array
        description: Email identifier values to confirm after the upsert.
        items:
          type: string
  steps:
  - stepId: upsertContacts
    description: >-
      Upsert the supplied contacts. The request is queued and returns a 202
      with a job_id that can be used to check import status.
    operationId: UpdateContact
    parameters:
    - name: Authorization
      in: header
      value: "Bearer $inputs.apiKey"
    requestBody:
      contentType: application/json
      payload:
        contacts: $inputs.contacts
    successCriteria:
    - condition: $statusCode == 202
    outputs:
      jobId: $response.body#/job_id
  - stepId: confirmContacts
    description: >-
      Attempt to confirm the upserted contacts by their email identifiers.
      Branches on whether the contacts were found.
    operationId: GetContactByIdentifiers
    parameters:
    - name: Authorization
      in: header
      value: "Bearer $inputs.apiKey"
    requestBody:
      contentType: application/json
      payload:
        identifiers: $inputs.identifiers
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      result: $response.body#/result
    onSuccess:
    - name: confirmed
      type: end
      criteria:
      - condition: $statusCode == 200
  outputs:
    jobId: $steps.upsertContacts.outputs.jobId
    result: $steps.confirmContacts.outputs.result

Work with this as data

Every workflow here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for arazzo workflows

4 MCP tools reach this
  • find_arazzoBrowse and filter every workflow in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This workflow
curl "https://apis.io/api/v1/arazzo/sendgrid-upsert-contacts-confirm-workflow"
All arazzo workflows
curl "https://apis.io/api/v1/arazzo?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.