Skip to content
Status Codes
.md

Status Codes

There are two distinct kinds of “status” in the Intuizi API. Do not confuse them.

1. HTTP / envelope code

The transport-level result of the request. This is the HTTP status code, and it is mirrored in the code field of the envelope.

CodeMeaning
200Success.
201Created - a resource create succeeded.
401Unauthenticated - missing/invalid/expired token.
404Not found - the id does not exist for your account.
406Not Acceptable - you did not send Accept: application/json.
409Conflict - an Idempotency-Key was reused with a different body.
422Validation error - see the errors object.
429Too Many Requests - rate limit exceeded; wait Retry-After seconds.

2. Business lifecycle status

Audiences and activations are processed asynchronously. A read of one of those resources includes a lifecycle status inside data that is separate from the HTTP code. A 200 OK simply means “we successfully told you the current state”; the lifecycle status tells you whether the underlying job has finished.

Status idNameWhen polling
100InitiatingKeep polling
101ProcessingKeep polling
102AnalyzingKeep polling
103Decryption RequestedKeep polling
104CompletedStop - the only success
105DataStreamingKeep polling - it comes before 104
106ExpiredStop - final
107Additional InfoStop - the build stopped and will not continue
108ModelingKeep polling
109Visualizing data streamsKeep polling
4xxError statesStop - failed
A 200 OK on an audience read does not mean the audience is ready. Check the lifecycle status id in data - keep polling until it reaches 104 (Completed) before acting on the result. The same applies to activations, which also finish at 104 (Completed). Note the ids are not sequential: 105 (DataStreaming) happens before 104 - it is the delivery step, added later with the next free id. At 105 the results are still being delivered, a Lookalike Model in 108 (Modeling) is still training, and an audience in 109 (Visualizing data streams) is still drawing the data stream visualizations it opted into, before 105 and 104 - keep polling through all three. 107 (Additional Info) is not one of them: it is a stop that never changes and is not resumed, and 106 (Expired) and the 4xx error states are final too.

104 Completed is the only success. A build that stops at 107 Additional Info or at a 4xx error state has failed and does not change again: stop polling, fix the cause, and create it again. Both send the audience.failed or activation.failed webhook. At 107 the worker stopped the build and said why, and Audience Manager shows the reason. A resource at 106 Expired has aged out and does not change again either.

A Lookalike Model you cancel reads 108 Modeling until the run reaches its next checkpoint and stops, then ends at 400 Error, which Audience Manager shows as Cancelled on request. A cancel that arrives once the result is already being published is ignored, and the run completes at 104.

The full create-then-poll flow is described in The Async Model.

3. Cohort status scale (1-5)

Cohorts do not use the 1xx audience/activation lifecycle - they run on their own small scale. Poll GET /api/v2/analyses/cohorts/{id} until it reaches 4 Completed before using the cohort in an audience.

StatusNameMeaning
1UploadingThe cohort row exists; the import has not been queued yet.
2InitiatingThe import is queued for processing.
3ProcessingThe file is being imported and matched.
4CompletedThe cohort is ready to use in an audience.
5Not AvailableThe import failed. The cohort cannot be used in an audience.

4 and 5 are final, so stop polling at either. A cohort that failed before failures were reported as 5 can still read the error code it failed with, which the API names Unknown. Treat that as a failed import too. What to do after a failed import depends on the source:

  • file_uri: fix the file, then create the cohort again.
  • upload_reference: the failed create used the reference up, so upload the file again for a new reference.
  • audience_id with a regular audience: the failed cohort still counts as the audience’s one cohort, so delete it before creating from that audience again. A Lookalike Model audience needs no delete.

4. POI submission status

POI submissions carry their own small status on the submission read, separate from both scales above. In the order a submission goes through them:

StatusNameMeaning
4ImportingJust created. Intuizi is reading the locations.
1WaitingThe locations have been read, and the submission waits for Intuizi to review it. The only status in which it can be deleted.
2ImportedIntuizi approved it, and its locations are now in your POI data.
3DisabledIntuizi declined it.

A submission moves from Importing to Waiting on its own. The move from Waiting to Imported or Disabled is a review done by hand, not a processing step, so do not script a wait for it. See My POI Data - Submissions for the read shape.