Senior API Integrator (Azure + Power BI)

Please login or register as jobseeker to apply for this job.

TYPE OF WORK

Gig

SALARY

$18–$35/hr

HOURS PER WEEK

20

DATE UPDATED

Oct 28, 2025

JOB OVERVIEW

Employment Type: Contract / Project-Based (Remote)
Experience Level: Senior (3+ years API integrations; Azure + Power BI)
Salary/Rate: $18–$35/hour (contract)
Hours Required: Flexible; 2–4 hours/day overlap with America/Chicago
Shift: Flexible (with overlap)

Job Description:
Build reliable, refreshable integrations from business apps into Azure (Blob/SQL/Lake) and surface data in Power BI. You will implement secure auth, pagination, incremental loads, logging/alerts, and provide concise documentation and handoff.

Tools/Tech: Azure Logic Apps, Azure Functions, Azure Data Factory, Azure SQL/Blob/Lake, Power BI (datasets/dataflows), Python and/or PowerShell, Azure AD App Registrations, Key Vault, App Insights/Log Analytics.

Target Platforms (initial wave):
Neos, Filevine, QuickBooks, RingCentral, Sakari, Case Status, Meta/Facebook/Instagram, YouTube, TikTok, Mailchimp, Sprout Social, Microsoft 365, Google Analytics, ActivTrak, Clockify, CallRail. (Phased delivery.)

Responsibilities:

Map APIs (auth/scopes, pagination, rate limits, webhooks); confirm field coverage.

Implement connectors (Logic Apps/Functions/ADF) landing raw + curated layers in Azure.

Design incremental, idempotent loads with retries/backoff and basic DQ checks.

Wire Power BI with scheduled refresh; implement logging/alerts.

Provide a short runbook, env/Key Vault map, and test to prod steps.

Qualifications:

3+ yrs production REST integrations (OAuth2/token refresh, JSON, pagination, webhooks).

Strong Azure (Logic Apps or Functions; ADF; App Registrations; Key Vault; App Insights/Log Analytics).

Azure SQL/Blob/Lake; ELT/ETL patterns; Power BI connectivity.

Python and/or PowerShell; clear written English and documentation.

Nice to Have:
Experience with any listed platforms; BI modeling basics; CI/CD (Bicep/Terraform/GitHub Actions).

How to Apply (single message):

“API Integrator – [Name] – [$Rate/hr USD] – [Hours/week]”

2–3 production integrations (stack, auth, error handling, refresh cadence)

Azure + Power BI example (scheduling/monitoring)

20–30 lines showing pagination + retry/backoff (Python or PowerShell)

Availability vs America/Chicago

SKILL REQUIREMENT
VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0021
Controller Execution Time ( Jobseekers / Job )  0.0160
Total Execution Time  0.0189
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,502,848 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/Senior-API-Integrator-Azure-Power-BI-1501162
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.0091 seconds)  (Hide)
0.0017   SELECT *
                                
FROM exrates
                                WHERE rate_name 
'USD-PHP' 
0.0003   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1501162
 LIMIT 1 
0.0006   SELECT *
FROM `employers`
WHERE `employer_id` = 766387
 LIMIT 1 
0.0009   SELECT COUNT(*) AS `numrows`
FROM `t_thread` `t`
LEFT JOIN `t_thread_misc` `miscON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1501162
AND `misc`.`idIS NULL 
0.0004   SELECT e.business_namee.logoe.websitee.rebill_datee.date_added member_datehitsDATEDIFF('2026-04-17',ej.date_added) duration_daysDATEDIFF('2026-04-17',e.rebill_date) duration_rebillej.*, e.deactivate FROM employers eemployer_jobs ej WHERE e.employer_id ej.employer_id AND
                                   ((
e.user_level >= '500' AND ej.date_added <= e.rebill_date)
                                   OR 
e.employer_id '' OR (ej.date_approved <> '2000-01-01' and DATEDIFF('2026-04-17',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != AND ej.deleted AND job_id '1501162' 
0.0003   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1501162 
0.0012   UPDATE employer_jobs SET hit_counts '***Oct-28-2025=81***Oct-29-2025=45***Oct-30-2025=21***Oct-31-2025=20***Nov-01-2025=17***Nov-02-2025=17***Nov-03-2025=24***Nov-04-2025=7***Nov-05-2025=8***Nov-06-2025=5***Nov-07-2025=7***Nov-08-2025=8***Nov-09-2025=7***Nov-10-2025=7***Nov-11-2025=7***Nov-12-2025=6***Nov-13-2025=3***Nov-14-2025=5***Nov-15-2025=4***Nov-16-2025=7***Nov-17-2025=1***Nov-18-2025=3***Nov-20-2025=2***Nov-25-2025=1***Nov-27-2025=1***Nov-28-2025=1***Nov-30-2025=1***Dec-03-2025=1***Dec-04-2025=1***Dec-05-2025=2***Dec-13-2025=2***Dec-14-2025=1***Dec-15-2025=1***Dec-22-2025=1***Dec-23-2025=2***Dec-25-2025=1***Dec-26-2025=2***Dec-28-2025=1***Jan-01-2026=2***Jan-05-2026=1***Jan-09-2026=1***Jan-17-2026=1***Jan-18-2026=1***Jan-19-2026=1***Jan-21-2026=1***Jan-22-2026=1***Jan-23-2026=2***Jan-27-2026=1***Jan-28-2026=1***Jan-29-2026=1***Jan-30-2026=2***Feb-07-2026=3***Feb-12-2026=1***Feb-17-2026=1***Feb-18-2026=1***Feb-19-2026=1***Feb-24-2026=1***Feb-25-2026=1***Mar-12-2026=1***Mar-13-2026=3***Mar-17-2026=1***Mar-18-2026=1***Mar-21-2026=2***Mar-23-2026=1***Mar-25-2026=3***Mar-26-2026=7***Mar-28-2026=1***Mar-30-2026=1***Apr-06-2026=1***Apr-07-2026=2***Apr-17-2026=1' WHERE job_id'1501162'  
0.0007   UPDATE employer_jobs SET monthly_hits '***Oct-2025=167***Nov-2025=149***Dec-2025=15***Jan-2026=16***Feb-2026=9***Mar-2026=21***Apr-2026=4' WHERE job_id'1501162'  
0.0009   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id '' AND job_id '1501162' AND status LIKE 'sent%' ORDER BY id DESC  
0.0003   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1501162 
0.0004   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '766387'
AND `date_added` >= '2022-06-08' 
0.0012   select from teasers 
0.0002   SELECT FROM skill_categories WHERE skill_cat_id='' 
  HTTP HEADERS  (Show)
  SESSION DATA  (Show)
  CONFIG VARIABLES  (Show)